import { DyNTS_ServerStatusSnapshot_DataService } from './server-status-snapshot.data-service'; import { DyFM_ServerStatus, DyFM_DataModel_Params } from '@futdevpro/fsm-dynamo'; import { DyNTS_GlobalService } from '../../../_services/core/global.service'; import { DyNTS_DBService } from '../../../_services/base/db.service'; class TestServerStatus extends DyFM_ServerStatus { testProperty?: string; } const testDataParams = new DyFM_DataModel_Params({ dataName: 'test_server_status', properties: {}, }); describe('| DyNTS_ServerStatusSnapshot_DataService', () => { let service: DyNTS_ServerStatusSnapshot_DataService; let mockDBService: jasmine.SpyObj>; beforeEach(() => { mockDBService = jasmine.createSpyObj('DyNTS_DBService', [ 'getAll', 'getDataById', 'createData', 'modifyData', ]); spyOn(DyNTS_GlobalService, 'getDBService').and.returnValue(mockDBService); const testData = new TestServerStatus({ status: 'ready', systemName: 'test-system', }); service = new DyNTS_ServerStatusSnapshot_DataService( testData, testDataParams, 'test-issuer' ); }); it('| should create service instance', () => { expect(service).toBeDefined(); expect(service.data).toBeDefined(); }); describe('| saveSnapshot', () => { it('| should save snapshot', async () => { const snapshot = new TestServerStatus({ status: 'ready', systemName: 'test-system', uptime: 1000, }); const savedSnapshot = { ...snapshot, _id: 'snapshot-id' }; spyOn(service, 'saveData').and.returnValue(Promise.resolve(savedSnapshot)); const result = await service.saveSnapshot(snapshot, 'test-issuer'); expect(result).toBe(savedSnapshot); expect(service.issuer).toBe('test-issuer'); expect(service.saveData).toHaveBeenCalledWith(snapshot); }); it('| should throw error when save fails', async () => { const snapshot = new TestServerStatus({ status: 'ready', systemName: 'test-system', }); spyOn(service, 'saveData').and.returnValue(Promise.reject(new Error('Save failed'))); await expectAsync( service.saveSnapshot(snapshot, 'test-issuer') ).toBeRejected(); }); }); });