You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					126 lines
				
				4.7 KiB
			
		
		
			
		
	
	
					126 lines
				
				4.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _path = _interopRequireDefault(require("path"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _chai = require("chai");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _adminjs = _interopRequireDefault(require("./adminjs"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _baseDatabase = _interopRequireDefault(require("./backend/adapters/database/base-database"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _baseResource = _interopRequireDefault(require("./backend/adapters/resource/base-resource"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _componentLoader = require("./backend/utils/component-loader");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('AdminJS', function () {
							 | 
						||
| 
								 | 
							
								  beforeEach(function () {
							 | 
						||
| 
								 | 
							
								    global.RegisteredAdapters = [];
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  describe('#constructor', function () {
							 | 
						||
| 
								 | 
							
								    it('sets default root path when no given', function () {
							 | 
						||
| 
								 | 
							
								      (0, _chai.expect)(new _adminjs.default().options.rootPath).to.equal('/admin');
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  describe('.AdminJS.registerAdapter', function () {
							 | 
						||
| 
								 | 
							
								    beforeEach(function () {
							 | 
						||
| 
								 | 
							
								      class Database extends _baseDatabase.default {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      class Resource extends _baseResource.default {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      this.DatabaseAdapter = {
							 | 
						||
| 
								 | 
							
								        Database,
							 | 
						||
| 
								 | 
							
								        Resource
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    it('adds given adapter to list off all available adapters', function () {
							 | 
						||
| 
								 | 
							
								      _adminjs.default.registerAdapter(this.DatabaseAdapter);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      (0, _chai.expect)(global.RegisteredAdapters).to.have.lengthOf(1);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    it('throws an error when adapter is not full', function () {
							 | 
						||
| 
								 | 
							
								      (0, _chai.expect)(() => {
							 | 
						||
| 
								 | 
							
								        _adminjs.default.registerAdapter({
							 | 
						||
| 
								 | 
							
								          Resource: _baseResource.default,
							 | 
						||
| 
								 | 
							
								          Database: null
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      }).to.throw('Adapter has to have both Database and Resource');
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    it('throws an error when adapter has elements not being subclassed from base adapter', function () {
							 | 
						||
| 
								 | 
							
								      (0, _chai.expect)(() => {
							 | 
						||
| 
								 | 
							
								        _adminjs.default.registerAdapter({
							 | 
						||
| 
								 | 
							
								          Resource: {},
							 | 
						||
| 
								 | 
							
								          Database: {}
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      }).to.throw('Adapter elements have to be a subclass of AdminJS.BaseResource and AdminJS.BaseDatabase');
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  describe('resolveBabelConfigPath', function () {
							 | 
						||
| 
								 | 
							
								    it('load .babelrc file', function () {
							 | 
						||
| 
								 | 
							
								      const adminJS = new _adminjs.default({
							 | 
						||
| 
								 | 
							
								        bundler: {
							 | 
						||
| 
								 | 
							
								          babelConfig: '../.babelrc'
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      (0, _chai.expect)(adminJS.options.bundler.babelConfig).not.to.undefined;
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    it('load with json object directly', function () {
							 | 
						||
| 
								 | 
							
								      const adminJS = new _adminjs.default({
							 | 
						||
| 
								 | 
							
								        bundler: {
							 | 
						||
| 
								 | 
							
								          babelConfig: {
							 | 
						||
| 
								 | 
							
								            presets: ['@babel/preset-react', ['@babel/preset-env', {
							 | 
						||
| 
								 | 
							
								              targets: {
							 | 
						||
| 
								 | 
							
								                node: '8'
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }], '@babel/preset-typescript'],
							 | 
						||
| 
								 | 
							
								            plugins: ['babel-plugin-styled-components'],
							 | 
						||
| 
								 | 
							
								            only: ['src/', 'spec/'],
							 | 
						||
| 
								 | 
							
								            ignore: ['src/frontend/assets/scripts/app-bundle.development.js', 'src/frontend/assets/scripts/app-bundle.production.js', 'src/frontend/assets/scripts/global-bundle.development.js', 'src/frontend/assets/scripts/global-bundle.production.js']
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      (0, _chai.expect)(adminJS.options.bundler.babelConfig).not.to.undefined;
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    it('load babel.config.js file', function () {
							 | 
						||
| 
								 | 
							
								      const adminJS = new _adminjs.default({
							 | 
						||
| 
								 | 
							
								        bundler: {
							 | 
						||
| 
								 | 
							
								          babelConfig: './babel.test.config.js'
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      (0, _chai.expect)(adminJS.options.bundler.babelConfig).not.to.undefined;
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  describe('.bundle', function () {
							 | 
						||
| 
								 | 
							
								    const loader = new _componentLoader.ComponentLoader();
							 | 
						||
| 
								 | 
							
								    afterEach(function () {
							 | 
						||
| 
								 | 
							
								      loader.clear();
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    context('file exists', function () {
							 | 
						||
| 
								 | 
							
								      beforeEach(function () {
							 | 
						||
| 
								 | 
							
								        this.result = loader.add('ExampleComponent', '../spec/fixtures/example-component');
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      it('adds given file to a UserComponents object', function () {
							 | 
						||
| 
								 | 
							
								        (0, _chai.expect)(Object.keys(loader.getComponents())).to.have.lengthOf(1);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      it('returns uniqe id', function () {
							 | 
						||
| 
								 | 
							
								        (0, _chai.expect)(loader.getComponents()[this.result]).not.to.be.undefined;
							 | 
						||
| 
								 | 
							
								        (0, _chai.expect)(this.result).to.be.a('string');
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      it('converts relative path to absolute path', function () {
							 | 
						||
| 
								 | 
							
								        (0, _chai.expect)(loader.getComponents()[this.result]).to.equal(_path.default.join(__dirname, '../spec/fixtures/example-component'));
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    context('component name given', function () {
							 | 
						||
| 
								 | 
							
								      it('returns the same component name as which was given', function () {
							 | 
						||
| 
								 | 
							
								        const name = loader.add('Dashboard', '../spec/fixtures/example-component');
							 | 
						||
| 
								 | 
							
								        (0, _chai.expect)(name).to.eq('Dashboard');
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    it('throws an error when component doesn\'t exist', function () {
							 | 
						||
| 
								 | 
							
								      (0, _chai.expect)(() => {
							 | 
						||
| 
								 | 
							
								        loader.add('ExampleComponent', './fixtures/example-components');
							 | 
						||
| 
								 | 
							
								      }).to.throw().property('name', 'ConfigurationError');
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 |