Index: test/paper_dropdown_menu_test.dart |
diff --git a/test/paper_dropdown_menu_test.dart b/test/paper_dropdown_menu_test.dart |
index 5ab70757bb1ceef041b2040f6f47f57bec6f5664..164850e4daef23b9ff736970dbc7acdbcdff26ca 100644 |
--- a/test/paper_dropdown_menu_test.dart |
+++ b/test/paper_dropdown_menu_test.dart |
@@ -75,5 +75,58 @@ main() async { |
expect(dropdownMenu.selectedItem, secondItem); |
}); |
}); |
+ |
+ group('deselecting', () { |
+ var menu; |
+ |
+ setUp(() { |
+ dropdownMenu = fixture('PreselectedDropdownMenu'); |
+ menu = Polymer.dom(dropdownMenu).querySelector('.dropdown-content'); |
+ }); |
+ |
+ test('an `iron-deselect` event clears the current selection', () { |
+ menu.selected = null; |
+ expect(dropdownMenu.selectedItem, null); |
+ }); |
+ }); |
+ |
+ group('validation', () { |
+ var menu; |
+ |
+ test('a non required dropdown is valid regardless of its selection', () { |
+ PaperDropdownMenu dropdownMenu = fixture('TrivialDropdownMenu'); |
+ menu = Polymer.dom(dropdownMenu).querySelector('.dropdown-content'); |
+ |
+ // no selection. |
+ expect(dropdownMenu.validate(null), isTrue); |
+ expect(dropdownMenu.invalid, isFalse); |
+ expect(dropdownMenu.value, isNull); |
+ |
+ // some selection. |
+ menu.selected = 1; |
+ expect(dropdownMenu.validate(null), isTrue); |
+ expect(dropdownMenu.invalid, isFalse); |
+ expect(dropdownMenu.value, 'Bar'); |
+ }); |
+ |
+ test('a required dropdown is invalid without a selection', () { |
+ PaperDropdownMenu dropdownMenu = fixture('TrivialDropdownMenu'); |
+ dropdownMenu.required = true; |
+ |
+ // no selection. |
+ expect(dropdownMenu.validate(null), isFalse); |
+ expect(dropdownMenu.invalid, isTrue); |
+ expect(dropdownMenu.value, isNull); |
+ }); |
+ |
+ test('a required dropdown is valid with a selection', () { |
+ PaperDropdownMenu dropdownMenu = fixture('PreselectedDropdownMenu'); |
+ dropdownMenu.required = true; |
+ |
+ expect(dropdownMenu.validate(null), isTrue); |
+ expect(dropdownMenu.invalid, isFalse); |
+ expect(dropdownMenu.value, 'Bar'); |
+ }); |
+ }); |
}); |
} |