const SettingsService = require('../../services/settings'); const expect = require('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'); }); }); }); 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'); }); }); }); });