diff --git a/lib/mock/test_bed.dart b/lib/mock/test_bed.dart index d1c54da81..ccefe3fac 100644 --- a/lib/mock/test_bed.dart +++ b/lib/mock/test_bed.dart @@ -54,12 +54,23 @@ class TestBed { return rootElement; } + String _handleWhitespace(html) { + return html + .split('\n') + .map((line) { + var trimmed = line.trim(); + return trimmed + + (trimmed.isEmpty || trimmed.endsWith('>') ? '' : ' '); + }) + .join(); + } /** * Convert an [html] String to a [List] of [Element]s. */ 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); diff --git a/test/mock/test_bed_spec.dart b/test/mock/test_bed_spec.dart index 661c5f4ac..5c1ea4276 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.runtimeType).toBe(DivElement); + expect(_.rootElements[1].runtimeType).toBe(SpanElement); + expect(_.rootElements.length).toBe(2); + }); + }); }