mirror of https://github.com/ColorlibHQ/gentelella
145 lines
3.9 KiB
JavaScript
145 lines
3.9 KiB
JavaScript
'use strict';
|
|
|
|
require('mocha');
|
|
require('should');
|
|
var assert = require('assert');
|
|
var support = require('./support/');
|
|
assert.containEql = support.containEql;
|
|
var App = support.resolve();
|
|
var List = App.List;
|
|
var Group = App.Group;
|
|
var group;
|
|
|
|
describe('group', function() {
|
|
describe('constructor', function() {
|
|
it('should create an instance of Group:', function() {
|
|
var group = new Group();
|
|
assert(group instanceof Group);
|
|
});
|
|
|
|
it('should instantiate without new', function() {
|
|
var group = Group();
|
|
assert(group instanceof Group);
|
|
});
|
|
|
|
it('should create an instance of Group with default List:', function() {
|
|
var group = new Group();
|
|
assert.deepEqual(group.List, List);
|
|
});
|
|
|
|
it('should create an instance of Group with custom List:', function() {
|
|
function CustomList() {
|
|
List.apply(this, arguments);
|
|
}
|
|
List.extend(CustomList);
|
|
var group = new Group({List: CustomList});
|
|
assert.deepEqual(group.List, CustomList);
|
|
});
|
|
});
|
|
|
|
describe('static methods', function() {
|
|
it('should expose `extend`:', function() {
|
|
assert(typeof Group.extend === 'function');
|
|
});
|
|
});
|
|
|
|
describe('prototype methods', function() {
|
|
beforeEach(function() {
|
|
group = new Group();
|
|
});
|
|
|
|
it('should expose `use`', function() {
|
|
assert(typeof group.use === 'function');
|
|
});
|
|
it('should expose `set`', function() {
|
|
assert(typeof group.set === 'function');
|
|
});
|
|
it('should expose `get`', function() {
|
|
assert(typeof group.get === 'function');
|
|
});
|
|
it('should expose `visit`', function() {
|
|
assert(typeof group.visit === 'function');
|
|
});
|
|
it('should expose `define`', function() {
|
|
assert(typeof group.define === 'function');
|
|
});
|
|
});
|
|
|
|
describe('instance', function() {
|
|
beforeEach(function() {
|
|
group = new Group();
|
|
});
|
|
|
|
it('should expose options:', function() {
|
|
assert(typeof group.options === 'object');
|
|
});
|
|
|
|
it('should set a value on the instance:', function() {
|
|
group.set('a', 'b');
|
|
assert(group.a === 'b');
|
|
});
|
|
|
|
it('should get a value from the instance:', function() {
|
|
group.set('a', 'b');
|
|
assert(group.get('a') === 'b');
|
|
});
|
|
});
|
|
|
|
describe('get', function() {
|
|
it('should get a normal value when not an array', function() {
|
|
var group = new Group({'foo': {items: [1, 2, 3]}});
|
|
assert.deepEqual(group.get('foo'), {items: [1, 2, 3]});
|
|
});
|
|
|
|
it('should get an instance of List when value is an array', function() {
|
|
var group = new Group({'foo': {items: [{path: 'one.hbs'}, {path: 'two.hbs'}, {path: 'three.hbs'}]}});
|
|
var list = group.get('foo.items');
|
|
assert(list instanceof List);
|
|
assert.deepEqual(list.items.length, 3);
|
|
});
|
|
|
|
it('should throw an error when trying to use a List method on a non List value', function() {
|
|
(function() {
|
|
var group = new Group({'foo': {items: [1, 2, 3]}});
|
|
var foo = group.get('foo');
|
|
foo.paginate();
|
|
}).should.throw('paginate can only be used with an array of `List` items.');
|
|
});
|
|
|
|
it('should not override properties already existing on non List values', function(done) {
|
|
var group = new Group({'foo': {items: [1, 2, 3], paginate: function() {
|
|
assert(true);
|
|
done();
|
|
}}});
|
|
var foo = group.get('foo');
|
|
foo.paginate();
|
|
});
|
|
});
|
|
|
|
describe('use', function() {
|
|
beforeEach(function() {
|
|
group = new Group();
|
|
});
|
|
|
|
it('should use middleware on a group:', function() {
|
|
group.set('one', {contents: new Buffer('aaa')});
|
|
group.set('two', {contents: new Buffer('zzz')});
|
|
|
|
group
|
|
.use(function(group) {
|
|
group.options = {};
|
|
})
|
|
.use(function(group) {
|
|
group.options.foo = 'bar';
|
|
})
|
|
.use(function() {
|
|
this.set('one', 'two');
|
|
});
|
|
|
|
assert(group.one === 'two');
|
|
assert(group.options.foo === 'bar');
|
|
});
|
|
});
|
|
});
|
|
|