193 lines
4.8 KiB
JavaScript
193 lines
4.8 KiB
JavaScript
|
import c from '../lib/casette.mjs'
|
||
|
import assert from '../lib/assert.mjs'
|
||
|
import { printError } from '../lib/cli.mjs'
|
||
|
|
||
|
let testsWereRun = false
|
||
|
|
||
|
function CreateT() {
|
||
|
const t = new c.Casette()
|
||
|
t.reporter = ''
|
||
|
return t
|
||
|
}
|
||
|
|
||
|
c.test('Casette describe should add prefix to the group tests', async function() {
|
||
|
testsWereRun = true
|
||
|
const assertPrefix = 'something'
|
||
|
const assertName = 'blabla'
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.setFilename('test')
|
||
|
t.describe(assertPrefix, function() {
|
||
|
t.test(assertName, function() {})
|
||
|
})
|
||
|
|
||
|
assert.strictEqual(t.groupsFlat.length, 1)
|
||
|
assert.strictEqual(t.groupsFlat[0].tests.length, 1)
|
||
|
assert.strictEqual(t.groupsFlat[0].tests[0].name, assertPrefix + ' ' + assertName)
|
||
|
})
|
||
|
|
||
|
c.test('Casette describe should add prefix to individual tests', async function() {
|
||
|
testsWereRun = true
|
||
|
const assertPrefix = 'something'
|
||
|
const assertName = 'blabla'
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.describe(assertPrefix, function() {
|
||
|
t.test(assertName, function() {})
|
||
|
})
|
||
|
|
||
|
assert.strictEqual(t.tests.length, 1)
|
||
|
assert.strictEqual(t.tests[0].name, assertPrefix + ' ' + assertName)
|
||
|
})
|
||
|
|
||
|
c.test('Casette describe should support multiple describe', async function() {
|
||
|
testsWereRun = true
|
||
|
const assertPrefix = 'something'
|
||
|
const assertPrefix2 = 'else'
|
||
|
const assertName = 'blabla'
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.describe(assertPrefix, function() {
|
||
|
t.describe(assertPrefix2, function() {
|
||
|
t.test(assertName, function() {})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
assert.strictEqual(t.tests.length, 1)
|
||
|
assert.strictEqual(t.tests[0].name, assertPrefix + ' ' + assertPrefix2 + ' ' + assertName)
|
||
|
})
|
||
|
|
||
|
c.test('Casette should run test', async function() {
|
||
|
testsWereRun = true
|
||
|
let assertIsTrue = false
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.test('', function() {
|
||
|
assertIsTrue = true
|
||
|
})
|
||
|
await t.run()
|
||
|
assert.strictEqual(t.failedTests.length, 0)
|
||
|
assert.strictEqual(assertIsTrue, true)
|
||
|
})
|
||
|
|
||
|
c.test('Casette should run promised test', async function() {
|
||
|
testsWereRun = true
|
||
|
let assertIsTrue = false
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.test('', function() {
|
||
|
return new Promise(function(res) {
|
||
|
assertIsTrue = true
|
||
|
res()
|
||
|
})
|
||
|
})
|
||
|
await t.run()
|
||
|
assert.strictEqual(t.failedTests.length, 0)
|
||
|
assert.strictEqual(assertIsTrue, true)
|
||
|
})
|
||
|
|
||
|
c.test('Casette should support callback', async function() {
|
||
|
testsWereRun = true
|
||
|
let assertIsTrue = false
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.test('', function(cb) {
|
||
|
setTimeout(function() {
|
||
|
assertIsTrue = true
|
||
|
cb()
|
||
|
}, 50)
|
||
|
})
|
||
|
await t.run()
|
||
|
assert.strictEqual(t.failedTests.length, 0)
|
||
|
assert.strictEqual(assertIsTrue, true)
|
||
|
})
|
||
|
|
||
|
c.test('Casette should support directly thrown errors', async function() {
|
||
|
testsWereRun = true
|
||
|
const assertError = new Error()
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.test('', function() {
|
||
|
throw assertError
|
||
|
})
|
||
|
await t.run()
|
||
|
assert.strictEqual(t.failedTests.length, 1)
|
||
|
assert.strictEqual(t.failedTests[0].error, assertError)
|
||
|
})
|
||
|
|
||
|
c.test('Casette should support promise rejected errors', async function() {
|
||
|
testsWereRun = true
|
||
|
const assertError = new Error()
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.test('', function() {
|
||
|
return new Promise(function(res, rej) {
|
||
|
rej(assertError)
|
||
|
})
|
||
|
})
|
||
|
await t.run()
|
||
|
assert.strictEqual(t.failedTests.length, 1)
|
||
|
assert.strictEqual(t.failedTests[0].error, assertError)
|
||
|
})
|
||
|
|
||
|
c.test('Casette should support callback rejected errors', async function() {
|
||
|
testsWereRun = true
|
||
|
const assertError = new Error()
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.test('', function(cb) {
|
||
|
cb(assertError)
|
||
|
})
|
||
|
await t.run()
|
||
|
assert.strictEqual(t.failedTests.length, 1)
|
||
|
assert.strictEqual(t.failedTests[0].error, assertError)
|
||
|
})
|
||
|
|
||
|
c.test('Casette should support timing out tests', async function() {
|
||
|
testsWereRun = true
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.test('', function(cb) { }).timeout(50)
|
||
|
await t.run()
|
||
|
assert.strictEqual(t.failedTests.length, 1)
|
||
|
assert.ok(t.failedTests[0].error)
|
||
|
assert.match(t.failedTests[0].error.message, /50ms/)
|
||
|
})
|
||
|
|
||
|
c.test('Casette should support timed out tests on late tests', async function() {
|
||
|
testsWereRun = true
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.test('', function(cb) {
|
||
|
setTimeout(function() {
|
||
|
cb()
|
||
|
}, 100)
|
||
|
}).timeout(50)
|
||
|
await t.run()
|
||
|
assert.strictEqual(t.failedTests.length, 1)
|
||
|
assert.ok(t.failedTests[0].error)
|
||
|
assert.match(t.failedTests[0].error.message, /50ms/)
|
||
|
})
|
||
|
|
||
|
c.test('Casette should support skipped tests', async function() {
|
||
|
testsWereRun = true
|
||
|
const t = CreateT()
|
||
|
t.begin()
|
||
|
t.test('', function() {
|
||
|
throw new Error('Should not be called')
|
||
|
}).skip()
|
||
|
await t.run()
|
||
|
assert.strictEqual(t.failedTests.length, 0)
|
||
|
})
|
||
|
|
||
|
// Extra testing to make sure tests were run at all
|
||
|
process.on('exit', function(e) {
|
||
|
try {
|
||
|
assert.strictEqual(testsWereRun, true)
|
||
|
} catch(err) {
|
||
|
printError(err)
|
||
|
process.exit(1)
|
||
|
}
|
||
|
process.exit(e)
|
||
|
})
|