component-dbs-core
Version:
DTO objects shared among device backend
111 lines • 6.39 kB
JavaScript
;
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