// searchable_select QUnit.test( "searchable_select check", assert => { $('#forms').append('

searchable_select check

') var el = $('#form1') var defaults = { searchable_select2: 'bbb', searchable_select4: 'ccc', } var options = { 'aaa': 'aaa display', 'bbb': 'bbb display', 'ccc': 'ccc display', } var options_4_tree = [ { value: 'aaa', name: 'aaa display' }, { value: 'bbb', name: 'bbb display' }, { value: 'ccc', name: 'ccc display', children: [ { value: 'ccc::aaa', name: 'aaa display' }, { value: 'ccc::bbb', name: 'bbb display' }, ] }, ] new App.ControllerForm({ el: el, model: { configure_attributes: [ { name: 'searchable_select1', display: 'SearchableSelect1', tag: 'searchable_select', options: options, null: true, default: defaults['searchable_select1'] }, { name: 'searchable_select2', display: 'SearchableSelect2', tag: 'searchable_select', options: options, null: false, default: defaults['searchable_select2'] }, { name: 'searchable_select3', display: 'SearchableSelect3', tag: 'searchable_select', options: options, default: defaults['searchable_select3'], null: true, unknown: true }, { name: 'searchable_select4', display: 'SearchableSelect4', tag: 'searchable_select', options: options_4_tree, default: defaults['searchable_select4'], null: true, unknown: true }, ] }, autofocus: true }) var params = App.ControllerForm.params(el) var test_params = { searchable_select1: '', searchable_select2: 'bbb', searchable_select3: '', searchable_select4: 'ccc', } assert.deepEqual(params, test_params, 'form param check') // change selection $('[name="searchable_select1"].js-shadow + .js-input').trigger('focus').val('').trigger('input') var $element = $('[name="searchable_select1"]').closest('.searchableSelect').find('.js-optionsList') var entries = $element.find('li:not(.is-hidden)').length assert.equal(entries, 3, 'dropdown count') $('[name="searchable_select1"].js-shadow + .js-input').trigger('focus').val('ccc display').trigger('input') var entries = $element.find('li:not(.is-hidden)').length assert.equal(entries, 1, 'dropdown count') $element.find('li:not(.is-hidden)').first().trigger('click') params = App.ControllerForm.params(el) test_params = { searchable_select1: 'ccc', searchable_select2: 'bbb', searchable_select3: '', searchable_select4: 'ccc', } assert.deepEqual(params, test_params, 'form param check') $('[name="searchable_select2"].js-shadow + .js-input').trigger('focus').val('').trigger('input') var $element = $('[name="searchable_select2"]').closest('.searchableSelect').find('.js-optionsList') var entries = $element.find('li:not(.is-hidden)').length assert.equal(entries, 3, 'dropdown count') $('[name="searchable_select2"].js-shadow + .js-input').trigger('focus').val('ccc display').trigger('input') var entries = $element.find('li:not(.is-hidden)').length assert.equal(entries, 1, 'dropdown count') $element.find('li:not(.is-hidden)').first().trigger('click') params = App.ControllerForm.params(el) test_params = { searchable_select1: 'ccc', searchable_select2: 'ccc', searchable_select3: '', searchable_select4: 'ccc', } assert.deepEqual(params, test_params, 'form param check') $('[name="searchable_select3"].js-shadow + .js-input').trigger('focus').val('').trigger('input') var $element = $('[name="searchable_select3"]').closest('.searchableSelect').find('.js-optionsList') var entries = $element.find('li:not(.is-hidden)').length assert.equal(entries, 3, 'dropdown count') $('[name="searchable_select3"].js-shadow + .js-input').trigger('focus').val('ccc display').trigger('input') var entries = $element.find('li:not(.is-hidden)').length assert.equal(entries, 1, 'dropdown count') $('[name="searchable_select3"].js-shadow + .js-input').trigger('focus').val('unknown value').trigger('input') var entries = $element.find('li:not(.is-hidden)').length assert.equal(entries, 3, 'dropdown count') var entries = $element.find('li.is-active').length assert.equal(entries, 0, 'active count') var e = $.Event('keydown') e.which = 13 //enter e.keyCode = 13 $('[name="searchable_select3"].js-shadow + .js-input').trigger(e) params = App.ControllerForm.params(el) test_params = { searchable_select1: 'ccc', searchable_select2: 'ccc', searchable_select3: 'unknown value', searchable_select4: 'ccc', } assert.deepEqual(params, test_params, 'form param check') $('#forms').append('

searchable_select check for .js-input field values

