Fixes #551 - <Select> is not working properly

This commit is contained in:
Patrick Steele-Idem 2017-01-28 12:55:50 -07:00
parent eb7fe13474
commit b9871ae422
16 changed files with 78 additions and 5 deletions

View File

@ -172,7 +172,8 @@ VElement.prototype = {
// We don't care about the namespaces since the there // We don't care about the namespaces since the there
// is no chance that attributes with the same name will have // is no chance that attributes with the same name will have
// different namespaces // different namespaces
return this.$__attributes[name] !== undefined; var value = this.$__attributes[name];
return value != null && value !== false;
}, },
getAttribute: function(name) { getAttribute: function(name) {

View File

@ -0,0 +1 @@
<OPTION selected="">

View File

@ -0,0 +1,9 @@
var expect = require('chai').expect;
module.exports = function(helpers) {
var virtualEl = helpers.vdom.createElement('option', { selected: '' });
expect(virtualEl.hasAttributeNS(null, 'selected')).to.equal(true);
return virtualEl.actualize(helpers.document);
};

View File

@ -0,0 +1 @@
<OPTION>

View File

@ -0,0 +1,9 @@
var expect = require('chai').expect;
module.exports = function(helpers) {
var virtualEl = helpers.vdom.createElement('option', { selected: false });
expect(virtualEl.hasAttributeNS(null, 'selected')).to.equal(false);
return virtualEl.actualize(helpers.document);
};

View File

@ -0,0 +1 @@
<OPTION>

View File

@ -0,0 +1,9 @@
var expect = require('chai').expect;
module.exports = function(helpers) {
var virtualEl = helpers.vdom.createElement('option', { selected: null });
expect(virtualEl.hasAttributeNS(null, 'selected')).to.equal(false);
return virtualEl.actualize(helpers.document);
};

View File

@ -0,0 +1 @@
<OPTION selected="0">

View File

@ -0,0 +1,9 @@
var expect = require('chai').expect;
module.exports = function(helpers) {
var virtualEl = helpers.vdom.createElement('option', { selected: 0 });
expect(virtualEl.hasAttributeNS(null, 'selected')).to.equal(true);
return virtualEl.actualize(helpers.document);
};

View File

@ -0,0 +1 @@
<OPTION selected="1">

View File

@ -0,0 +1,9 @@
var expect = require('chai').expect;
module.exports = function(helpers) {
var virtualEl = helpers.vdom.createElement('option', { selected: 1 });
expect(virtualEl.hasAttributeNS(null, 'selected')).to.equal(true);
return virtualEl.actualize(helpers.document);
};

View File

@ -0,0 +1 @@
<OPTION selected="">

View File

@ -0,0 +1,9 @@
var expect = require('chai').expect;
module.exports = function(helpers) {
var virtualEl = helpers.vdom.createElement('option', { selected: true });
expect(virtualEl.hasAttributeNS(null, 'selected')).to.equal(true);
return virtualEl.actualize(helpers.document);
};

View File

@ -0,0 +1 @@
<OPTION>

View File

@ -0,0 +1,9 @@
var expect = require('chai').expect;
module.exports = function(helpers) {
var virtualEl = helpers.vdom.createElement('option', { selected: undefined });
expect(virtualEl.hasAttributeNS(null, 'selected')).to.equal(false);
return virtualEl.actualize(helpers.document);
};

View File

@ -6,10 +6,12 @@ var toHTML = require('./util/toHTML');
var jsdom = require("jsdom").jsdom; var jsdom = require("jsdom").jsdom;
var document = jsdom('<html><body></body></html>'); var document = jsdom('<html><body></body></html>');
var VElement = require('../runtime/vdom/VElement'); var vdom = require('../runtime/vdom/vdom');
var VText = require('../runtime/vdom/VText'); var VElement = vdom.$__VElement;
var VComment = require('../runtime/vdom/VComment'); var VText = vdom.$__VText;
var VDocumentFragment = require('../runtime/vdom/VDocumentFragment'); var VComment = vdom.$__VComment;
var VDocumentFragment = vdom.$__VDocumentFragment;
var vdomHelpers = { var vdomHelpers = {
createElement: function(tagName, attrs, childCount, constId) { createElement: function(tagName, attrs, childCount, constId) {