(function () { 'use strict'; var service = getMisagoService('api'); var container = { setup: { api: '/test-api/' } }; QUnit.module("API"); QUnit.test("service factory", function(assert) { var api = service({}); assert.ok(api, "service factory has returned service instance."); }); QUnit.test("model", function(assert) { var api = service(container); assert.equal(api.model('user', 'admin').url, '/test-api/users/admin/', "model constructed valid url with string pk."); assert.equal(api.model('user', 123).url, '/test-api/users/123/', "model constructed valid url with integer pk."); assert.equal( api.model('user', {token: 'abc&df', uid: 123}).url, '/test-api/users/?token=abc%26df&uid=123', "model constructed valid url with querystring."); assert.equal(api.model('user', 123).related('follows', 1).url, '/test-api/users/123/follows/1/', "model constructed valid related url."); assert.equal(api.model('user', 123).endpoint('avatar').url, '/test-api/users/123/avatar/', "model constructed valid endpoint url."); assert.ok( !api.model('user', 123).endpoint('avatar').related, "model can't have relation to endpoint."); assert.ok( !api.model('user', 123).related('avatar').related, "model can't have relation to relation."); }); QUnit.test("endpoint", function(assert) { var api = service(container); assert.equal(api.endpoint('auth').url, '/test-api/auth/', "endpoint constructed valid url."); assert.equal( api.endpoint('auth', 'string-pk').url, '/test-api/auth/string-pk/', "endpoint constructed valid url with string pk."); assert.equal( api.endpoint('auth', 124).url, '/test-api/auth/124/', "endpoint constructed valid url with integer pk."); assert.equal( api.endpoint('auth', {token: 'abc&df', uid: 123}).url, '/test-api/auth/?token=abc%26df&uid=123', "endpoint constructed valid url with querystring."); assert.ok( !api.endpoint('auth', 124).related, "endpoint can't have nested relation."); assert.equal( api.endpoint('auth', 124).endpoint('change-password').url, '/test-api/auth/124/change-password/', "nested endpoint constructed valid url with integer pk."); assert.ok( !api.endpoint('auth', 124).endpoint('change-password').endpoint, "nested endpoint can't be nested further."); }); }());