| OLD | NEW |
| 1 <sky> | 1 <sky> |
| 2 <import src="/sky/tests//resources/chai.sky" /> | 2 <import src="/sky/tests//resources/chai.sky" /> |
| 3 <import src="/sky/tests/resources/mocha.sky" /> | 3 <import src="/sky/tests/resources/mocha.sky" /> |
| 4 <import src="/sky/tests/resources/test-element.sky" as="TestElement" /> | 4 <import src="/sky/tests/resources/test-element.sky" as="TestElement" /> |
| 5 | 5 |
| 6 <div id="sandbox"></div> | 6 <div id="sandbox"></div> |
| 7 | 7 |
| 8 <test-element id="parser-element" checked="true" size="10" name="foo bar" /> |
| 9 |
| 8 <script> | 10 <script> |
| 9 describe("SkyElement templates", function() { | 11 describe("SkyElement", function() { |
| 10 var element; | 12 var element; |
| 11 var sandbox = document.getElementById("sandbox"); | 13 var sandbox = document.getElementById("sandbox"); |
| 12 | 14 |
| 13 beforeEach(function() { | 15 beforeEach(function() { |
| 14 element = new TestElement(); | 16 element = new TestElement(); |
| 15 }); | 17 }); |
| 16 afterEach(function() { | 18 afterEach(function() { |
| 17 element.remove(); | 19 element.remove(); |
| 18 }); | 20 }); |
| 19 | 21 |
| 20 it("should stamp when the element is inserted", function() { | 22 it("should stamp when the element is inserted", function() { |
| 21 assert.isNull(element.shadowRoot); | 23 assert.isNull(element.shadowRoot); |
| 22 sandbox.appendChild(element); | 24 sandbox.appendChild(element); |
| 23 assert.instanceOf(element.shadowRoot, ShadowRoot); | 25 assert.instanceOf(element.shadowRoot, ShadowRoot); |
| 24 assert.ok(element.shadowRoot.getElementById("inside")); | 26 assert.ok(element.shadowRoot.getElementById("inside")); |
| 25 }); | 27 }); |
| 26 | 28 |
| 27 it("should update isAttached when inserting", function() { | 29 it("should update isAttached when inserting", function() { |
| 28 assert.isFalse(element.isAttached); | 30 assert.isFalse(element.isAttached); |
| 29 sandbox.appendChild(element); | 31 sandbox.appendChild(element); |
| 30 assert.isTrue(element.isAttached); | 32 assert.isTrue(element.isAttached); |
| 31 element.remove(); | 33 element.remove(); |
| 32 assert.isFalse(element.isAttached); | 34 assert.isFalse(element.isAttached); |
| 33 }); | 35 }); |
| 34 | 36 |
| 37 it("should handle parser created elements with attributes", function() { |
| 38 var element = document.getElementById("parser-element"); |
| 39 assert.isTrue(element.checked); |
| 40 assert.isNumber(element.size); |
| 41 assert.equal(element.size, 10); |
| 42 assert.isString(element.name); |
| 43 assert.equal(element.name, "foo bar"); |
| 44 }); |
| 45 |
| 46 it("should have defaults for all attributes", function() { |
| 47 var element = new TestElement(); |
| 48 assert.isFalse(element.checked); |
| 49 assert.isNumber(element.size); |
| 50 assert.equal(element.size, 0); |
| 51 assert.isString(element.name); |
| 52 assert.equal(element.name, ""); |
| 53 }); |
| 54 |
| 55 it("should call change callbacks", function() { |
| 56 var element = new TestElement(); |
| 57 element.size = 20; |
| 58 element.name = "first name"; |
| 59 element.checked = true; |
| 60 element.size = 10; |
| 61 element.name = "second name"; |
| 62 assert.deepEqual(element.changes, [ |
| 63 { name: 'size', oldValue: 0, newValue: 20 }, |
| 64 { name: 'name', oldValue: "", newValue: "first name" }, |
| 65 { name: 'checked', oldValue: false, newValue: true }, |
| 66 { name: 'size', oldValue: 20, newValue: 10 }, |
| 67 { name: 'name', oldValue: "first name", newValue: "second name" }, |
| 68 ]); |
| 69 }); |
| 70 |
| 71 it("should convert boolean reflected attributes", function() { |
| 72 var element = new TestElement(); |
| 73 assert.isFalse(element.checked); |
| 74 element.checked = null; |
| 75 assert.isFalse(element.checked); |
| 76 element.checked = "true"; |
| 77 assert.isTrue(element.checked); |
| 78 element.checked = "false"; |
| 79 assert.isFalse(element.checked); |
| 80 element.checked = {}; |
| 81 assert.isTrue(element.checked); |
| 82 }); |
| 83 |
| 84 it("should convert string reflected attributes", function() { |
| 85 var element = new TestElement(); |
| 86 assert.equal(element.name, ""); |
| 87 element.name = null; |
| 88 assert.equal(element.name, ""); |
| 89 element.name = [1, 2]; |
| 90 assert.equal(element.name, "1,2"); |
| 91 element.name = false; |
| 92 assert.equal(element.name, "false"); |
| 93 element.name = {}; |
| 94 assert.equal(element.name, "[object Object]"); |
| 95 element.name = ""; |
| 96 assert.equal(element.name, ""); |
| 97 }); |
| 98 |
| 99 it("should convert number reflected attributes", function() { |
| 100 var element = new TestElement(); |
| 101 assert.isNumber(element.size); |
| 102 element.size = 20; |
| 103 assert.isNumber(element.size); |
| 104 assert.equal(element.size, 20); |
| 105 element.size = "08"; |
| 106 assert.equal(element.size, 8); |
| 107 element.size = " 30 "; |
| 108 assert.equal(element.size, 30); |
| 109 element.size = "1.5"; |
| 110 assert.isNumber(element.size); |
| 111 assert.equal(element.size, 1.5); |
| 112 element.size = "false"; |
| 113 assert.isTrue(isNaN(element.size)); |
| 114 element.size = {}; |
| 115 assert.isTrue(isNaN(element.size)); |
| 116 }); |
| 117 |
| 35 it("should connect data binding", function(done) { | 118 it("should connect data binding", function(done) { |
| 36 sandbox.appendChild(element); | 119 sandbox.appendChild(element); |
| 37 var inside = element.shadowRoot.getElementById("inside"); | 120 var inside = element.shadowRoot.getElementById("inside"); |
| 38 Promise.resolve().then(function() { | 121 Promise.resolve().then(function() { |
| 39 assert.equal(inside.textContent, 10); | 122 assert.equal(inside.textContent, 10); |
| 40 assert.equal(inside.attr, 10); | 123 assert.equal(inside.attr, 10); |
| 41 element.value = 20; | 124 element.value = 20; |
| 42 }).then(function() { | 125 }).then(function() { |
| 43 assert.equal(inside.textContent, 20); | 126 assert.equal(inside.textContent, 20); |
| 44 assert.equal(inside.attr, 20); | 127 assert.equal(inside.attr, 20); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 62 assert.equal(element.shadowRootReadyCount, 0); | 145 assert.equal(element.shadowRootReadyCount, 0); |
| 63 sandbox.appendChild(element); | 146 sandbox.appendChild(element); |
| 64 assert.equal(element.shadowRootReadyCount, 1); | 147 assert.equal(element.shadowRootReadyCount, 1); |
| 65 element.remove(); | 148 element.remove(); |
| 66 sandbox.appendChild(element); | 149 sandbox.appendChild(element); |
| 67 assert.equal(element.shadowRootReadyCount, 1); | 150 assert.equal(element.shadowRootReadyCount, 1); |
| 68 }); | 151 }); |
| 69 }); | 152 }); |
| 70 </script> | 153 </script> |
| 71 </sky> | 154 </sky> |
| OLD | NEW |