4 <title>polymer-selector-basic</title>
5 <script src="../../../platform/platform.js"></script>
6 <script src="../../../tools/test/htmltest.js"></script>
7 <script src="../../../tools/test/chai/chai.js"></script>
8 <link rel="import" href="../../polymer-selector.html">
21 <polymer-selector id="selector1">
31 <polymer-selector id="selector2" selected="item3" selectedClass="my-selected" valueattr="id">
32 <div id="item1">Item 1</div>
33 <div id="item2">Item 2</div>
34 <div id="item3">Item 3</div>
35 <div id="item4">Item 4</div>
36 <div id="item5">Item 5</div>
40 var assert = chai.assert;
41 var async = requestAnimationFrame;
43 function oneMutation(node, options, cb) {
44 var o = new MutationObserver(function() {
48 o.observe(node, options);
51 document.addEventListener('polymer-ready', function() {
53 var s = document.querySelector('#selector1');
54 assert.equal(s.selected, null);
55 assert.equal(s.selectedClass, 'polymer-selected');
56 assert.isFalse(s.multi);
57 assert.equal(s.valueattr, 'name');
58 assert.equal(s.items.length, 5);
60 s = document.querySelector('#selector2');
61 assert.equal(s.selected, "item3");
62 assert.equal(s.selectedClass, 'my-selected');
63 // setup listener for polymer-select event
64 var selectEventCounter = 0;
65 s.addEventListener('polymer-select', function(e) {
66 if (e.detail.isSelected) {
68 // selectedItem and detail.item should be the same
69 assert.equal(e.detail.item, s.selectedItem);
75 oneMutation(s, {attributes: true}, function() {
76 // check polymer-select event
77 assert.equal(selectEventCounter, 1);
78 // check selected class
79 assert.isTrue(s.children[4].classList.contains('my-selected'));
81 assert.equal(s.selectedItem, s.children[4]);
82 // selecting the same value shouldn't fire polymer-select
83 selectEventCounter = 0;
86 // TODO(ffu): would be better to wait for something to happen
87 // instead of not to happen
88 setTimeout(function() {
89 assert.equal(selectEventCounter, 0);