Index: test/iron_iconset_svg_test.dart |
diff --git a/test/iron_iconset_svg_test.dart b/test/iron_iconset_svg_test.dart |
index 5d2fa2aaeccec4e84f6c945a66a195cdefff7985..c92a2ba18202b3dc50e03532ef6b1be05676cf66 100644 |
--- a/test/iron_iconset_svg_test.dart |
+++ b/test/iron_iconset_svg_test.dart |
@@ -4,7 +4,10 @@ |
@TestOn('browser') |
library polymer_elements.test.iron_iconset_svg_test; |
+import 'dart:html'; |
+import 'package:polymer_interop/polymer_interop.dart'; |
import 'package:polymer_elements/iron_iconset_svg.dart'; |
+import 'package:polymer_elements/iron_meta.dart'; |
import 'package:test/test.dart'; |
import 'package:web_components/web_components.dart'; |
import 'common.dart'; |
@@ -15,8 +18,8 @@ main() async { |
group('<iron-iconset>', () { |
group('basic behavior', () { |
- var iconset; |
- var meta; |
+ IronIconsetSvg iconset; |
+ IronMeta meta; |
setUp(() { |
var elements = fixture('TrivialIconsetSvg'); |
@@ -27,9 +30,24 @@ main() async { |
test('it can be accessed via iron-meta', () { |
expect(meta.byKey('foo'), iconset); |
}); |
+ |
+ test('it does not have a size', () { |
+ var rect = iconset.getBoundingClientRect(); |
+ expect(rect.width, 0); |
+ expect(rect.height, 0); |
+ }); |
+ |
+ test('it fires an iron-iconset-added event on the window', () { |
+ return window.on['iron-iconset-added'].first.then((ev) { |
+ ev = convertToDart(ev); |
+ expect(ev, isNotNull); |
+ expect(ev.detail, iconset); |
+ }); |
+ }); |
}); |
+ |
group('when paired with a size and SVG definition', () { |
- var iconset; |
+ IronIconsetSvg iconset; |
var div; |
setUp(() { |
@@ -38,6 +56,12 @@ main() async { |
div = elements[1]; |
}); |
+ test('it does not have a size', () { |
+ var rect = iconset.getBoundingClientRect(); |
+ expect(rect.width, 0); |
+ expect(rect.height, 0); |
+ }); |
+ |
test('appends a child to the target element', () { |
expect(div.children.length, 0); |
iconset.applyIcon(div, 'circle'); |
@@ -45,7 +69,8 @@ main() async { |
}); |
test('can be queried for all available icons', () { |
- expect(iconset.getIconNames(), ['my-icons:circle', 'my-icons:square']); |
+ expect(iconset.getIconNames(), |
+ ['my-icons:circle', 'my-icons:square', 'my-icons:rect']); |
}); |
test('supports any icon defined in the svg', () { |
@@ -56,6 +81,17 @@ main() async { |
lastSvgIcon = div.children.first; |
}); |
}); |
+ |
+ test('prefers a viewBox attribute over the iconset size', () { |
+ iconset.applyIcon(div, 'rect'); |
+ expect(div.children.first.getAttribute('viewBox'), '0 0 50 25'); |
+ }); |
+ |
+ test('uses the iconset size when viewBox is not defined on the element', |
+ () { |
+ iconset.applyIcon(div, 'circle'); |
+ expect(div.children.first.getAttribute('viewBox'), '0 0 20 20'); |
+ }); |
}); |
}); |
} |