diff --git a/test/_specs.dart b/test/_specs.dart index 093915edb..75d7906e6 100644 --- a/test/_specs.dart +++ b/test/_specs.dart @@ -25,24 +25,6 @@ es(String html) { e(String html) => es(html).first; -renderedText(n, [bool notShadow = false]) { - if (n is List) { - return n.map((nn) => renderedText(nn)).join(""); - } - - if (n is Comment) return ''; - - if (!notShadow && n is Element && n.shadowRoot != null) { - var shadowText = n.shadowRoot.text; - var domText = renderedText(n, true); - return shadowText.replaceFirst("SHADOW-CONTENT", domText); - } - - if (n.nodes == null || n.nodes.length == 0) return n.text; - - return n.nodes.map((cn) => renderedText(cn)).join(""); -} - Expect expect(actual, [unit.Matcher matcher = null]) { if (matcher != null) { unit.expect(actual, matcher); @@ -195,6 +177,24 @@ class JQuery extends DelegatingList { } } + _renderedText(n, [bool notShadow = false]) { + if (n is List) { + return n.map((nn) => _renderedText(nn)).join(""); + } + + if (n is Comment) return ''; + + if (!notShadow && n is Element && n.shadowRoot != null) { + var shadowText = n.shadowRoot.text; + var domText = _renderedText(n, true); + return shadowText.replaceFirst("SHADOW-CONTENT", domText); + } + + if (n.nodes == null || n.nodes.length == 0) return n.text; + + return n.nodes.map((cn) => _renderedText(cn)).join(""); + } + accessor(Function getter, Function setter, [value, single=false]) { // TODO(dart): ?value does not work, since value was passed. :-( var setterMode = value != null; @@ -229,7 +229,7 @@ class JQuery extends DelegatingList { (n, v) => getterSetter.setter(name)(n, v), null, true); - textWithShadow() => fold('', (t, n) => '${t}${renderedText(n)}'); + textWithShadow() => fold('', (t, n) => '${t}${_renderedText(n)}'); find(selector) => fold(new JQuery(), (jq, n) => jq..addAll( (n is Element ? (n as Element).querySelectorAll(selector) : []))); hasClass(String name) => fold(false, (hasClass, node) => diff --git a/test/_specs_spec.dart b/test/_specs_spec.dart index 2408d4847..9d4aec4bf 100644 --- a/test/_specs_spec.dart +++ b/test/_specs_spec.dart @@ -3,24 +3,7 @@ library _specs_spec; import '_specs.dart'; main() { - describe('renderedText', () { - it('should work on regular DOM nodes', () { - expect(renderedText($('ACB'))).toEqual('ACB'); - }); - - it('should work with shadow DOM', () { - var elt = $('
DOM content
'); - var shadow = elt[0].createShadowRoot(); - shadow.setInnerHtml( - '
Shadow content
SHADOW-CONTENT', - treeSanitizer: new NullTreeSanitizer()); - expect(renderedText(elt)).toEqual('Shadow contentDOM content'); - }); - it('should ignore comments', () { - expect(renderedText($('ACB'))).toEqual('ACB'); - }); - }); describe('jquery', () { @@ -59,5 +42,24 @@ main() { expect(elts.shadowRoot().html()).toEqual('
Hello shadow
'); }); }); + + describe('textWithShadow', () { + it('should work on regular DOM nodes', () { + expect($('ACB').textWithShadow()).toEqual('ACB'); + }); + + it('should work with shadow DOM', () { + var elt = $('
DOM content
'); + var shadow = elt[0].createShadowRoot(); + shadow.setInnerHtml( + '
Shadow content
SHADOW-CONTENT', + treeSanitizer: new NullTreeSanitizer()); + expect(elt.textWithShadow()).toEqual('Shadow contentDOM content'); + }); + + it('should ignore comments', () { + expect($('ACB').textWithShadow()).toEqual('ACB'); + }); + }); }); } diff --git a/test/core_dom/compiler_spec.dart b/test/core_dom/compiler_spec.dart index 5b35e00f8..54e9b9d30 100644 --- a/test/core_dom/compiler_spec.dart +++ b/test/core_dom/compiler_spec.dart @@ -253,7 +253,7 @@ void main() { microLeap(); _.rootScope.apply(); - expect(renderedText(element)).toEqual('inside poof'); + expect(element.textWithShadow()).toEqual('inside poof'); })); it('should behave nicely if a mapped attribute is missing', async((NgZone zone) { @@ -261,7 +261,7 @@ void main() { microLeap(); _.rootScope.apply(); - expect(renderedText(element)).toEqual('inside '); + expect(element.textWithShadow()).toEqual('inside '); })); it('should behave nicely if a mapped attribute evals to null', async((NgZone zone) { @@ -270,7 +270,7 @@ void main() { microLeap(); _.rootScope.apply(); - expect(renderedText(element)).toEqual('inside '); + expect(element.textWithShadow()).toEqual('inside '); })); it('should create a component with I/O', async(() {