mirror of https://github.com/ColorlibHQ/gentelella
282 lines
8.2 KiB
JavaScript
282 lines
8.2 KiB
JavaScript
require('mocha');
|
|
require('should');
|
|
var assert = require('assert');
|
|
var support = require('./support');
|
|
var App = support.resolve();
|
|
var Views = App.Views;
|
|
var View = App.View;
|
|
var app;
|
|
|
|
describe('app.use', function() {
|
|
beforeEach(function() {
|
|
app = new App();
|
|
});
|
|
|
|
it('should expose the instance to `use`:', function(done) {
|
|
app.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should be chainable:', function(done) {
|
|
app.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
})
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
})
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should pass to collection `use` if a function is returned:', function() {
|
|
app.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
return function(collection) {
|
|
collection.foo = collection.addView;
|
|
assert(collection instanceof Views);
|
|
return collection;
|
|
};
|
|
});
|
|
|
|
app.create('pages')
|
|
.foo({path: 'a.md', content: '...'})
|
|
.addView({path: 'b.md', content: '...'})
|
|
.addView({path: 'c.md', content: '...'});
|
|
|
|
assert(app.views.pages.hasOwnProperty('a.md'));
|
|
assert(app.views.pages.hasOwnProperty('b.md'));
|
|
assert(app.views.pages.hasOwnProperty('c.md'));
|
|
});
|
|
|
|
it('should be chainable when a collection function is returned:', function() {
|
|
app
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
return function(collection) {
|
|
collection.foo = collection.addView;
|
|
assert(collection instanceof Views);
|
|
return collection;
|
|
};
|
|
})
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
return function(collection) {
|
|
collection.bar = collection.addView;
|
|
assert(collection instanceof Views);
|
|
return collection;
|
|
};
|
|
})
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
return function(collection) {
|
|
collection.baz = collection.addView;
|
|
assert(collection instanceof Views);
|
|
return collection;
|
|
};
|
|
});
|
|
|
|
var pages = app.create('pages');
|
|
|
|
pages.foo({path: 'a.md', content: '...'});
|
|
pages.bar({path: 'b.md', content: '...'});
|
|
pages.baz({path: 'c.md', content: '...'});
|
|
|
|
assert(app.views.pages.hasOwnProperty('a.md'));
|
|
assert(app.views.pages.hasOwnProperty('b.md'));
|
|
assert(app.views.pages.hasOwnProperty('c.md'));
|
|
});
|
|
|
|
it('should pass to view `use` if collection.use returns a function:', function() {
|
|
app.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
|
|
return function(collection) {
|
|
assert(collection instanceof Views);
|
|
collection.foo = collection.addView;
|
|
|
|
return function(view) {
|
|
assert(view instanceof View);
|
|
view.foo = collection.addView.bind(collection);
|
|
return view;
|
|
};
|
|
};
|
|
});
|
|
|
|
app.create('pages')
|
|
.foo({path: 'a.md', content: '...'})
|
|
.foo({path: 'b.md', content: '...'})
|
|
.foo({path: 'c.md', content: '...'});
|
|
|
|
assert(app.views.pages.hasOwnProperty('a.md'));
|
|
assert(app.views.pages.hasOwnProperty('b.md'));
|
|
assert(app.views.pages.hasOwnProperty('c.md'));
|
|
});
|
|
|
|
it('should be chainable when a view function is returned:', function() {
|
|
app
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
|
|
return function(collection) {
|
|
assert(collection instanceof Views);
|
|
collection.foo = collection.addView;
|
|
|
|
return function(view) {
|
|
assert(view instanceof View);
|
|
view.a = collection.addView.bind(collection);
|
|
return view;
|
|
};
|
|
};
|
|
})
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
|
|
return function(collection) {
|
|
assert(collection instanceof Views);
|
|
collection.bar = collection.addView;
|
|
|
|
return function(view) {
|
|
assert(view instanceof View);
|
|
view.b = collection.addView.bind(collection);
|
|
return view;
|
|
};
|
|
};
|
|
})
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
|
|
return function(collection) {
|
|
assert(collection instanceof Views);
|
|
collection.baz = collection.addView;
|
|
|
|
return function(view) {
|
|
assert(view instanceof View);
|
|
view.c = collection.addView.bind(collection);
|
|
return view;
|
|
};
|
|
};
|
|
});
|
|
|
|
var pages = app.create('pages');
|
|
|
|
pages.foo({path: 'a.md', content: '...'});
|
|
pages.bar({path: 'b.md', content: '...'});
|
|
pages.baz({path: 'c.md', content: '...'})
|
|
.a({path: 'x.md', content: '...'})
|
|
.b({path: 'y.md', content: '...'})
|
|
.c({path: 'z.md', content: '...'});
|
|
|
|
assert(app.views.pages.hasOwnProperty('a.md'));
|
|
assert(app.views.pages.hasOwnProperty('b.md'));
|
|
assert(app.views.pages.hasOwnProperty('c.md'));
|
|
|
|
assert(app.views.pages.hasOwnProperty('x.md'));
|
|
assert(app.views.pages.hasOwnProperty('y.md'));
|
|
assert(app.views.pages.hasOwnProperty('z.md'));
|
|
});
|
|
|
|
it('should work with multiple collections:', function() {
|
|
app
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
|
|
return function(collection) {
|
|
assert(collection instanceof Views);
|
|
collection.foo = collection.addView;
|
|
|
|
return function(view) {
|
|
assert(view instanceof View);
|
|
view.a = collection.addView.bind(collection);
|
|
return view;
|
|
};
|
|
};
|
|
})
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
|
|
return function(collection) {
|
|
assert(collection instanceof Views);
|
|
collection.bar = collection.addView;
|
|
|
|
return function(view) {
|
|
assert(view instanceof View);
|
|
view.b = collection.addView.bind(collection);
|
|
return view;
|
|
};
|
|
};
|
|
})
|
|
.use(function(inst) {
|
|
assert(inst instanceof App);
|
|
assert(this instanceof App);
|
|
|
|
return function(collection) {
|
|
collection.baz = collection.addView;
|
|
assert(collection instanceof Views);
|
|
assert(this instanceof Views);
|
|
|
|
return function(view) {
|
|
assert(this instanceof View);
|
|
assert(view instanceof View);
|
|
view.c = collection.addView.bind(collection);
|
|
return view;
|
|
};
|
|
};
|
|
});
|
|
|
|
var pages = app.create('pages');
|
|
|
|
pages.foo({path: 'a.md', content: '...'});
|
|
pages.bar({path: 'b.md', content: '...'});
|
|
pages.baz({path: 'c.md', content: '...'})
|
|
.a({path: 'x.md', content: '...'})
|
|
.b({path: 'y.md', content: '...'})
|
|
.c({path: 'z.md', content: '...'});
|
|
|
|
assert(app.views.pages.hasOwnProperty('a.md'));
|
|
assert(app.views.pages.hasOwnProperty('b.md'));
|
|
assert(app.views.pages.hasOwnProperty('c.md'));
|
|
|
|
assert(app.views.pages.hasOwnProperty('x.md'));
|
|
assert(app.views.pages.hasOwnProperty('y.md'));
|
|
assert(app.views.pages.hasOwnProperty('z.md'));
|
|
|
|
var posts = app.create('posts');
|
|
|
|
posts.foo({path: 'a.md', content: '...'});
|
|
posts.bar({path: 'b.md', content: '...'});
|
|
posts.baz({path: 'c.md', content: '...'})
|
|
.a({path: 'x.md', content: '...'})
|
|
.b({path: 'y.md', content: '...'})
|
|
.c({path: 'z.md', content: '...'});
|
|
|
|
assert(app.views.posts.hasOwnProperty('a.md'));
|
|
assert(app.views.posts.hasOwnProperty('b.md'));
|
|
assert(app.views.posts.hasOwnProperty('c.md'));
|
|
|
|
assert(app.views.posts.hasOwnProperty('x.md'));
|
|
assert(app.views.posts.hasOwnProperty('y.md'));
|
|
assert(app.views.posts.hasOwnProperty('z.md'));
|
|
|
|
var docs = app.create('docs');
|
|
|
|
docs.foo({path: 'a.md', content: '...'});
|
|
docs.bar({path: 'b.md', content: '...'});
|
|
docs.baz({path: 'c.md', content: '...'})
|
|
.a({path: 'x.md', content: '...'})
|
|
.b({path: 'y.md', content: '...'})
|
|
.c({path: 'z.md', content: '...'});
|
|
|
|
assert(app.views.docs.hasOwnProperty('a.md'));
|
|
assert(app.views.docs.hasOwnProperty('b.md'));
|
|
assert(app.views.docs.hasOwnProperty('c.md'));
|
|
|
|
assert(app.views.docs.hasOwnProperty('x.md'));
|
|
assert(app.views.docs.hasOwnProperty('y.md'));
|
|
assert(app.views.docs.hasOwnProperty('z.md'));
|
|
});
|
|
});
|