text: 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');
          });
      });
    });
  });
  