under-falling-skies/src/lib/store/api.test.js

38 lines
796 B
JavaScript
Raw Normal View History

2023-01-12 19:20:54 +00:00
import { test, expect } from 'vitest';
2023-01-13 22:27:08 +00:00
import { get } from 'svelte/store';
2023-01-12 19:20:54 +00:00
import { genApi } from './api.js';
2023-01-14 18:42:43 +00:00
import adapter from 'pouchdb-adapter-memory';
2023-01-12 19:20:54 +00:00
2023-01-13 22:27:08 +00:00
const waitUntil = (store, condition) => {
return new Promise((resolve) => {
store.subscribe((v) => condition(v) && resolve(v));
});
};
2023-01-12 19:20:54 +00:00
test('create and add and remove campaigns', async () => {
2023-01-14 18:42:43 +00:00
const api = genApi({
local: true,
pouch: (p) => p.plugin(adapter),
});
2023-01-12 19:20:54 +00:00
2023-01-13 22:27:08 +00:00
let result = waitUntil(api.campaigns, (r) => r.length === 2);
2023-01-12 19:20:54 +00:00
2023-01-13 22:27:08 +00:00
api.event.addCampaign('C1');
api.event.addCampaign('C2');
2023-01-12 19:20:54 +00:00
2023-01-13 22:27:08 +00:00
await result;
2023-01-12 19:20:54 +00:00
2023-01-13 22:27:08 +00:00
const [c] = get(api.campaigns);
2023-01-12 19:20:54 +00:00
2023-01-13 22:27:08 +00:00
expect(c).toMatchObject({
name: 'C1',
});
2023-01-12 19:20:54 +00:00
2023-01-13 22:27:08 +00:00
const r = waitUntil(api.campaigns, (r) => r.length === 1);
api.event.deleteCampaign(c._id);
await expect(r).resolves.toBeTruthy();
2023-01-12 19:20:54 +00:00
});