describe('Configuration settings', function() {
describe('hideSelected', function() {
it_n('option should still be shown when selected', function(done) {
var test = setup_test('AB_Multi',{hideSelected:false,closeAfterSelect:true});
click(test.instance.control, function() {
var options = test.instance.dropdown.querySelectorAll('.option');
expect(options.length).to.be.equal(3);
expect(test.instance.items.length).to.be.equal(0);
var option_a = test.instance.dropdown_content.querySelector('[data-value="a"]');
click( option_a, function() {
options = test.instance.dropdown.querySelectorAll('.option');
expect(options.length).to.be.equal(3);
expect(test.instance.items.length).to.be.equal(1);
assert.isFalse( test.instance.isOpen, 'should be closed after selected');
assert.equal(option_a, test.instance.activeOption, 'active option should be set after closing');
done();
});
});
});
it_n('option should not be shown when selected', function(done) {
var test = setup_test('',{hideSelected:true,options:[{value:'a'},{value:'b'},{value:'c'}]});
click(test.instance.control, function() {
var options = test.instance.dropdown.querySelectorAll('.option');
expect(options.length).to.be.equal(3);
expect(test.instance.items.length).to.be.equal(0);
click( test.instance.dropdown_content.querySelector('[data-value="a"]'), function() {
options = test.instance.dropdown.querySelectorAll('.option');
expect(options.length).to.be.equal(2);
expect(test.instance.items.length).to.be.equal(1);
done();
});
});
});
it_n('should allow duplicate options when hideSelected=false and duplicates=true',function(done){
var test = setup_test('AB_Multi',{hideSelected:false,duplicates:true});
click(test.instance.control, function() {
var options = test.instance.dropdown.querySelectorAll('.option');
expect(options.length).to.be.equal(3);
expect(test.instance.items.length).to.be.equal(0);
click( test.instance.dropdown_content.querySelector('[data-value="a"]'), function() {
click( test.instance.dropdown_content.querySelector('[data-value="a"]'), function() {
options = test.instance.dropdown.querySelectorAll('.option');
expect(options.length).to.be.equal(3);
expect(test.instance.items.length).to.be.equal(2);
done();
});
});
});
});
});
describe('copyClassesToDropdown',function(){
it_n('class should be copied', function() {
var test = setup_test('',{copyClassesToDropdown:true});
expect(test.instance.dropdown.classList.contains('classA')).to.be.true
});
it_n('class should not be copied', function() {
var test = setup_test('',{copyClassesToDropdown:false});
expect(test.instance.dropdown.classList.contains('classA')).to.be.false
});
});
describe('onInitialize',function(){
it_n('onInitialize should be called', function(done) {
setup_test('',{
onInitialize:function(){
expect(true).to.be.true
done();
}
});
});
});
it_n('allowEmptyOption', async () => {
let test = setup_test(``, {allowEmptyOption:true});
assert.equal( Object.keys(test.instance.options).length, 3);
assert.equal( test.instance.items.length, 0);
await asyncClick(test.instance.control);
assert.isTrue(test.instance.isOpen);
var opt = test.instance.getOption('');
await asyncClick(opt);
assert.equal( test.instance.items.length, 1);
});
});