UNPKG

component-dbs-core

Version:

DTO objects shared among device backend

111 lines 6.39 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const ts_mockito_1 = require("ts-mockito"); const common_services_1 = require("../common_services"); const depositDb_1 = require("./depositDb"); const devices_1 = require("../devices"); const appsync_1 = require("../common_services/appsync"); const depositService_1 = require("./depositService"); const dynamodb_1 = require("../common_services/dynamodb"); const appsyncUtils_1 = require("../common_services/appsync/appsyncUtils"); describe('DepositService test suite', () => { let depositService; const mockEnvService = ts_mockito_1.mock(common_services_1.EnvironmentService); const mockDynamodbService = ts_mockito_1.mock(dynamodb_1.DynamodbService); const mockDepositDb = ts_mockito_1.mock(depositDb_1.DepositDb); const mockDeviceVerify = ts_mockito_1.mock(devices_1.DeviceVerification); const mockDeviceService = ts_mockito_1.mock(devices_1.DeviceService); const mockAppSyncClient = ts_mockito_1.mock(appsync_1.AppSyncClient); beforeEach(() => { const mAppsyncClient = ts_mockito_1.instance(mockAppSyncClient); mAppsyncClient.utils = new appsyncUtils_1.AppSyncUtils(); depositService = new depositService_1.DepositService(ts_mockito_1.instance(mockDynamodbService), ts_mockito_1.instance(mockEnvService), ts_mockito_1.instance(mockDeviceService), ts_mockito_1.instance(mockDeviceVerify), mAppsyncClient); depositService.depositDb = ts_mockito_1.instance(mockDepositDb); }); it('should return empty array if not found any deposit', () => __awaiter(void 0, void 0, void 0, function* () { ts_mockito_1.when(mockDepositDb.getDeposits).thenReturn(() => Promise.resolve({ Items: [] })); ts_mockito_1.when(mockDeviceService.getEntityUuidByAccessToken).thenReturn(() => Promise.resolve('valid entity uuid')); const deposits = yield depositService.getDeposits({ limit: 10 }, ''); expect(deposits.deposits.length).toBe(0); expect(deposits.nextToken).toBeUndefined(); })); it('should be able to return deposit as an array', () => __awaiter(void 0, void 0, void 0, function* () { ts_mockito_1.when(mockDepositDb.getDeposits).thenReturn(() => Promise.resolve({ Items: [{ depositUuid: '00' }] })); ts_mockito_1.when(mockDeviceService.getEntityUuidByAccessToken).thenReturn(() => Promise.resolve('valid entity uuid')); const deposits = yield depositService.getDeposits({ limit: 10, }, ''); expect(deposits.deposits[0].id).toBe('00'); expect(deposits.nextToken).toBeUndefined(); })); it('should be able to return nextToken if there are more items', () => __awaiter(void 0, void 0, void 0, function* () { ts_mockito_1.when(mockDepositDb.getDeposits).thenReturn(() => Promise.resolve({ Items: [{ depositUuid: '00' }, { depositUuid: '01' }], LastEvaluatedKey: { id: '01' }, })); ts_mockito_1.when(mockDeviceService.getEntityUuidByAccessToken).thenReturn(() => Promise.resolve('valid entity uuid')); const deposits = yield depositService.getDeposits({ limit: 2, }, ''); expect(deposits.deposits.length).toBe(2); expect(deposits.deposits[0].id).toBe('00'); expect(deposits.deposits[1].id).toBe('01'); expect(deposits.nextToken.id).toBe('01'); })); it('should be able to get deposit based on uuid', () => __awaiter(void 0, void 0, void 0, function* () { ts_mockito_1.when(mockDepositDb.getDeposit).thenReturn(() => Promise.resolve({ Items: [{ depositUuid: '00' }], })); const deposit = yield depositService.getDeposit('00'); expect(deposit.id).toBe('00'); })); it('should throw error if deposit uuid not found', () => __awaiter(void 0, void 0, void 0, function* () { ts_mockito_1.when(mockDepositDb.getDeposit).thenReturn(() => Promise.resolve({ Items: [], })); yield expect(depositService.getDeposit('00')).rejects.toThrowError(Error); })); it('should publish deposit update event for new deposit', () => __awaiter(void 0, void 0, void 0, function* () { const event = [ { dynamodb: { ApproximateCreationDateTime: 1594608723, Keys: { id: { S: '65c3140c-b6d0-4675-9e7e-fbc4750910cd', }, type: { S: 'deposit.1234', }, }, NewImage: { id: { S: '123' }, }, }, }, ]; const mutate = jest.fn(); ts_mockito_1.when(mockAppSyncClient.getAppSyncClient()).thenReturn(Promise.resolve({ mutate })); ts_mockito_1.when(mockDeviceService.getDeviceStatus).thenReturn(() => Promise.resolve("ACTIVE" /* ACTIVE */)); yield depositService.onDepositStream(event); expect(mutate).toHaveBeenCalledTimes(1); })); it('should be able to response subscribe request', () => __awaiter(void 0, void 0, void 0, function* () { ts_mockito_1.when(mockDeviceVerify.checkAccessToken).thenReturn(() => Promise.resolve()); yield depositService.onDepositUpdate('access-token'); ts_mockito_1.when(mockDeviceVerify.checkAccessToken).thenReturn(() => Promise.reject(new Error('invalid access token'))); yield expect(depositService.onDepositUpdate('access-token')).rejects.toThrowError(Error); })); }); //# sourceMappingURL=depositService.spec.js.map