diff -r 7b55777486c3 -r 75ba66457232 unittests/tests/dataloader.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/unittests/tests/dataloader.js Fri Apr 06 16:55:34 2012 +0200 @@ -0,0 +1,55 @@ +function test_dataloader() { + module("Dataloader", { setup: function() { + IriSP.jQuery = jQuery; + } + }); + + test("should initialize dataloader", function() { + var dt = new IriSP.DataLoader(); + deepEqual(dt._cache, {}, "_cache empty"); + }); + + test("should get an outside ressource", function() { + + var response_array = [{ id: 12, text: "Hey there" }]; + var response_string = JSON.stringify(response_array); + + var xhr = this.sandbox.useFakeXMLHttpRequest(); + var requests = this.requests = []; + + xhr.onCreate = function (request) { + requests.push(request); + }; + + var spy_callback = this.spy(); + var dt = new IriSP.DataLoader(); + + var resp = dt.get("/url&a=1", spy_callback); + + equals(xhr.requests.length, 1, "the mock ajax object should have received the request"); + + xhr.requests[0].respond(200, { "Content-Type": "application/json" }, + response_string); + + + ok(spy_callback.calledOnce, "callback called"); + ok(spy_callback.calledWith(response_array), "callback called with correct string"); + + deepEqual(dt._cache["/url"], response_array, "the response should be stored in the cache"); + + var resp2 = dt.get("/url&a=2", spy_callback); + ok(spy_callback.calledTwice && xhr.requests.length === 1, "callback called twice but request made only once."); + + }); + + test("should default to JSONP for foreign domains", function() { + /* we can't simulate jsonp so we just verify that the function is called */ + var stub = this.stub(IriSP.jQuery, "ajax"); + var dt = new IriSP.DataLoader(); + + var resp = dt.get("http://example.com/url&a=1", stub); + + ok(stub.calledOnce, "ajax request actually made"); + }); + +}