/ packages / core / tests / Services / PersistentSignalService.test.ts
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  });