64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
describe("m.prop()", function () {
|
|
"use strict"
|
|
|
|
it("reads correct value", function () {
|
|
var prop = m.prop("test")
|
|
expect(prop()).to.equal("test")
|
|
})
|
|
|
|
it("defaults to `undefined`", function () {
|
|
var prop = m.prop()
|
|
expect(prop()).to.be.undefined
|
|
})
|
|
|
|
it("sets the correct value", function () {
|
|
var prop = m.prop("test")
|
|
prop("foo")
|
|
expect(prop()).to.equal("foo")
|
|
})
|
|
|
|
it("sets `null`", function () {
|
|
var prop = m.prop(null)
|
|
expect(prop()).to.be.null
|
|
})
|
|
|
|
it("sets `undefined`", function () {
|
|
var prop = m.prop(undefined)
|
|
expect(prop()).to.be.undefined
|
|
})
|
|
|
|
it("returns the new value when set", function () {
|
|
var prop = m.prop()
|
|
expect(prop("foo")).to.equal("foo")
|
|
})
|
|
|
|
it("correctly stringifies to the correct value", function () {
|
|
var prop = m.prop("test")
|
|
expect(JSON.stringify(prop)).to.equal('"test"')
|
|
})
|
|
|
|
it("correctly stringifies to the correct value as a child", function () {
|
|
var obj = {prop: m.prop("test")}
|
|
expect(JSON.stringify(obj)).to.equal('{"prop":"test"}')
|
|
})
|
|
|
|
it("correctly wraps Mithril promises", function () {
|
|
var defer = m.deferred()
|
|
var prop = m.prop(defer.promise)
|
|
defer.resolve("test")
|
|
|
|
expect(prop()).to.equal("test")
|
|
})
|
|
|
|
it("returns a thenable when wrapping a Mithril promise", function () {
|
|
var defer = m.deferred()
|
|
|
|
var prop = m.prop(defer.promise).then(function () {
|
|
return "test2"
|
|
})
|
|
|
|
defer.resolve("test")
|
|
|
|
expect(prop()).to.equal("test2")
|
|
})
|
|
})
|