text: const should = require('should');
  const fs = require('fs-extra');
  const StorageBase = require('ghost-storage-base');
  const configUtils = require('../../../utils/configUtils');
  const storage = require('../../../../core/server/adapters/storage');
  const LocalFileStorage = require('../../../../core/server/adapters/storage/LocalFileStorage');
  
  const storagePath = configUtils.config.getContentPath('adapters') + 'storage/';
  describe('storage: index_spec', function () {
      const scope = {adapter: null};
  
      before(function () {
          if (!fs.existsSync(storagePath)) {
              fs.mkdirSync(storagePath);
          }
      });
  
      afterEach(function () {
          if (scope.adapter) {
              fs.unlinkSync(scope.adapter);
              scope.adapter = null;
          }
  
          configUtils.restore();
      });
  
      it('default image storage is local file storage', function () {
          const chosenStorage = storage.getStorage();
          (chosenStorage instanceof StorageBase).should.eql(true);
          (chosenStorage instanceof LocalFileStorage).should.eql(true);
      });
  
      it('custom adapter', function () {
          scope.adapter = storagePath + 'custom-adapter.js';
  
          configUtils.set({
              storage: {
                  active: 'custom-adapter'
              }
          });
  
          const jsFile = '' +
              '\'use strict\';' +
              'var StorageBase = require(\'ghost-storage-base\');' +
              'class AnotherAdapter extends StorageBase {' +
              'exists(){}' +
              'save(){}' +
              'serve(){}' +
              'delete(){}' +
              'read(){}' +
              '}' +
              'module.exports = AnotherAdapter';
  
          let chosenStorage;
  
          fs.writeFileSync(scope.adapter, jsFile);
  
          configUtils.config.get('storage:active').should.eql('custom-adapter');
          chosenStorage = storage.getStorage();
          (chosenStorage instanceof LocalFileStorage).should.eql(false);
          (chosenStorage instanceof StorageBase).should.eql(true);
      });
  
      it('create bad adapter: exists fn is missing', function () {
          scope.adapter = storagePath + 'broken-storage.js';
  
          configUtils.set({
              storage: {
                  active: 'broken-storage'
              },
              paths: {
                  storage: __dirname + '/broken-storage.js'
              }
          });
  
          const jsFile = '' +
              '\'use strict\';' +
              'var StorageBase = require(\'ghost-storage-base\');' +
              'class AnotherAdapter extends StorageBase {' +
              'save(){}' +
              'serve(){}' +
              'delete(){}' +
              'read(){}' +
              '}' +
              'module.exports = AnotherAdapter';
  
          fs.writeFileSync(scope.adapter, jsFile);
  
          try {
              storage.getStorage();
          } catch (err) {
              should.exist(err);
              should.equal(err.errorType, 'IncorrectUsageError');
          }
      });
  });
  