@carbon-io/test-tube
Version:
Test framework for Carbon.io
108 lines (99 loc) • 3.2 kB
JavaScript
var assert = require('assert')
var _ = require('lodash')
var sinon = require('sinon')
var __ = require('@carbon-io/fibers').__(module)
var o = require('@carbon-io/atom').o(module)
var Test = require('../lib/Test')
var util = require('../lib/util')
/******************************************************************************
* UtilTests
*/
__(function() {
module.exports = o.main({
/**********************************************************************
* _type
*/
_type: Test,
/**********************************************************************
* name
*/
name: "TestTests",
/**********************************************************************
* tests
*/
tests: [
o({
_type: Test,
name: 'SkipTestConvenienceClassTest',
description: 'test the SkipTest convenience class',
setup: function() {
this.sandbox = sinon.sandbox.create()
this.sandbox.stub(Test.prototype, '_log').callsFake(function() { /* noop */ })
},
teardown: function() {
this.sandbox.restore()
},
doTest: function() {
var predicate = false
var doTest = function() {
var test = o({
_type: '../lib/Test',
name: 'Foo',
description: 'foo',
tests: [
predicate ? o({
_type: '../lib/Test',
name: 'Bar',
doTest: function() {}
}) : o({
_type: util.SkipTest
})
]
})
return test.run()
}
var result = doTest()
assert(result.tests[0].passed)
assert(result.tests[0].skipped)
assert.equal(result.tests[0].name, 'SkipTest')
assert(!_.isUndefined(result.tests[0].error))
assert(result.tests[0].error.name, 'SkipTestError')
predicate = true
result = doTest()
assert(result.tests[0].passed)
assert(!result.tests[0].skipped)
assert.equal(result.tests[0].name, 'Bar')
assert(_.isUndefined(result.tests[0].error))
}
}),
o({
_type: Test,
name: 'NotImplementedTestConvenienceClassTest',
description: 'test the NotImplementedTest convenience class',
setup: function() {
this.sandbox = sinon.sandbox.create()
this.sandbox.stub(Test.prototype, '_log').callsFake(function() { /* noop */ })
},
teardown: function() {
this.sandbox.restore()
},
doTest: function() {
var predicate = false
var doTest = function() {
var test = o({
_type: util.NotImplementedTest,
description: 'Implement Foo',
})
return test.run()
}
var result = doTest()
assert(result.passed)
assert(result.skipped)
assert.equal(result.name, 'NotImplementedTest')
assert(!_.isUndefined(result.error))
assert(result.error.name, 'NotImplementedError')
}
})
]
})
})