import { ODATA_PARAMS, SF_PARAMS } from "./constants"; import { Data } from "./Data"; import { Sitefinity } from "./Sitefinity"; describe("Data class tests", () => { const baseUrl = "http://www.mysite.com/api/default/"; const query = new Sitefinity.Query().where().eq("Title", "test").done(); const queryResult = query.build().$filter; const action = "Publish"; const fallbackProperties = ["Title", "UrlName"]; const key = "1234"; const callbacks = { successCb: () => {}, failureCb: () => {}, }; let successCbSpy; let failureCbSpy; let data: Data; beforeEach(() => { jasmine.Ajax.install(); successCbSpy = spyOn(callbacks, "successCb"); failureCbSpy = spyOn(callbacks, "failureCb"); }); afterEach(() => { jasmine.Ajax.uninstall(); }); beforeAll(() => { data = new Sitefinity({}).data({ baseUrl }); }); it("Verify get success", () => { data.get({ query, action, successCb: callbacks.successCb, failureCb: callbacks.failureCb, fallbackProperties }); const request = jasmine.Ajax.requests.mostRecent(); expect(request.url).toContain(`${ODATA_PARAMS.$filter}=${queryResult}`); expect(request.url).toContain(`${baseUrl}${action}`); expect(request.url).toContain(`${SF_PARAMS.fallbackParams}=${fallbackProperties.join(",")}`); request.respondWith({ status: 200, responseText: "{\"message\":\"test\"}" }); expect(successCbSpy).toHaveBeenCalledOnceWith({ message: "test" }); expect(failureCbSpy).not.toHaveBeenCalled(); }); it("Verify get failure", () => { data.get({ successCb: callbacks.successCb, failureCb: callbacks.failureCb }); const request = jasmine.Ajax.requests.mostRecent(); request.respondWith({ status: 400, responseText: "{\"message\":\"test\"}" }); expect(failureCbSpy).toHaveBeenCalledOnceWith({ message: "test", status: 400 }); expect(successCbSpy).not.toHaveBeenCalled(); }); it("Verify getOperations success", () => { const parentId = "567"; data.getOperations({ parentId, successCb: callbacks.successCb, failureCb: callbacks.failureCb }); let request = jasmine.Ajax.requests.mostRecent(); expect(request.url).toContain(`${baseUrl}operations`); expect(request.url).toContain(`${SF_PARAMS.parentId}=${parentId}`); request.respondWith({ status: 200, responseText: "{\"message\":\"test\"}" }); expect(successCbSpy).toHaveBeenCalledOnceWith({ message: "test" }); expect(failureCbSpy).not.toHaveBeenCalled(); data.getOperations({ key, parentId }); request = jasmine.Ajax.requests.mostRecent(); expect(request.url).toContain(`${baseUrl}(${key})/operations`); expect(request.url).not.toContain(`${SF_PARAMS.parentId}=${parentId}`); }); it("Verify getOperations failure", () => { data.getOperations({ successCb: callbacks.successCb, failureCb: callbacks.failureCb }); const request = jasmine.Ajax.requests.mostRecent(); request.respondWith({ status: 400, responseText: "{\"message\":\"test\"}" }); expect(failureCbSpy).toHaveBeenCalledOnceWith({ message: "test", status: 400 }); expect(successCbSpy).not.toHaveBeenCalled(); }); it("Verify getSingle success", () => { data.getSingle({ key, query, action, successCb: callbacks.successCb, failureCb: callbacks.failureCb, fallbackProperties }); const request = jasmine.Ajax.requests.mostRecent(); expect(request.url).toContain(`${ODATA_PARAMS.$filter}=${queryResult}`); expect(request.url).toContain(`${baseUrl}(${key})/${action}`); expect(request.url).toContain(`${SF_PARAMS.fallbackParams}=${fallbackProperties.join(",")}`); request.respondWith({ status: 200, responseText: "{\"message\":\"test\"}" }); expect(successCbSpy).toHaveBeenCalledOnceWith({ message: "test" }); expect(failureCbSpy).not.toHaveBeenCalled(); }); it("Verify getSingle failure", () => { data.getSingle({ key, successCb: callbacks.successCb, failureCb: callbacks.failureCb }); const request = jasmine.Ajax.requests.mostRecent(); request.respondWith({ status: 400, responseText: "{\"message\":\"test\"}" }); expect(failureCbSpy).toHaveBeenCalledOnceWith({ message: "test", status: 400 }); expect(successCbSpy).not.toHaveBeenCalled(); }); });