UNPKG

@joktec/arango

Version:

JokTec - ArangoDB Service

54 lines 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const globals_1 = require("@jest/globals"); const ts_jest_1 = require("@golevelup/ts-jest"); const arangojs_1 = require("../__mocks__/arangojs"); const arango_config_1 = require("../arango.config"); const arango_service_1 = require("../arango.service"); class TestArangoService extends arango_service_1.ArangoService { boot(config) { return this.clientInit(config); } exposeStop(client, conId) { return this.stop(client, conId); } } const attachServices = (service) => { Object.assign(service, { logService: (0, ts_jest_1.createMock)(), configService: (0, ts_jest_1.createMock)(), }); return service; }; (0, globals_1.describe)('ArangoService', () => { let service; (0, globals_1.beforeEach)(async () => { globals_1.jest.clearAllMocks(); arangojs_1.mockDatabaseInstances.length = 0; arangojs_1.mockCollections.length = 0; service = attachServices(new TestArangoService()); await service.boot(new arango_config_1.ArangoConfig({ conId: 'default', url: 'http://localhost:8529' })); }); (0, globals_1.it)('should initialize Database client from config', () => { (0, globals_1.expect)(arangojs_1.mockDatabaseInstances[0].config).toEqual(globals_1.expect.objectContaining({ url: 'http://localhost:8529' })); }); (0, globals_1.it)('should import bulk documents into a collection', async () => { const docs = [ { code: 'article', locale: 'en', value: 1 }, { code: 'comment', locale: 'en', value: 2 }, ]; await service.bulkUpsert('translations', { docs, upsertFields: ['code', 'locale'] }); (0, globals_1.expect)(arangojs_1.mockDatabaseInstances[0].collection).toHaveBeenCalledWith('translations'); (0, globals_1.expect)(arangojs_1.mockCollections[0].import).toHaveBeenCalledWith(docs, { onDuplicate: 'update' }); (0, globals_1.expect)(service.logService.debug).toHaveBeenCalled(); }); (0, globals_1.it)('should run AQL queries and close client resources', async () => { const query = { query: 'FOR doc IN docs RETURN doc' }; await (0, globals_1.expect)(service.query(query)).resolves.toEqual(globals_1.expect.objectContaining({ all: globals_1.expect.any(Function) })); await service.exposeStop(service.getClient(), 'default'); (0, globals_1.expect)(arangojs_1.mockDatabaseInstances[0].query).toHaveBeenCalledWith(query, undefined); (0, globals_1.expect)(arangojs_1.mockDatabaseInstances[0].close).toHaveBeenCalled(); (0, globals_1.expect)(arangojs_1.mockDatabaseInstances[0].shutdown).toHaveBeenCalled(); }); }); //# sourceMappingURL=arango.service.spec.js.map