UNPKG

component-dbs-core

Version:

DTO objects shared among device backend

117 lines 5.23 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 dynamodb_1 = require("aws-sdk/clients/dynamodb"); const uuid_1 = require("uuid"); const siteDb_1 = require("./siteDb"); describe('site db test suite', () => { let documentClient; let sites = []; const total = 100; let siteDb; const entityUuid = uuid_1.v4(); beforeAll(() => __awaiter(void 0, void 0, void 0, function* () { documentClient = new dynamodb_1.DocumentClient({ endpoint: 'localhost:8001', sslEnabled: false, region: 'local-env', }); siteDb = new siteDb_1.SiteDb('Sites', documentClient, 'Devices', 'siteUuidGsi'); const siteProms = []; const allSites = []; for (let i = 0; i < total; i++) { const site = { name: uuid_1.v4(), address: uuid_1.v4(), state: uuid_1.v4(), }; allSites.push(site); siteProms.push(siteDb.createSite(entityUuid, site)); } const siteIds = yield Promise.all(siteProms); const deviceProms = siteIds.map((sId, i) => { allSites[i].id = sId; return documentClient .put({ TableName: 'Devices', Item: { id: uuid_1.v4(), model: 'm', serial: 's', siteUuid: sId, name: 'n', type: "core" /* core */, }, }) .promise(); }); sites = allSites; yield Promise.all(deviceProms); })); it('should be able to query sites', () => __awaiter(void 0, void 0, void 0, function* () { const { sites, nextToken } = yield siteDb.getSites(entityUuid, 10); expect(sites.length).toBe(10); expect(nextToken).not.toBeUndefined(); sites.forEach((site) => { expect(site.devices.length).toBe(1); }); })); it('should be able to response less than limit if scanning the end of the table', () => __awaiter(void 0, void 0, void 0, function* () { const { sites, nextToken } = yield siteDb.getSites(entityUuid, 101); expect(sites.length).toBe(100); expect(nextToken).toBeUndefined(); sites.forEach((site) => { expect(site.devices.length).toBe(1); }); })); it('should be able to query sites with pagination', () => __awaiter(void 0, void 0, void 0, function* () { let siteConnection = yield siteDb.getSites(entityUuid, 10); expect(siteConnection.sites.length).toBe(10); expect(siteConnection.nextToken).not.toBeNull(); siteConnection = yield siteDb.getSites(entityUuid, 15, siteConnection.nextToken); expect(siteConnection.sites.length).toBe(15); })); it('should be able to create site without address and state', () => __awaiter(void 0, void 0, void 0, function* () { const eUuid = uuid_1.v4(); const site = { name: 'n' }; yield siteDb.createSite(eUuid, site); const { sites } = yield siteDb.getSites(eUuid, 10); expect(sites.length).toBe(1); expect(sites[0].name).toEqual(site.name); expect(sites[0].devices).toEqual([]); })); it('should be able to query single site', () => __awaiter(void 0, void 0, void 0, function* () { const site = yield siteDb.getSite(entityUuid, sites[0].id); expect(site.devices.length).toBe(1); expect(site.devices[0].name).toBe('n'); expect(site.devices[0].model).toBe('m'); expect(site.devices[0].serial).toBe('s'); })); it('should throw error if site id not found', () => __awaiter(void 0, void 0, void 0, function* () { yield expect(siteDb.getSite('unknown', 'unkown')).rejects.toThrowError(Error); })); it('should be able to create site', () => __awaiter(void 0, void 0, void 0, function* () { const entityUuid = uuid_1.v4(); const input = { name: uuid_1.v4(), state: uuid_1.v4(), address: uuid_1.v4(), }; const id = yield siteDb.createSite(entityUuid, input); expect(id).not.toBeNull(); const site = yield siteDb.getSite(entityUuid, id); expect(site.id).toBe(id); expect(site.name).toBe(input.name); expect(site.state).toBe(input.state); expect(site.address).toBe(input.address); })); }); //# sourceMappingURL=siteDb.spec.js.map