Files
talk/test/server/services/settings.js
T
2018-01-11 20:00:34 -07:00

83 lines
2.4 KiB
JavaScript

const SettingsService = require('../../../services/settings');
const chai = require('chai');
const expect = chai.expect;
describe('services.SettingsService', () => {
beforeEach(() =>
SettingsService.init({ moderation: 'PRE', wordlist: ['donut'] })
);
describe('#retrieve()', () => {
it('should have a moderation field defined', () => {
return SettingsService.retrieve().then(settings => {
expect(settings)
.to.have.property('moderation')
.and.to.equal('PRE');
});
});
it('should have two infoBox fields defined', () => {
return SettingsService.retrieve().then(settings => {
expect(settings)
.to.have.property('infoBoxEnable')
.and.to.equal(false);
expect(settings)
.to.have.property('infoBoxContent')
.and.to.equal('');
});
});
});
describe('#update()', () => {
it('should update the settings with a passed object', () => {
const mockSettings = {
moderation: 'POST',
infoBoxEnable: true,
infoBoxContent: 'yeah',
};
return SettingsService.update(mockSettings).then(updatedSettings => {
expect(updatedSettings).to.be.an('object');
expect(updatedSettings)
.to.have.property('moderation')
.and.to.equal('POST');
expect(updatedSettings).to.have.property('infoBoxEnable', true);
expect(updatedSettings).to.have.property('infoBoxContent', 'yeah');
});
});
it('should be ok when receiving an object based off of a mongoose model', async () => {
const mockSettings = {
moderation: 'POST',
infoBoxEnable: true,
infoBoxContent: 'yeah',
};
await SettingsService.update(mockSettings);
const settings = await SettingsService.retrieve();
settings.charCount = 500;
await SettingsService.update(settings.toObject());
});
});
describe('#get', () => {
it('should return the moderation settings', () => {
return SettingsService.retrieve().then(({ moderation }) => {
expect(moderation).not.to.be.null;
});
});
});
describe('#merge', () => {
it('should merge a settings object and its overrides', () => {
return SettingsService.retrieve().then(settings => {
let ovrSett = { moderation: 'POST' };
settings.merge(ovrSett);
expect(settings).to.have.property('moderation', 'POST');
});
});
});
});