Merge remote-tracking branch 'origin/next' into next

This commit is contained in:
Leo Horie 2014-10-05 15:54:03 -04:00
commit 721d56db4c
4 changed files with 51 additions and 8 deletions

View file

@ -548,7 +548,7 @@ Mithril = m = new function app(window, undefined) {
var context = arguments[2]
if (!isInitialized) {
context.href = element.getAttribute("href")
element.href = window.location.pathname + modes[m.route.mode] + context.href
element.href = (m.route.mode !== 'pathname' ? window.location.pathname : '') + modes[m.route.mode] + context.href
element.removeEventListener("click", routeUnobtrusive)
element.addEventListener("click", routeUnobtrusive)
}

View file

@ -238,8 +238,6 @@ test('node identity shuffle and remove', function() {
asyncTest('issue214 regression', function() {
// see https://github.com/lhorie/mithril.js/issues/214
// this test will pass using phantomjs, because phantomjs
// doesn't provide window.requestAnimationFrame
expect(2)
function controller() {
@ -328,8 +326,6 @@ asyncTest('issue214 regression', function() {
asyncTest('issue288 regression', function() {
// see https://github.com/lhorie/mithril.js/issues/288
// this test will pass using phantomjs, because phantomjs
// doesn't provide window.requestAnimationFrame
expect(2)
function controller() {
@ -365,3 +361,38 @@ asyncTest('issue288 regression', function() {
start()
})
})
test('issue278 regression', function() {
// see https://github.com/lhorie/mithril.js/issues/278
expect(1)
var test = {
controller: function() {
this.values = [1, 2, 3, 4, 5]
this.value = m.prop([2, 3])
},
view: function(ctrl) {
return m('select#testselect', {
size: ctrl.values.length,
multiple: 'multiple'
}, [
ctrl.values.map(function(v){
var opts = {value: v}
if (ctrl.value().indexOf(v) !== -1) opts.selected = 'selected'
return m('option', opts, v)
})
])
}
}
m.render(dummyEl, test.view(new test.controller))
var select = document.getElementById('testselect')
for (var i = 0, selected = 0; i < select.options.length; i++) {
if (select.options[i].selected) selected++
}
equal(selected, 2)
})

View file

@ -861,10 +861,20 @@ function testMithril(mock) {
var root = mock.document.createElement("div")
m.route.mode = "pathname"
m.route(root, "/test2", {
"/test2": {controller: function() {}, view: function() {return "foo"}}
"/test2": {
controller: function() {},
view: function() {
return [
"foo",
m("a", { href: "/test2", config: m.route }, "Test2")
]
}
}
})
mock.requestAnimationFrame.$resolve() //teardown
return mock.location.pathname == "/test2" && root.childNodes[0].nodeValue === "foo"
return mock.location.pathname == "/test2" &&
root.childNodes[0].nodeValue === "foo" &&
root.childNodes[1].href == "/test2"
})
test(function() {
mock.requestAnimationFrame.$resolve() //setup

View file

@ -38,7 +38,9 @@ mock.window = new function() {
},
getAttribute: function(name, value) {
return this[name]
}
},
addEventListener: function () {},
removeEventListener: function () {}
}
}
window.document.createElementNS = function(namespace, tag) {