Files
dist
src
test
libs
unit
api.js
checklist.js
combodate.js
common.js
date.js
datefield.js
datetime.js
datetimefield.js
dateui.js
dateuifield.js
select.js
select2.js
text.js
textarea.js
typeahead.js
typeaheadjs.js
wysihtml5.js
coverage
index.html
loader.js
main.js
mocks.js
require.js
style.css
.gitignore
CHANGELOG.txt
Gruntfile.js
LICENSE-MIT
Package.nuspec
README.md
bower.json
composer.json
package.json
x-editable/test/unit/typeahead.js
2013-03-07 00:09:18 +04:00

125 lines
4.6 KiB
JavaScript

$(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);
});
});