describe('Events', function() { describe('focus', function() { it('should work as expected', function(done) { var test = setup_test('', {}); var counter = 0; test.selectize.on('focus', function() { counter++; }); test.selectize.focus(); syn.click(test.selectize.$control).delay(0, function() { window.setTimeout(function() { expect(counter).to.be.equal(1); done(); }, 0); }); }); }); describe('blur', function() { it('should work as expected', function(done) { var test = setup_test('', {}); var counter = 0; test.selectize.on('blur', function() { counter++; }); test.selectize.focus(); syn.click(test.selectize.$control).delay(0, function() { syn.click($('body')).delay(0, function() { window.setTimeout(function() { expect(counter).to.be.equal(1); done(); }, 0); }); }); }); }); describe('change', function() { it('should be triggered once', function(done) { var test = setup_test('', {}); var counter = 0; test.selectize.on('change', function() { counter++; }); test.selectize.setValue('b'); window.setTimeout(function() { expect(counter).to.be.equal(1); done(); }, 0); }); it('should contain current value', function(done) { var test = setup_test('', {}); test.selectize.on('change', function(value) { expect(value).to.be.equal('c'); done(); }); test.selectize.setValue('c'); }); it('should not be triggered when the selected item has not changed', function(done) { var test = setup_test(''); var counter = 0; test.$select.on('change', function() { counter++; }); syn.click(test.selectize.$control).delay(0, function() { syn .click($('[data-value="a"]', test.selectize.$dropdown)) .delay(0, function() { expect(counter).to.be.equal(0); done(); }); }); }); }); describe('item_add', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('item_add', function() { done(); }); test.selectize.addItem('b'); }); it('should contain item\'s value and element', function(done) { var test = setup_test('', {}); test.selectize.on('item_add', function(value, $item) { expect(value).to.be.equal('b'); assert.equal($item.length, 1); done(); }); test.selectize.addItem('b'); }); }); describe('item_remove', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('item_remove', function() { done(); }); test.selectize.removeItem('a'); }); it('should contain item\'s value and element', function(done) { var test = setup_test('', {}); test.selectize.on('item_remove', function(value, $item) { expect(value).to.be.equal('b'); assert.equal($item.length, 1); done(); }); test.selectize.removeItem('b'); }); }); describe('clear', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('clear', function() { done(); }); test.selectize.clear(); }); }); describe('optgroup_add', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('optgroup_add', function() { done(); }); test.selectize.addOptionGroup('id', {label: 'Group'}); }); it('should contain optgroup id', function(done) { var test = setup_test('', {}); test.selectize.on('optgroup_add', function(id, data) { expect(id).to.be.equal('id'); done(); }); test.selectize.addOptionGroup('id', {label: 'Group'}); }); it('should contain outgroup data', function(done) { var test = setup_test('', {}); var optgroup = {label: 'Group'}; test.selectize.on('optgroup_add', function(id, data) { expect(data).to.eql(optgroup); done(); }); test.selectize.addOptionGroup('id', optgroup); }); }); describe('optgroup_remove', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('optgroup_remove', function(id) { expect(id).to.be.equal('id'); done(); }); test.selectize.addOptionGroup('id', {label: 'Group'}); test.selectize.removeOptionGroup('id'); }); }); describe('optgroup_clear', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('optgroup_clear', function() { done(); }); test.selectize.addOptionGroup('id', {label: 'Group'}); test.selectize.clearOptionGroups(); }); }); describe('option_add', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('option_add', function() { done(); }); test.selectize.addOption({value: 'e'}); }); it('should contain option value', function(done) { var test = setup_test('', {}); test.selectize.on('option_add', function(value, data) { expect(value).to.be.equal('e'); done(); }); test.selectize.addOption({value: 'e'}); }); it('should contain option data', function(done) { var test = setup_test('', {}); var option = {value: 'e'}; test.selectize.on('option_add', function(value, data) { expect(option).to.eql(data); done(); }); test.selectize.addOption(option); }); }); describe('option_remove', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('option_remove', function() { done(); }); test.selectize.removeOption('a'); }); it('should contain option value', function(done) { var test = setup_test('', {}); test.selectize.on('option_remove', function(value) { expect(value).to.be.equal('a'); done(); }); test.selectize.removeOption('a'); }); }); describe('option_clear', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('option_clear', function() { done(); }); test.selectize.clearOptions(); }); }); describe('dropdown_open', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('dropdown_open', function() { done(); }); test.selectize.open(); }); }); describe('dropdown_close', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('dropdown_close', function() { done(); }); test.selectize.open(); test.selectize.close(); }); }); describe('destroy', function() { it('should be triggered', function(done) { var test = setup_test('', {}); test.selectize.on('destroy', function() { done(); }); test.selectize.destroy(); }); }); describe('type', function() { it('should be triggered', function(done) { var test = setup_test('', {create: true}); test.selectize.on('type', function() { done(); }); syn.click(test.selectize.$control).type('a', test.selectize.$control_input); }); it('should contain current value', function(done) { var test = setup_test('', {create: true}); test.selectize.on('type', function(value) { expect(value).to.be.equal('a'); done(); }); syn.click(test.selectize.$control).type('a', test.selectize.$control_input); }); }); });