UNPKG

cloudrx

Version:

TypeScript library for streaming cloud provider events using RxJS with automatic persistence and replay capabilities

93 lines 3.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const rxjs_1 = require("rxjs"); const local_1 = require("../providers/aws/dynamodb/local"); const _providers_1 = require("@providers"); const setup_1 = require("../setup"); const _subjects_1 = require("@subjects"); describe('subjects', () => { const seed = async (provider$) => { const provider = await (0, rxjs_1.firstValueFrom)(provider$); const data = [ { message: 'data-1', timestamp: performance.now() }, { message: 'data-2', timestamp: performance.now() }, { message: 'data-3', timestamp: performance.now() }, ]; const items = await Promise.all(data.map((item) => (0, rxjs_1.firstValueFrom)(provider.store(item)))); console.log('Seeded data:', items); return items; }; describe('memory', () => { let seedData; beforeAll(async () => { }); beforeEach(async () => { seedData = await seed(_providers_1.Memory.from((0, setup_1.testId)())); }); afterEach(() => { }); afterAll(async () => { }); test('cloud-subject', async () => { const subject = new _subjects_1.CloudSubject(_providers_1.Memory.from((0, setup_1.testId)())); const data = await new Promise((resolve) => { const incoming = []; subject.subscribe({ next: (data) => { console.log('Received data:', data); incoming.push(data); if (incoming.length === seedData.length) { subject.complete(); } }, complete: () => { resolve(incoming); }, }); }); expect(data.length).toBe(seedData.length); seedData.forEach((item) => { expect(data).toContainEqual(item); }); }); }); describe('dynamodb', () => { let container; let options = {}; let seedData; beforeAll(async () => { container = new local_1.DynamoDBLocalContainer(console); await container.start(); options.client = container.getClient(); }); beforeEach(async () => { seedData = await seed(_providers_1.DynamoDB.from((0, setup_1.testId)(), options)); }); afterEach(() => { }); afterAll(async () => { if (container) { await container.stop(); } }); test('cloud-subject', async () => { const subject = new _subjects_1.CloudSubject(_providers_1.DynamoDB.from((0, setup_1.testId)(), options)); const data = await new Promise((resolve) => { const incoming = []; subject.subscribe({ next: (data) => { console.log('Received data:', data); incoming.push(data); if (incoming.length === seedData.length) { subject.complete(); } }, complete: () => { resolve(incoming); }, }); }); expect(data.length).toBe(seedData.length); seedData.forEach((item) => { expect(data).toContainEqual(item); }); }); }); }); //# sourceMappingURL=cloud.test.js.map