Skip to content

Commit 1515032

Browse files
Add persistence tests
1 parent e4752ce commit 1515032

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

skipruntime-ts/tests/src/tests.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import type {
1919
Nullable,
2020
Reducer,
2121
ChangeManager,
22+
Store,
2223
} from "@skipruntime/core";
2324
import { LoadStatus } from "@skipruntime/core";
2425
import { Count, Sum } from "@skipruntime/helpers";
@@ -1221,6 +1222,40 @@ class WithChanges implements ChangeManager {
12211222
}
12221223
}
12231224

1225+
export class MockStore implements Store<string, number> {
1226+
constructor(private data: Map<string, number[]>) {}
1227+
1228+
load(): Promise<Entry<string, number>[]> {
1229+
return Promise.resolve(Array.from(this.data.entries()));
1230+
}
1231+
1232+
save(data: Entry<string, number>[]): Promise<void> {
1233+
if (data.filter((entry) => entry[0] === "error").length > 0) {
1234+
return Promise.reject(new Error("Something goes wrong."));
1235+
}
1236+
data.forEach((item) => this.data.set(item[0], item[1]));
1237+
return Promise.resolve();
1238+
}
1239+
}
1240+
1241+
function mapWithStoreService(): SkipService<Input_SN, Input_SN> {
1242+
return {
1243+
initialData: {
1244+
input: new MockStore(
1245+
new Map([
1246+
["v1", [3]],
1247+
["v2", [5]],
1248+
]),
1249+
),
1250+
},
1251+
resources: { map1: Map1Resource },
1252+
1253+
createGraph(inputCollections: Input_SN) {
1254+
return inputCollections;
1255+
},
1256+
};
1257+
}
1258+
12241259
export function initTests(
12251260
category: string,
12261261
initService: (service: SkipService) => Promise<ServiceInstance>,
@@ -2227,4 +2262,36 @@ INSERT INTO skip_test (id, x) VALUES (1, 1), (2, 2), (3, 3);`);
22272262
);
22282263
}
22292264
});
2265+
2266+
it("testMapWithStore", async () => {
2267+
const resource = "map1";
2268+
const skipservice = mapWithStoreService();
2269+
const service = await initService(skipservice);
2270+
expect(await service.getAll(resource)).toEqual([
2271+
["v1", [5]],
2272+
["v2", [7]],
2273+
]);
2274+
await service.update("input", [["v3", [10]]]);
2275+
expect(
2276+
await (skipservice.initialData!.input as Store<Json, Json>).load(),
2277+
).toEqual([
2278+
["v1", [3]],
2279+
["v2", [5]],
2280+
["v3", [10]],
2281+
]);
2282+
expect(await service.getArray("map1", "v3")).toEqual([12]);
2283+
try {
2284+
await service.update("input", [
2285+
["error", [-5]],
2286+
["v3", [50]],
2287+
]);
2288+
throw new Error("Error was not thrown");
2289+
} catch (e: unknown) {
2290+
expect(e).toBeA(Error);
2291+
expect((e as Error).message).toMatchRegex(
2292+
new RegExp(/^(?:Error: )?Something goes wrong.$/),
2293+
);
2294+
}
2295+
await service.close();
2296+
});
22302297
}

0 commit comments

Comments
 (0)