@joktec/arango
Version:
JokTec - ArangoDB Service
54 lines • 2.79 kB
JavaScript
;
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