') var el = $('#form2') var defaults = { searchable_select1: 'ccc::aaa', searchable_select2: 'ccc::ccc', } var options = [ { value: 'aaa', name: 'aaa display' }, { value: 'bbb', name: 'bbb display' }, { value: 'ccc', name: 'ccc display', children: [ { value: 'ccc::aaa', name: 'aaa display L2' }, { value: 'ccc::bbb', name: 'bbb display L2' }, { value: 'ccc::ccc', name: 'ccc display L2' }, ] }, ] new App.ControllerForm({ el: el, model: { configure_attributes: [ { name: 'searchable_select1', display: 'SearchableSelect1', tag: 'searchable_select', options: options, default: defaults['searchable_select1'], null: true, }, { name: 'searchable_select2', display: 'SearchableSelect2', tag: 'searchable_select', options: options, default: defaults['searchable_select2'], null: true, }, ] }, }) var params = App.ControllerForm.params(el) var test_params = { searchable_select1: 'ccc::aaa', searchable_select2: 'ccc::ccc', } assert.deepEqual(params, test_params, 'form param check') assert.equal(el.find('[name="searchable_select1"].js-shadow + .js-input').val(), 'aaa display L2', 'verify shown input') assert.equal(el.find('[name="searchable_select1"].js-shadow + .js-input').attr('title'), 'ccc display › aaa display L2', 'verify provided tooltip') assert.equal(el.find('[name="searchable_select2"].js-shadow + .js-input').val(), 'ccc display L2', 'verify shown input') assert.equal(el.find('[name="searchable_select2"].js-shadow + .js-input').attr('title'), 'ccc display › ccc display L2', 'verify provided tooltip') }); QUnit.test("searchable_select submenu and option list check", assert => { var done = assert.async() $('#forms').append('

searchable_select check for special charaters values

') var el = $('#form3') var defaults = { searchable_select1: 'aaa', } var options = [ { value: 'aaa', name: 'aaa display' }, { value: 'bbb', name: 'bbb display' }, { value: 'c\\cc', name: 'ccc display', children: [ { value: 'c\\cc::aaa', name: 'aaa display L2' }, { value: 'c\\cc::bbb', name: 'bbb display L2' }, { value: 'c\\cc::ccc', name: 'ccc display L2' }, ] }, ] new App.ControllerForm({ el: el, model: { configure_attributes: [ { name: 'searchable_select1', display: 'SearchableSelect1', tag: 'searchable_select', options: options, default: defaults['searchable_select1'], null: true, }, { name: 'searchable_select2', display: 'SearchableSelect2', tag: 'searchable_select', options: options, default: defaults['searchable_select1'], null: true, }, ] }, }) el.find("[name=\"searchable_select2\"].js-shadow + .js-input").trigger('click') el.find("div[data-attribute-name=searchable_select2] .js-optionsList [data-value=\"c\\\\cc\"] .searchableSelect-option-text").mouseenter().trigger('click') el.find("[name=\"searchable_select1\"].js-shadow + .js-input").trigger('click') el.find("div[data-attribute-name=searchable_select1] .js-optionsList [data-value=\"c\\\\cc\"] .searchableSelect-option-arrow").mouseenter().trigger('click') el.find("div[data-attribute-name=searchable_select1] .js-optionsSubmenu [data-value=\"c\\\\cc::bbb\"] .searchableSelect-option-text").mouseenter().trigger('click') el.find("[name=\"searchable_select1\"].js-shadow + .js-input").trigger('click') var params = App.ControllerForm.params(el) var test_params = { searchable_select1: 'c\\cc::bbb', searchable_select2: 'c\\cc', } var optionsSubmenu = el.find("div[data-attribute-name=searchable_select1] .searchableSelect .js-optionsSubmenu") var optionsList = el.find("div[data-attribute-name=searchable_select1] .searchableSelect .js-optionsList") setTimeout( () => { assert.deepEqual(params, test_params, 'form param check') assert.equal(optionsSubmenu.is('[hidden]'), false, 'options submenu menu not hidden') assert.equal(optionsList.is('[hidden]'), true, 'options list is hidden') done() }, 300) }); QUnit.test("searchable_select current selection indicator", assert => { $('#forms').append('

searchable_select current selection indicator

') var el = $('#form4') var defaults = { searchable_select5: 'bbb', searchable_select6: ['bbb'], } var options = { 'aaa': 'aaa display', 'bbb': 'bbb display', 'ccc': 'ccc display', } new App.ControllerForm({ el: el, model: { configure_attributes: [ { name: 'searchable_select5', display: 'SearchableSelect5', tag: 'searchable_select', options: options, null: true, default: defaults['searchable_select5'] }, { name: 'searchable_select6', display: 'SearchableSelect6', tag: 'searchable_select', options: options, null: true, multiple: true, default: defaults['searchable_select6'] }, ] }, autofocus: true }) var params = App.ControllerForm.params(el) var test_params = { searchable_select5: 'bbb', searchable_select6: ['bbb'], searchable_select6_completion: '', } assert.deepEqual(params, test_params, 'form param check') $('[name="searchable_select5"].js-shadow + .js-input').trigger('focus').val('').trigger('input') var $element = $('[name="searchable_select5"]').closest('.searchableSelect').find('.js-optionsList') assert.equal($element.find('li.is-selected').length, 1, 'selection indicator count') $element.find('li:not(.is-hidden)').first().trigger('click') assert.equal($element.find('li.is-selected').length, 1, 'selection indicator count') $('[name="searchable_select6"].js-shadow + .js-input').trigger('focus').val('').trigger('input') $element = $('[name="searchable_select6"]').closest('.searchableSelect').find('.js-optionsList') assert.equal($element.find('li.is-selected').length, 1, 'selection indicator count') $element.find('li:not(.is-hidden)').first().trigger('click') assert.equal($element.find('li.is-selected').length, 2, 'selection indicator count') $('[name="searchable_select6"]').closest('.searchableSelect').find('.js-remove').first().trigger('click') assert.equal($element.find('li.is-selected').length, 1, 'selection indicator count') });