Merge branch 'lint' of https://github.com/isiahmeadows/mithril.js into isiahmeadows-lint

Conflicts:
	mithril.js
	tests/mithril-tests.js
This commit is contained in:
Leo Horie 2016-01-28 18:40:19 -05:00
commit 4f0d479ee7
17 changed files with 4783 additions and 2997 deletions

8
test/isolation-test.html Normal file
View file

@ -0,0 +1,8 @@
<!doctype html>
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.0.3/es5-shim.min.js"></script>-->
<script src="test.js"></script>
<script src="mock.js"></script>
<script src="../mithril.js"></script>
<p>Open the console to see the test report</p>
<script src="./isolation-test.js"></script>

159
test/isolation-test.js Normal file
View file

@ -0,0 +1,159 @@
/* global m, test, mock */
(function () {
"use strict"
m.deps(mock.window)
test(function () { // eslint-disable-line max-statements
var root = mock.document.createElement("div")
var retain = false
var flag = true
var loaded1 = null
var loaded2 = null
var loaded1a = null
var loaded2a = null
var Comp1 = {
controller: function () {
loaded1 = true
this.onunload = function () {
loaded1 = false
}
},
view: function () {
if (retain) {
return {subtree: "retain"}
} else {
return m("a", {
config: function (el, init, ctx) {
if (!init) {
loaded1a = true
ctx.onunload = function () {
loaded1a = false
}
}
}
})
}
}
}
var Comp2 = {
controller: function () {
loaded2 = true
this.onunload = function () {
loaded2 = false
}
},
view: function () {
if (retain) {
return {subtree: "retain"}
} else {
return m("b", {
config: function (el, init, ctx) {
if (!init) {
loaded2a = true
ctx.onunload = function () {
loaded2a = false
}
}
}
})
}
}
}
var Root = {
view: function () {
return flag ? Comp1 : Comp2
}
}
m.mount(root, Root)
mock.requestAnimationFrame.$resolve()
// loaded 1
var result1 = loaded1 === true &&
loaded2 === null &&
loaded1a === true &&
loaded2a === null
retain = true
m.redraw(true)
mock.requestAnimationFrame.$resolve()
// retained
var result2 = loaded1 === true &&
loaded2 === null &&
loaded1a === true &&
loaded2a === null
flag = false
m.redraw(true)
mock.requestAnimationFrame.$resolve()
// loaded 2 while retained: both controllers are alive at the same time
// because dom element is retained
var result3 = loaded1 === true &&
loaded2 === true &&
loaded1a === true &&
loaded2a === null
retain = false
m.redraw(true)
mock.requestAnimationFrame.$resolve()
// unretained, i.e. 2 is now dynamic
var result4 = loaded1 === false &&
loaded2 === true &&
loaded1a === false &&
loaded2a === true
flag = true
m.redraw(true)
mock.requestAnimationFrame.$resolve()
// loaded 1 while dynamic
var result5 = loaded1 === true &&
loaded2 === false &&
loaded1a === true &&
loaded2a === false
return result1 && result2 && result3 && result4 && result5
})
/*
test(function() {
var root = mock.document.createElement("div")
var redraws = 0, data
var Root = {
view: function() {
return Comp
}
}
var Comp = {
controller: function() {
this.foo = m.request({method: "GET", url: "/foo"})
},
view: function(ctrl) {
redraws++
data = ctrl.foo()
return m("div")
}
}
m.mount(root, Root)
mock.requestAnimationFrame.$resolve()
mock.XMLHttpRequest.$instances.pop().onreadystatechange()
return redraws == 1 && data.url == "/foo"
})
*/
test.print(function (value) {
console.log(value) // eslint-disable-line no-console
})
})()

View file

@ -295,7 +295,7 @@ describe("m.deferred()", function () {
prmA.promise.then(function (A) {
return prmB.promise
}).then(function(B) {
}).then(function (B) {
expect(B).to.equal("B")
})
})
@ -303,7 +303,7 @@ describe("m.deferred()", function () {
var d = m.deferred()
d.resolve(5)
d.resolve(6)
d.promise.then(function(v) {
d.promise.then(function (v) {
expect(v).to.equal(5)
})
})

View file

@ -56,13 +56,13 @@ describe("m.trust()", function () {
it("works with trusted content in div", function () {
var root = document.createElement("div")
m.render(root, m('div', [
m('p', '&copy;'),
m('p', m.trust('&copy;')),
m.trust('&copy;'),
m.render(root, m("div", [
m("p", "&copy;"),
m("p", m.trust("&copy;")),
m.trust("&copy;"),
]))
expect(root.innerHTML).to.equal("<div><p>&amp;copy;</p><p>©</p>©</div>")
})
})
})