Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(435)

Side by Side Diff: sky/tests/framework/templates.sky

Issue 836923002: Automate reflected properties in SkyElement. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: moar single quotes Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/framework/sky-radio/sky-radio.sky ('k') | sky/tests/framework/templates-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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>
OLDNEW
« no previous file with comments | « sky/framework/sky-radio/sky-radio.sky ('k') | sky/tests/framework/templates-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698