PersistentSignalService.test.ts
1 import { beforeEach, describe, expect, test } from 'vitest'; 2 import { Application, MemoryKeyValueStore, ObjectStore, PersistentSignalService } from '../../src'; 3 import { IKeyValueStoreSymbol, IObjectStoreSymbol, IPersistentSignalService, IPersistentSignalServiceSymbol } from 'ipmc-interfaces'; 4 5 describe('PersistentSignalService', () => { 6 let app: Application; 7 8 beforeEach(() => { 9 app = new Application(); 10 app.register(MemoryKeyValueStore, IKeyValueStoreSymbol); 11 app.register(ObjectStore, IObjectStoreSymbol); 12 app.register(PersistentSignalService, IPersistentSignalServiceSymbol); 13 }); 14 15 test('Values remain the same with same key', () => { 16 const service = app.getService<IPersistentSignalService>(IPersistentSignalServiceSymbol)!; 17 18 const name = 'test'; 19 const signal1 = service.get(name, 'default'); 20 const signal2 = service.get(name, 'default2'); 21 22 expect(signal1.peek()).toEqual(signal2.peek()); 23 expect(signal1.peek()).toEqual('default'); 24 }); 25 26 test('Signals retrieved with the same name have the same value', () => { 27 const service = app.getService<IPersistentSignalService>(IPersistentSignalServiceSymbol)!; 28 29 const name = 'test'; 30 const signal1 = service.get(name, 'default'); 31 const signal2 = service.get(name, 'default2'); 32 33 expect(signal1.peek()).toEqual(signal2.peek()); 34 35 signal1.value = 'new test'; 36 37 expect(signal1.peek()).toEqual(signal2.peek()); 38 expect(signal1.peek()).toEqual('new test'); 39 }); 40 });