REST integration tests

This commit is contained in:
Martin McKeaveney 2021-03-16 14:51:14 +00:00
parent 2da1d27ba6
commit 4ab88daf28
2 changed files with 99 additions and 1 deletions

View File

@ -1,6 +1,6 @@
const fetch = jest.requireActual("node-fetch")
module.exports = async (url, opts) => {
module.exports = async url , opts=> {
// mocked data based on url
if (url.includes("api/apps")) {
return {

View File

@ -0,0 +1,98 @@
const fetch = require("node-fetch")
const RestIntegration = require("../rest")
jest.mock("node-fetch", () => jest.fn(() => ({ json: jest.fn() })))
class TestConfiguration {
constructor(config = {}) {
this.integration = new RestIntegration.integration(config)
}
}
describe("REST Integration", () => {
const BASE_URL = "https://myapi.com"
let config
beforeEach(() => {
config = new TestConfiguration({
url: BASE_URL
})
})
it("calls the create method with the correct params", async () => {
const query = {
path: "/api",
queryString: "?test=1",
headers: {
Accept: "application/json"
},
json: {
name: "test"
}
}
const response = await config.integration.create(query)
expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api?test=1`, {
method: "POST",
body: "{\"name\":\"test\"}",
headers: {
Accept: "application/json"
}
})
})
it("calls the read method with the correct params", async () => {
const query = {
path: "/api",
queryString: "?test=1",
headers: {
Accept: "application/json"
}
}
const response = await config.integration.read(query)
expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api?test=1`, {
headers: {
Accept: "application/json"
}
})
})
it("calls the update method with the correct params", async () => {
const query = {
path: "/api",
queryString: "?test=1",
headers: {
Accept: "application/json"
},
json: {
name: "test"
}
}
const response = await config.integration.update(query)
expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api?test=1`, {
method: "POST",
body: "{\"name\":\"test\"}",
headers: {
Accept: "application/json"
}
})
})
it("calls the delete method with the correct params", async () => {
const query = {
path: "/api",
queryString: "?test=1",
headers: {
Accept: "application/json"
},
json: {
name: "test"
}
}
const response = await config.integration.delete(query)
expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api?test=1`, {
method: "DELETE",
headers: {
Accept: "application/json"
}
})
})
})