4 <title>polymer-selector-multi</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">
17 <polymer-selector id="selector" multi>
26 var assert = chai.assert;
28 function oneMutation(node, options, cb) {
29 var o = new MutationObserver(function() {
33 o.observe(node, options);
36 document.addEventListener('polymer-ready', function() {
38 var s = document.querySelector('#selector');
39 assert.equal(s.selected, null);
40 assert.equal(s.selectedClass, 'polymer-selected');
41 assert.isTrue(s.multi);
42 assert.equal(s.valueattr, 'name');
43 assert.equal(s.items.length, 5);
44 // setup listener for polymer-select event
45 var selectEventCounter = 0;
46 s.addEventListener('polymer-select', function(e) {
47 if (e.detail.isSelected) {
52 // check selectedItem in polymer-select event
53 assert.equal(this.selectedItem.length, selectEventCounter);
58 oneMutation(s, {attributes: true}, function() {
59 // check polymer-select event
60 assert.equal(selectEventCounter, 2);
61 // check selected class
62 assert.isTrue(s.children[0].classList.contains('polymer-selected'));
63 assert.isTrue(s.children[2].classList.contains('polymer-selected'));
65 assert.equal(s.selectedItem.length, 2);
66 assert.equal(s.selectedItem[0], s.children[0]);
67 assert.equal(s.selectedItem[1], s.children[2]);
68 // tap on already selected element should unselect it
69 s.children[0].dispatchEvent(new CustomEvent('tap', {bubbles: true}));
71 assert.equal(s.selected.length, 1);
72 assert.isFalse(s.children[0].classList.contains('polymer-selected'));