Merge branch 'fix-tests'
This commit is contained in:
commit
59d4856904
@ -33,7 +33,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ernane/svelte-star-rating": "^1.1.2",
|
"@ernane/svelte-star-rating": "^1.1.2",
|
||||||
"@sveltejs/vite-plugin-svelte": "^2.0.2",
|
"@sveltejs/vite-plugin-svelte": "^2.0.2",
|
||||||
"@yanick/updeep-remeda": "^2.0.0",
|
"@yanick/updeep-remeda": "^2.1.0",
|
||||||
"beercss": "^3.0.4",
|
"beercss": "^3.0.4",
|
||||||
"dexie": "^3.2.2",
|
"dexie": "^3.2.2",
|
||||||
"events": "^3.3.0",
|
"events": "^3.3.0",
|
||||||
|
@ -1,15 +1,18 @@
|
|||||||
import PouchDB from 'pouchdb-browser';
|
import PouchDB from 'pouchdb';
|
||||||
import * as R from 'remeda';
|
import * as R from 'remeda';
|
||||||
import Dexie, { liveQuery } from 'dexie';
|
import Dexie, { liveQuery } from 'dexie';
|
||||||
import { writable, derived, get } from 'svelte/store';
|
import { writable, derived, get } from 'svelte/store';
|
||||||
import { genNextBattle } from './genNextBattle.js';
|
import { genNextBattle } from './genNextBattle.js';
|
||||||
import u from '@yanick/updeep-remeda';
|
import u from '@yanick/updeep-remeda';
|
||||||
|
import pouchMem from 'pouchdb-adapter-memory';
|
||||||
|
|
||||||
const seedCampaign = {
|
const seedCampaign = {
|
||||||
battles: [],
|
battles: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
export function genApi(options = {}) {
|
export function genApi(options = {}) {
|
||||||
|
if (options.local) PouchDB.plugin(pouchMem);
|
||||||
|
|
||||||
const pouchdb = new PouchDB(
|
const pouchdb = new PouchDB(
|
||||||
'Campaigns',
|
'Campaigns',
|
||||||
options.local
|
options.local
|
||||||
@ -30,16 +33,14 @@ export function genApi(options = {}) {
|
|||||||
pouchdb
|
pouchdb
|
||||||
.changes({ since: 'now', live: true, include_docs: true })
|
.changes({ since: 'now', live: true, include_docs: true })
|
||||||
.on('change', (change) => {
|
.on('change', (change) => {
|
||||||
console.log({ change });
|
|
||||||
if (change.deleted) {
|
if (change.deleted) {
|
||||||
campaignsCore.update(u.skip(change.id));
|
campaignsCore.update(u.updateIn(change.id, u.skip));
|
||||||
} else {
|
} else {
|
||||||
campaignsCore.update(u.updateIn(change.id, change.doc));
|
campaignsCore.update(u.updateIn(change.id, change.doc));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const campaigns = derived(campaignsCore, Object.values);
|
const campaigns = derived(campaignsCore, Object.values);
|
||||||
campaigns.subscribe((c) => console.log(c));
|
|
||||||
|
|
||||||
const addCampaign = (name) =>
|
const addCampaign = (name) =>
|
||||||
pouchdb.post({
|
pouchdb.post({
|
||||||
@ -86,10 +87,14 @@ export function genApi(options = {}) {
|
|||||||
pouchdb.put(campaign).catch((e) => console.error(e));
|
pouchdb.put(campaign).catch((e) => console.error(e));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const deleteCampaign = (_id) =>
|
||||||
|
pouchdb.remove(get(campaigns).find(u.matches({ _id })));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
campaigns,
|
campaigns,
|
||||||
activeCampaign,
|
activeCampaign,
|
||||||
event: {
|
event: {
|
||||||
|
deleteCampaign,
|
||||||
addCampaign,
|
addCampaign,
|
||||||
setActiveCampaign,
|
setActiveCampaign,
|
||||||
setBattleVerdict,
|
setBattleVerdict,
|
||||||
|
@ -1,28 +1,33 @@
|
|||||||
import { test, expect } from 'vitest';
|
import { test, expect } from 'vitest';
|
||||||
//import { indexedDB, IDBKeyRange } from 'fake-indexeddb';
|
import { get } from 'svelte/store';
|
||||||
import 'fake-indexeddb/auto';
|
|
||||||
|
|
||||||
import { genApi } from './api.js';
|
import { genApi } from './api.js';
|
||||||
|
|
||||||
const get = async (store) => new Promise((resolve) => store.subscribe(resolve));
|
const waitUntil = (store, condition) => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
store.subscribe((v) => condition(v) && resolve(v));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
test('create and add and remove campaigns', async () => {
|
test('create and add and remove campaigns', async () => {
|
||||||
const api = genApi(); //{ dexie: { indexedDB, IDBKeyRange } });
|
const api = genApi({ local: true });
|
||||||
|
|
||||||
|
let result = waitUntil(api.campaigns, (r) => r.length === 2);
|
||||||
|
|
||||||
api.event.addCampaign('C1');
|
api.event.addCampaign('C1');
|
||||||
api.event.addCampaign('C2');
|
api.event.addCampaign('C2');
|
||||||
|
|
||||||
let result = await get(api.campaigns);
|
await result;
|
||||||
|
|
||||||
expect(result).toHaveLength(2);
|
const [c] = get(api.campaigns);
|
||||||
expect(result[0]).toEqual({
|
|
||||||
id: 1,
|
expect(c).toMatchObject({
|
||||||
name: 'C1',
|
name: 'C1',
|
||||||
});
|
});
|
||||||
|
|
||||||
api.event.deleteCampaign(1);
|
const r = waitUntil(api.campaigns, (r) => r.length === 1);
|
||||||
|
|
||||||
result = await get(api.campaigns);
|
api.event.deleteCampaign(c._id);
|
||||||
|
|
||||||
expect(result).toHaveLength(1);
|
await expect(r).resolves.toBeTruthy();
|
||||||
});
|
});
|
||||||
|
@ -5,5 +5,5 @@ import { genNextBattle } from './genNextBattle.js';
|
|||||||
test('generate for the first chapter', () => {
|
test('generate for the first chapter', () => {
|
||||||
const next = genNextBattle();
|
const next = genNextBattle();
|
||||||
expect(next).toHaveProperty('city');
|
expect(next).toHaveProperty('city');
|
||||||
expect(next).toHaveProperty('status', 'upcoming');
|
expect(next).toHaveProperty('status', 'ongoing');
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user