blob: 5eb7a8ec96efaaad5a99438f586bbb1e07e44518 [file] [log] [blame]
<sky>
<import src="../resources/chai.sky" />
<import src="../resources/mocha.sky" />
<script>
describe("ownerScope", function() {
it("should return null for elements not a child of a scope", function() {
var doc = new Document();
var element = doc.createElement("div");
assert.isNull(element.ownerScope);
});
it("should return the document for elements in the document scope", function() {
var doc = new Document();
var element = doc.createElement("div");
doc.appendChild(element);
assert.equal(element.ownerScope, element.ownerDocument);
assert.equal(element.ownerScope, doc);
});
it("should return the shadow root for elements in the shadow root scope", function() {
var doc = new Document();
var host = doc.createElement("div");
var child = doc.createElement("div");
var shadowRoot = host.ensureShadowRoot();
shadowRoot.appendChild(child);
assert.equal(child.ownerScope, shadowRoot);
});
it("should return self for a shadow root or document", function() {
var doc = new Document();
var host = doc.createElement("div");
doc.appendChild(host);
var shadowRoot = host.ensureShadowRoot();
assert.equal(shadowRoot.ownerScope, shadowRoot);
assert.equal(doc.ownerScope, doc);
});
it("should dynamically update", function() {
var doc = new Document();
var host = doc.createElement("div");
var child = doc.createElement("div");
var shadowRoot = host.ensureShadowRoot();
assert.equal(child.ownerScope, null);
shadowRoot.appendChild(child);
assert.equal(child.ownerScope, shadowRoot);
child.remove();
assert.equal(child.ownerScope, null);
});
});
</script>
</sky>