PromucFlow_constructor/app/client/src/transformers/RestActionTransformers.test.ts

156 lines
3.9 KiB
TypeScript
Raw Normal View History

2019-12-23 12:12:58 +00:00
import { transformRestAction } from "transformers/RestActionTransformer";
2020-06-04 13:49:22 +00:00
import { PluginType, RestAction } from "entities/Action";
2020-06-09 06:25:11 +00:00
import { POST_BODY_FORMAT_OPTIONS } from "constants/ApiEditorConstants";
2019-12-23 12:12:58 +00:00
// jest.mock("POST_");
2019-12-23 12:12:58 +00:00
const BASE_ACTION: RestAction = {
2020-06-04 13:49:22 +00:00
dynamicBindingPathList: [],
cacheResponse: "",
executeOnLoad: false,
invalids: [],
isValid: false,
organizationId: "",
pageId: "",
pluginId: "",
2019-12-23 12:12:58 +00:00
id: "testId",
datasource: {
id: "testDataSource",
},
name: "testName",
2020-06-04 13:49:22 +00:00
pluginType: PluginType.API,
2019-12-23 12:12:58 +00:00
actionConfiguration: {
httpMethod: "GET",
2019-12-23 12:12:58 +00:00
path: "users",
},
jsonPathKeys: [],
};
describe("Api action transformer", () => {
it("Removes params from path", () => {
const input: RestAction = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
path: "users?page=1",
queryParameters: [
{
key: "page",
value: "1",
},
],
},
};
const output = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
path: "users",
queryParameters: [
{
key: "page",
value: "1",
},
],
},
};
const result = transformRestAction(input);
expect(result).toEqual(output);
});
it("removes body for GET calls", () => {
const input = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
httpMethod: "GET",
body: [null, null],
},
};
const output = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
httpMethod: "GET",
},
};
const result = transformRestAction(input);
expect(result).toEqual(output);
});
it("Sets the correct body for JSON display type", () => {
const input = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
httpMethod: "POST",
headers: [{ key: "content-type", value: "application/json" }],
2020-06-09 06:25:11 +00:00
body: "{ name: 'test' }",
},
};
const output = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
httpMethod: "POST",
headers: [{ key: "content-type", value: "application/json" }],
body: "{ name: 'test' }",
},
};
const result = transformRestAction(input);
expect(result).toEqual(output);
});
it("Sets the correct body for xxx-form-encoded-data display type", () => {
const input = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
httpMethod: "POST",
headers: [
2020-06-09 06:25:11 +00:00
{ key: "content-type", value: POST_BODY_FORMAT_OPTIONS[1].value },
],
2020-06-09 06:25:11 +00:00
bodyFormData: [{ key: "hey", value: "ho" }],
},
};
const output = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
httpMethod: "POST",
headers: [
2020-06-09 06:25:11 +00:00
{ key: "content-type", value: POST_BODY_FORMAT_OPTIONS[1].value },
],
2020-06-09 06:25:11 +00:00
body: "",
bodyFormData: [{ key: "hey", value: "ho" }],
},
};
const result = transformRestAction(input);
expect(result).toEqual(output);
});
it("Sets the correct body for custom/raw display type", () => {
const input = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
headers: [{ key: "content-type", value: "text/html" }],
httpMethod: "POST",
2020-06-09 06:25:11 +00:00
body: "raw body",
},
};
const output = {
...BASE_ACTION,
actionConfiguration: {
...BASE_ACTION.actionConfiguration,
headers: [{ key: "content-type", value: "text/html" }],
httpMethod: "POST",
body: "raw body",
},
};
const result = transformRestAction(input);
expect(result).toEqual(output);
});
2019-12-23 12:12:58 +00:00
});