component-dbs-core
Version:
DTO objects shared among device backend
117 lines • 5.23 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 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