This mostly isolates the implementations for both of these. Now, everything here calls the method itself, not any of the external methods. Few driveby fixes as well: 1. Git now ignores archive/ again (it's a build artifact, and can be removed when updating `master`) 2. Since I had to rewrite most of the Deferred implementation, the new version passes one of the skipped tests, so it is now enabled.
66 lines
1.4 KiB
JavaScript
66 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)
|
|
|
|
var promise = prop.then(function () {
|
|
return "test2"
|
|
})
|
|
|
|
defer.resolve("test")
|
|
|
|
expect(promise()).to.equal("test2")
|
|
})
|
|
})
|