must
Version:
Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.
149 lines (119 loc) • 4.43 kB
JavaScript
var Must = require("../..")
var assert = require("./assert")
describe("Must.prototype.empty", function() {
// Allow using new Boolean:
/* jshint -W053 */
/* eslint no-new-wrappers: 0 */
describe("given Boolean", function() {
it("must fail given a boolean primitive", function() {
assert.fail(function() { Must(true).be.empty() })
assert.fail(function() { Must(false).be.empty() })
})
it("must pass given a boolean object", function() {
assert.pass(function() { Must(new Boolean(true)).be.empty() })
assert.pass(function() { Must(new Boolean(false)).be.empty() })
})
it("must fail given a non-empty object with keys", function() {
var obj = new Boolean(false)
obj.life = 42
assert.fail(function() { Must(obj).be.empty() })
})
})
describe("given Number", function() {
it("must fail given an zero primitive", function() {
assert.fail(function() { Must(0).be.empty() })
})
it("must fail given a non-zero primitive", function() {
assert.fail(function() { Must(1).be.empty() })
})
it("must pass given a zero object", function() {
assert.pass(function() { Must(new Number).be.empty() })
})
it("must pass given a non-zero object", function() {
assert.pass(function() { Must(new Number(1)).be.empty() })
})
it("must fail given a non-empty object with keys", function() {
var obj = new Number(1)
obj.life = 42
assert.fail(function() { Must(obj).be.empty() })
})
})
describe("given String", function() {
it("must pass given an empty primitive", function() {
assert.pass(function() { Must("").be.empty() })
})
it("must fail given a non-empty primitive", function() {
assert.fail(function() { Must("a").be.empty() })
})
it("must pass given an empty object", function() {
assert.pass(function() { Must(new String).be.empty() })
})
it("must fail given a non-empty object", function() {
assert.fail(function() { Must(new String("a")).be.empty() })
})
})
describe("given RegExp", function() {
it("must pass given an empty object", function() {
assert.pass(function() { Must(new RegExp).be.empty() })
})
it("must pass given a non-empty object", function() {
assert.pass(function() { Must(new RegExp("a")).be.empty() })
})
it("must fail given a non-empty object with keys", function() {
var obj = new RegExp("a")
obj.life = 42
assert.fail(function() { Must(obj).be.empty() })
})
})
describe("given Array", function() {
it("must pass given an empty primitive", function() {
assert.pass(function() { Must([]).be.empty() })
})
it("must fail given a non-empty primitive", function() {
assert.fail(function() { Must([1]).be.empty() })
})
})
describe("given Function", function() {
it("should pass given an empty object", function() {
assert.pass(function() { Must(function() {}).be.empty() })
})
it("should pass given a non-empty object", function() {
assert.pass(function() { Must(function() { assert() }).be.empty() })
})
it("should fail given a non-empty object with keys", function() {
function fn() {}
fn.life = 42
assert.fail(function() { Must(fn).be.empty() })
})
})
describe("given Object", function() {
it("must pass given an empty object", function() {
assert.pass(function() { Must({}).be.empty() })
})
it("must fail given a non-empty object", function() {
assert.fail(function() { Must({life: 42}).be.empty() })
})
it("must fail given a non-empty inherited object", function() {
assert.fail(function() { Must(Object.create({life: 42})).be.empty() })
})
})
describe("given instance", function() {
function Foo() {}
function Bar() { this.life = 42 }
it("must pass given an empty instance", function() {
assert.pass(function() { Must(new Foo()).be.empty() })
})
it("must fail given a non-empty instance", function() {
assert.fail(function() { Must(new Bar()).be.empty() })
})
})
require("./_assertion_error_test")(function() { Must([1]).be.empty() }, {
actual: [1],
message: "[1] must be empty"
})
describe(".not", function() {
it("must invert the assertion", function() {
assert.fail(function() { Must([]).not.be.empty() })
})
})
})