initial commit
This commit is contained in:
65
test/dashboardStore.test.js
Normal file
65
test/dashboardStore.test.js
Normal file
@@ -0,0 +1,65 @@
|
||||
"use strict";
|
||||
|
||||
const test = require("node:test");
|
||||
const assert = require("node:assert/strict");
|
||||
const { InMemoryDashboardStore } = require("../src/dashboardStore");
|
||||
|
||||
test("in-memory store persists watch, poll result, events and controls", async () => {
|
||||
const store = new InMemoryDashboardStore();
|
||||
await store.init();
|
||||
|
||||
await store.saveWatch({
|
||||
id: "watch-1",
|
||||
rawInput: "인천->마드리드",
|
||||
searchParams: { segments: [{ from: "ICN", to: "MAD" }] },
|
||||
alertRules: { targetPrice: 1300000, notifyOnPriceChange: true },
|
||||
pollingEnabled: true,
|
||||
alertsEnabled: true,
|
||||
createdAt: "2026-02-19T00:00:00.000Z",
|
||||
updatedAt: "2026-02-19T00:00:00.000Z",
|
||||
lastSnapshot: null,
|
||||
lastError: null,
|
||||
});
|
||||
|
||||
await store.savePollResult("watch-1", {
|
||||
snapshot: {
|
||||
polledAt: "2026-02-19T00:01:00.000Z",
|
||||
bestPrice: 1295000,
|
||||
currency: "KRW",
|
||||
bestOffer: { provider: "mock" },
|
||||
offers: [{ provider: "mock", price: 1295000, currency: "KRW" }],
|
||||
},
|
||||
});
|
||||
|
||||
await store.saveEvent({
|
||||
watchId: "watch-1",
|
||||
eventType: "target_price",
|
||||
observedAt: "2026-02-19T00:01:00.000Z",
|
||||
payload: {
|
||||
currentBestPrice: 1295000,
|
||||
previousBestPrice: 1310000,
|
||||
currency: "KRW",
|
||||
},
|
||||
});
|
||||
|
||||
const watches = await store.listWatches();
|
||||
const events = await store.listEvents(5);
|
||||
|
||||
assert.equal(watches.length, 1);
|
||||
assert.equal(watches[0].lastSnapshot.bestPrice, 1295000);
|
||||
assert.equal(events.length, 1);
|
||||
assert.equal(events[0].eventType, "target_price");
|
||||
|
||||
const controlsBefore = await store.getGlobalControls();
|
||||
assert.equal(controlsBefore.crawlingEnabled, true);
|
||||
assert.equal(controlsBefore.alertsEnabled, true);
|
||||
|
||||
await store.setGlobalControls({
|
||||
crawlingEnabled: false,
|
||||
alertsEnabled: false,
|
||||
});
|
||||
|
||||
const controlsAfter = await store.getGlobalControls();
|
||||
assert.equal(controlsAfter.crawlingEnabled, false);
|
||||
assert.equal(controlsAfter.alertsEnabled, false);
|
||||
});
|
||||
Reference in New Issue
Block a user