From 7c23c4edd5999a8b213cad4694daf0977f82cc6f Mon Sep 17 00:00:00 2001 From: Jare Fagbemi Date: Wed, 13 Aug 2014 10:14:57 -0400 Subject: [PATCH] feat(TestBed): add whitespace handling to compile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add whitespace handling to the TestBed’s compile function. Closes #1262. Previously, strings passed with leading or trailing whitespace would be compiled incorrectly. Now, valid HTML with arbitrary whitespace in and surrounding it can be compiled properly. Closes #1346 --- lib/mock/test_bed.dart | 11 ++++++++++- test/mock/test_bed_spec.dart | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/mock/test_bed.dart b/lib/mock/test_bed.dart index 616bd235b..0244070a7 100644 --- a/lib/mock/test_bed.dart +++ b/lib/mock/test_bed.dart @@ -61,7 +61,8 @@ class TestBed { */ List toNodeList(html) { var div = new DivElement(); - div.setInnerHtml(html, treeSanitizer: new NullTreeSanitizer()); + var sanitizedHtml = _handleWhitespace(html); + div.setInnerHtml(sanitizedHtml, treeSanitizer: new NullTreeSanitizer()); var nodes = []; for (var node in div.nodes) { nodes.add(node); @@ -99,4 +100,12 @@ class TestBed { } getScope(Node node) => getProbe(node).scope; + + String _handleWhitespace(html) { + return html.split('\n') + .map((line) { + var trimmed = line.trim(); + return trimmed + (trimmed.isEmpty || trimmed.endsWith('>') ? '' : ' ');}) + .join(); + } } diff --git a/test/mock/test_bed_spec.dart b/test/mock/test_bed_spec.dart index 661c5f4ac..d19f26795 100644 --- a/test/mock/test_bed_spec.dart +++ b/test/mock/test_bed_spec.dart @@ -27,6 +27,24 @@ void main() { expect(directiveInst.destroyed).toBe(true); }); + it('should handle whitespace cleanly', () { + var root = _.compile(''' +
+

+

+
+ + '''); + + expect(root).toBeAnInstanceOf(DivElement); + expect(_.rootElements[1]).toBeAnInstanceOf(SpanElement); + expect(_.rootElements.length).toBe(2); + }); + }); }