/*! * minibase-tests * * Copyright (c) Charlike Mike Reagent <@tunnckoCore> (http://www.tunnckocore.tk) * Released under the MIT license. */ /* jshint asi:true */ 'use strict' var test = require('mukla') var suite = require('./index') var Base = require('base') var Assemble = require('assemble-core') var Templates = require('templates') var MiniBase = require('minibase').MiniBase var version = process.version.match(/^.(\d+)\.(\d+)/) var major = version[1] var minor = version[2] function MyApp (options) { if (!(this instanceof MyApp)) { return new MyApp(options) } this.options = { silent: true } MiniBase.call(this, options) } MiniBase.extend(MyApp) function BaseApp () { if (!(this instanceof BaseApp)) { return new BaseApp() } Base.call(this) } Base.extend(BaseApp) test('should expose a function', function (done) { test.strictEqual(typeof suite, 'function') done() }) test('should suite(123) reject with TypeError if App not a function', function (done) { suite(123).catch(function (err) { test.strictEqual(err.name, 'TypeError') test.strictEqual(err.message, 'minibase-tests: expect `App` to be constructor') done() }) }) test('should given App and MiniBase itself pass all tests', function (done) { suite(MyApp).runTests().then(function (res) { test.strictEqual(res.length, 0) return suite(MiniBase).runTests().then(function (tests) { var len = tests.length test.strictEqual(len, 0) done() }, done) }, done) }) test('should `base` and Base-based app pass most of these tests', function (done) { var opts = { isBase: true } suite(Base, opts).runTests() .then(function (res) { test.strictEqual(res.length, 0) return suite(BaseApp, opts).runTests() }, done) .then(function (passed) { test.strictEqual(passed.length, 0) done() }, done) }) test('should Templates and AssembleCore apps pass all tests', function (done) { if (major > 0 || minor > 11) { suite(Templates, { isBase: true }).runTests().then(function (result) { var length = result.length test.strictEqual(length === 0, true) return suite(Assemble, { isBase: true }).runTests() }, done) .then(function (pass) { test.strictEqual(pass.length, 0) done() }, done) return } done() })