1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/test/e2e/stores/project-store.e2e.test.js
2020-11-23 21:47:51 +01:00

85 lines
2.1 KiB
JavaScript

'use strict';
const test = require('ava');
const dbInit = require('../helpers/database-init');
const getLogger = require('../../fixtures/no-logger');
let stores;
let projectStore;
test.before(async () => {
const db = await dbInit('project_store_serial', getLogger);
stores = db.stores;
projectStore = stores.projectStore;
});
test.after(async () => {
await stores.db.destroy();
});
test.serial('should have default project', async t => {
const project = await projectStore.get('default');
t.assert(project);
t.is(project.id, 'default');
});
test.serial('should create new project', async t => {
const project = {
id: 'test',
name: 'New project',
description: 'Blah',
};
await projectStore.create(project);
const ret = await projectStore.get('test');
t.deepEqual(project.id, ret.id);
t.deepEqual(project.name, ret.name);
t.deepEqual(project.description, ret.description);
t.truthy(ret.createdAt);
});
test.serial('should delete project', async t => {
const project = {
id: 'test-delete',
name: 'New project',
description: 'Blah',
};
await projectStore.create(project);
await projectStore.delete(project.id);
try {
await projectStore.get(project.id);
} catch (err) {
t.is(err.message, 'No project found');
}
});
test.serial('should update project', async t => {
const project = {
id: 'test-update',
name: 'New project',
description: 'Blah',
};
const updatedProject = {
id: 'test-update',
name: 'New name',
description: 'Blah longer desc',
};
await projectStore.create(project);
await projectStore.update(updatedProject);
const readProject = await projectStore.get(project.id);
t.is(updatedProject.name, readProject.name);
t.is(updatedProject.description, readProject.description);
});
test.serial('should give error when getting unkown project', async t => {
try {
await projectStore.get('unknown');
} catch (err) {
t.is(err.message, 'No project found');
}
});