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

form elements check 1

') var el = $('#form1') new App.ControllerForm({ el: el, model: { "configure_attributes": [ { "name": "tree_select", "display": "tree_select", "tag": "tree_select", "null": true, "translate": true, "options": [ { "value": "aa", "name": "yes", "children": [ { "value": "aa::aaa", "name": "yes1", }, { "value": "aa::aab", "name": "yes2", }, { "value": "aa::aac", "name": "yes3", }, ] }, { "value": "bb", "name": "bb (comment)", "children": [ { "value": "bb::bba", "name": "yes11", }, { "value": "bb::bbb", "name": "yes22", }, { "value": "bb::bbc", "name": "yes33", }, ] }, ], } ] }, autofocus: true }); assert.equal(el.find('[name="tree_select"]').val(), '', 'check tree_select value'); assert.equal(el.find('[name="tree_select"]').closest('.searchableSelect').find('.js-input').val(), '', 'check tree_select .js-input value'); var params = App.ControllerForm.params(el) var test_params = { tree_select: '' } assert.deepEqual(params, test_params, 'form param check') $('#forms').append('

form elements check 2

') var el = $('#form2') new App.ControllerForm({ el: el, model: { "configure_attributes": [ { "name": "tree_select", "display": "tree_select", "tag": "tree_select", "null": true, "translate": true, "value": "aa", "options": [ { "value": "aa", "name": "yes", "children": [ { "value": "aa::aaa", "name": "yes1", }, { "value": "aa::aab", "name": "yes2", }, { "value": "aa::aac", "name": "yes3", }, ] }, { "value": "bb", "name": "bb (comment)", "children": [ { "value": "bb::bba", "name": "yes11", }, { "value": "bb::bbb", "name": "yes22", }, { "value": "bb::bbc", "name": "yes33", }, ] }, ], } ] }, autofocus: true }); assert.equal(el.find('[name="tree_select"]').val(), 'aa', 'check tree_select value'); assert.equal(el.find('[name="tree_select"]').closest('.searchableSelect').find('.js-input').val(), 'yes', 'check tree_select .js-input value'); var params = App.ControllerForm.params(el) var test_params = { tree_select: 'aa' } assert.deepEqual(params, test_params, 'form param check') $('#forms').append('

form elements check 3

') var el = $('#form3') new App.ControllerForm({ el: el, model: { "configure_attributes": [ { "name": "tree_select", "display": "tree_select", "tag": "tree_select", "null": true, "translate": true, "value": "aa::aab", "options": [ { "value": "aa", "name": "yes", "children": [ { "value": "aa::aaa", "name": "yes1", }, { "value": "aa::aab", "name": "yes2", }, { "value": "aa::aac", "name": "yes3", }, ] }, { "value": "bb", "name": "bb (comment)", "children": [ { "value": "bb::bba", "name": "yes11", }, { "value": "bb::bbb", "name": "yes22", }, { "value": "bb::bbc", "name": "yes33", }, ] }, ], } ] }, autofocus: true }); assert.equal(el.find('[name="tree_select"]').val(), 'aa::aab', 'check tree_select value'); assert.equal(el.find('[name="tree_select"]').closest('.searchableSelect').find('.js-input').val(), 'yes2', 'check tree_select .js-input value'); var params = App.ControllerForm.params(el) var test_params = { tree_select: 'aa::aab' } assert.deepEqual(params, test_params, 'form param check') $('#forms').append('

form elements check 4

') var el = $('#form4') new App.ControllerForm({ el: el, model: { "configure_attributes": [ { "name": "tree_select_search", "display": "tree_select_search", "tag": "tree_select_search", "null": true, "translate": true, "multiple": true, "value": ['aa::aab', 'bb', 'aa::aac::33'], "options": [ { "value": "aa", "name": "yes", "children": [ { "value": "aa::aaa", "name": "yes1", }, { "value": "aa::aab", "name": "yes2", }, { "value": "aa::aac", "name": "yes3", "children": [ { "value": "aa::aaa::11", "name": "11", }, { "value": "aa::aa1::22", "name": "22", }, { "value": "aa::aac::33", "name": "33", }, ] }, ] }, { "value": "bb", "name": "bb (comment)", "children": [ { "value": "bb::bba", "name": "yes11", }, { "value": "bb::bbb", "name": "yes22", }, { "value": "bb::bbc", "name": "yes33", }, ] }, ], } ] }, autofocus: true }); var params = App.ControllerForm.params(el) var test_params = { tree_select_search: ['aa::aab', 'aa::aac::33', 'bb'], } assert.deepEqual(params, test_params, 'form param check') }); QUnit.test("ui elements check", assert => { attribute = { "name": "tree_select_search", "display": "tree_select_search", "tag": "tree_select_search", "null": true, "translate": true, "value": ['bb::bba', 'bb::bbb'], "multiple": true, "options": [ { "value": "aa", "name": "yes", "children": [ { "value": "aa::aaa", "name": "yes1", }, { "value": "aa::aab", "name": "yes2", }, ] }, { "value": "bb", "name": "bb (comment)", "children": [ { "value": "bb::bba", "name": "yes11", }, { "value": "bb::bbb", "name": "yes22", }, ] }, ], }; options = [ { "value": "aa", "name": "yes", "children": [ { "value": "aa::aaa", "name": "yes1", }, { "value": "aa::aab", "name": "yes2", }, ] }, { "value": "bb", "name": "bb (comment)", "children": [ { "value": "bb::bba", "name": "yes11", }, { "value": "bb::bbb", "name": "yes22", }, ] } ] element = App.UiElement.tree_select_search.render(attribute) assert.deepEqual(attribute.options, options, 'options tree_select_search') attribute.name = 'tree_select' attribute.display = 'tree_select' attribute.tag = 'tree_select' element = App.UiElement.tree_select.render(attribute) assert.deepEqual(attribute.options, options, 'options tree_select') }); QUnit.test("searchable_select submenu and option list check", assert => { var done = assert.async() $('#forms').append('

form elements check 5

') var el = $('#form5') new App.ControllerForm({ el: el, model: { "configure_attributes": [ { "name": "tree_select", "display": "tree_select", "tag": "tree_select", "null": true, "translate": true, "value": "bb", "options": [ { "value": "a\\a", "name": "a\\a", "children": [ { "value": "a\\a::aaa", "name": "aaa", }, { "value": "a\\a::aab", "name": "aab", }, { "value": "a\\a::aac", "name": "aac", }, ] }, { "value": "bb", "name": "bb", "children": [ { "value": "bb::bba", "name": "bba", }, { "value": "bb::bbb", "name": "bbb", }, { "value": "bb::bbc", "name": "bbc", }, ] }, ], } ] }, autofocus: true }); el.find("[name=\"tree_select\"].js-shadow + .js-input").trigger('click') el.find(".searchableSelect .js-optionsList [data-value=\"a\\\\a\"]").mouseenter().trigger('click') el.find(".searchableSelect .js-optionsSubmenu [data-value=\"a\\\\a::aab\"]").mouseenter().trigger('click') el.find("[name=\"tree_select\"].js-shadow + .js-input").trigger('click') var params = App.ControllerForm.params(el) var test_params = { tree_select: 'a\\a::aab' } var optionsSubmenu = el.find(".searchableSelect [data-parent-value=\"a\\\\a\"].js-optionsSubmenu") var optionsList = el.find(".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) });