Skip to content

Commit e7ad8bb

Browse files
committed
Add test for selection.insert.
1 parent c88d9d1 commit e7ad8bb

1 file changed

Lines changed: 122 additions & 0 deletions

File tree

test/core/selection-insert-test.js

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
require("../env");
2+
require("../../d3");
3+
4+
var vows = require("vows"),
5+
assert = require("assert");
6+
7+
var suite = vows.describe("selection.insert");
8+
9+
suite.addBatch({
10+
"select(body)": {
11+
topic: function() {
12+
return d3.select("body").html("");
13+
},
14+
"inserts before the specified selector": function(body) {
15+
var span = body.html("").append("span");
16+
var div = body.insert("div", "span");
17+
assert.equal(div[0][0].tagName, "DIV");
18+
assert.isNull(div[0][0].namespaceURI);
19+
assert.domEqual(div[0][0], document.body.firstChild);
20+
assert.domEqual(div[0][0].nextSibling, span[0][0]);
21+
},
22+
"appends an HTML element": function(body) {
23+
var div = body.insert("div");
24+
assert.equal(div[0][0].tagName, "DIV");
25+
assert.isNull(div[0][0].namespaceURI);
26+
assert.domEqual(div[0][0], document.body.lastChild);
27+
},
28+
"appends an SVG element": function(body) {
29+
var svg = body.insert("svg:svg");
30+
assert.equal(svg[0][0].tagName, "SVG");
31+
assert.equal(svg[0][0].namespaceURI, "http://www.w3.org/2000/svg");
32+
assert.domEqual(svg[0][0].parentNode, document.body);
33+
assert.domEqual(svg[0][0], document.body.lastChild);
34+
},
35+
"propagates data to new element": function(body) {
36+
var data = new Object(), div = body.data([data]).insert("div");
37+
assert.strictEqual(div[0][0].__data__, data);
38+
}
39+
}
40+
});
41+
42+
suite.addBatch({
43+
"selectAll(div)": {
44+
topic: function() {
45+
return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().insert("div");
46+
},
47+
"appends an HTML element": function(div) {
48+
var span = div.insert("span");
49+
assert.equal(span[0].length, 2);
50+
assert.equal(span[0][0].tagName, "SPAN");
51+
assert.equal(span[0][1].tagName, "SPAN");
52+
assert.isNull(span[0][0].namespaceURI);
53+
assert.isNull(span[0][1].namespaceURI);
54+
assert.domEqual(span[0][0].parentNode, div[0][0]);
55+
assert.domEqual(span[0][1].parentNode, div[0][1]);
56+
assert.domEqual(div[0][0].lastChild, span[0][0]);
57+
assert.domEqual(div[0][1].lastChild, span[0][1]);
58+
},
59+
"appends an SVG element": function(div) {
60+
var svg = div.insert("svg:svg");
61+
assert.equal(svg[0].length, 2);
62+
assert.equal(svg[0][0].tagName, "SVG");
63+
assert.equal(svg[0][1].tagName, "SVG");
64+
assert.equal(svg[0][0].namespaceURI, "http://www.w3.org/2000/svg");
65+
assert.equal(svg[0][1].namespaceURI, "http://www.w3.org/2000/svg");
66+
assert.domEqual(svg[0][0].parentNode, div[0][0]);
67+
assert.domEqual(svg[0][1].parentNode, div[0][1]);
68+
assert.domEqual(div[0][0].lastChild, svg[0][0]);
69+
assert.domEqual(div[0][1].lastChild, svg[0][1]);
70+
},
71+
"ignores null nodes": function(div) {
72+
div.html("");
73+
var some = d3.selectAll("div");
74+
some[0][1] = null;
75+
var span = some.insert("span");
76+
assert.equal(span[0].length, 2);
77+
assert.equal(span[0][0].tagName, "SPAN");
78+
assert.domNull(span[0][1]);
79+
assert.domEqual(span[0][0].parentNode, div[0][0]);
80+
assert.domEqual(div[0][0].lastChild, span[0][0]);
81+
assert.domNull(div[0][1].lastChild);
82+
},
83+
"propagates data to new elements": function(div) {
84+
var a = new Object(), b = new Object(), span = div.data([a, b]).insert("span");
85+
assert.strictEqual(span[0][0].__data__, a);
86+
assert.strictEqual(span[0][1].__data__, b);
87+
}
88+
}
89+
});
90+
91+
suite.addBatch({
92+
"selectAll(div).data(…).enter()": {
93+
topic: function() {
94+
return d3.select("body");
95+
},
96+
"inserts before the specified selector": function(body) {
97+
var span = body.html("").append("span");
98+
var div = body.selectAll("div").data(d3.range(2)).enter().insert("div", "span");
99+
assert.equal(div.length, 1);
100+
assert.equal(div[0].length, 2);
101+
assert.domEqual(div[0][0], document.body.firstChild);
102+
assert.domEqual(div[0][1].previousSibling, div[0][0]);
103+
assert.domEqual(div[0][1].nextSibling, span[0][0]);
104+
},
105+
"propagates data to new elements": function(body) {
106+
var a = new Object(), b = new Object(), div = body.html("").selectAll("div").data([a, b]).enter().insert("div");
107+
assert.strictEqual(div[0][0].__data__, a);
108+
assert.strictEqual(div[0][1].__data__, b);
109+
},
110+
"ignores null nodes": function(body) {
111+
body.html("").insert("div");
112+
var div = body.selectAll("div").data(d3.range(3)).enter().insert("div");
113+
assert.equal(div.length, 1);
114+
assert.equal(div[0].length, 3);
115+
assert.domNull(div[0][0]);
116+
assert.domEqual(div[0][1].parentNode, document.body);
117+
assert.domEqual(div[0][2].parentNode, document.body);
118+
}
119+
}
120+
});
121+
122+
suite.export(module);

0 commit comments

Comments
 (0)