Nov 23,
suite("searching", function() {
var form, input, results, server;
setup(function() {
form = $('').appendTo('body');
results = $('
').appendTo(form);
input = $('').appendTo(form);
input.val('query');
var data = [
{id: 1, name: 'Phone'},
{id: 2, name: 'Tablet'}
]
server = sinon.fakeServer.create();
server.respondWith("GET", "/search?q=query", JSON.stringify(data));
app.initSearch();
});
teardown(function() {
form.remove();
server.restore();
});
test("empty search", function() {
input.val('');
form.submit();
assert(server.requests.length == 0);
});
test("double submit", function() {
form.submit();
form.submit();
assert(server.requests.length == 1);
});
test("adds loading class during search", function() {
form.submit();
assert(results.hasClass('loading'));
});
test("removes loading class after search", function() {
form.submit();
server.respond();
assert(!results.hasClass('loading'));
});
test("renders results", function() {
form.submit();
server.respond();
assert(results.find('a').length == 2);
assert(results.find('a[href="/products/1"]').length == 1);
assert(results.find('a[href="/products/1"]').length == 1);
});
});