$(function () { module("typeahead", { setup: function(){ sfx = $('#qunit-fixture'), fx = $('#async-fixture'); $.support.transition = false; } }); asyncTest("should load correct value and save new entered text (source as objects)", function () { var v = 2, e = $('<a href="#" data-pk="1" data-name="text1" data-type="typeahead" data-value="'+v+'" data-url="post.php"></a>').appendTo(fx).editable({ source: groups, typeahead: { items: 5 } }), newText = 'adm'; equal(e.text(), groups[v], 'autotext ok'); equal(e.data().editable.value, v, 'initial value ok'); e.click(); var p = tip(e), $input = p.find('input[type=text]'); ok(p.is(':visible'), 'popup visible'); ok($input.length, 'input exists'); equal($input.val(), groups[v], 'input contain correct text'); equal($input.data('value'), v, 'input contain correct data-value'); ok($input.typeahead, 'typeahead applied to input'); $input.val(newText).keyup(); ok(p.find('.typeahead.dropdown-menu').is(':visible'), 'dropdown visible'); //select `Admin` v = 5; ok(p.find('.typeahead.dropdown-menu').find('li').length, 'active item exists'); p.find('.typeahead.dropdown-menu').find('li').mouseover().click(); equal($input.val(), groups[v], 'input contain correct text'); p.find('form').submit(); setTimeout(function() { ok(!p.is(':visible'), 'popup closed'); equal(e.data('editable').value, v, 'new text saved to value'); equal(e.text(), groups[v], 'new text shown'); e.click(); p = tip(e), $input = p.find('input[type=text]'); $input.val('not_matched_text').keyup(); ok(!p.find('.typeahead.dropdown-menu').is(':visible'), 'dropdown not visible'); p.find('form').submit(); setTimeout(function() { equal(e.data('editable').value, null, 'null saved to value'); equal(e.text(), e.data().editable.options.emptytext, 'emptytext shown'); e.remove(); start(); }, timeout); }, timeout); }); asyncTest("should load correct value and save new entered text (source as strings)", function () { var v = 'a', e = $('<a href="#" data-pk="1" data-name="text1" data-type="typeahead" data-value="'+v+'" data-url="post.php"></a>').appendTo(fx).editable({ source: ['a', 'ab', 'c'] }); equal(e.text(), v, 'autotext ok'); equal(e.data().editable.value, v, 'initial value ok'); e.click(); var p = tip(e), $input = p.find('input[type=text]'); ok(p.is(':visible'), 'popup visible'); ok($input.length, 'input exists'); equal($input.val(), v, 'input contain correct text'); equal($input.data('value'), undefined, 'input not contain data-value'); ok($input.typeahead, 'typeahead applied to input'); $input.val('b').keyup(); ok(p.find('.typeahead.dropdown-menu').is(':visible'), 'dropdown visible'); //select `ab` v = 'ab'; p.find('.typeahead.dropdown-menu').find('li').mouseover().click(); equal($input.val(), v, 'input contain correct text'); p.find('form').submit(); setTimeout(function() { ok(!p.is(':visible'), 'popup closed'); equal(e.data('editable').value, v, 'new text saved to value'); equal(e.text(), v, 'new text shown'); e.click(); p = tip(e), $input = p.find('input[type=text]'); v = 'not_matched_text'; $input.val(v).keyup(); ok(!p.find('.typeahead.dropdown-menu').is(':visible'), 'dropdown not visible'); p.find('form').submit(); setTimeout(function() { equal(e.data('editable').value, v, 'new text saved to value'); equal(e.text(), v, 'new text shown'); e.remove(); start(); }, timeout); }, timeout); }); });