PromucFlow_constructor/app/client/src/utils/AppsmithUtils.test.ts
balajisoundar 05281a4dc5
fix: Include port number while constructing blob url in camera widget and plugin action execution (#22458)
## Description

While creating a blob URL we should consider the port number where the
Appsmith is running. This PR adds the port number to the blob URL.

Fixes https://github.com/appsmithorg/appsmith/issues/22387

## Type of change

> Please delete options that are not relevant.

- Bug fix (non-breaking change which fixes an issue)


## How Has This Been Tested?
> Please describe the tests that you ran to verify your changes. Provide
instructions, so we can reproduce.
> Please also list any relevant details for your test configuration.
> Delete anything that is not important

- Manual
- Cypress

### Test Plan
> Add Testsmith test cases links that relate to this PR

### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)


## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
2023-04-19 23:59:56 +05:30

96 lines
2.7 KiB
TypeScript

import {
areArraysEqual,
createBlobUrl,
getCamelCaseString,
parseBlobUrl,
} from "utils/AppsmithUtils";
import { isURL } from "./TypeHelpers";
describe("getCamelCaseString", () => {
it("Should return a string in camelCase", () => {
const inputs = ["abcd", "ab12cd", "开关", "😃 😃 😃"];
const expected = ["abcd", "ab12Cd", "", ""];
inputs.forEach((input, index) => {
const result = getCamelCaseString(input);
expect(result).toStrictEqual(expected[index]);
});
});
});
describe("test areArraysEqual", () => {
it("test areArraysEqual method", () => {
const OGArray = ["test1", "test2", "test3"];
let testArray: string[] = [];
expect(areArraysEqual(OGArray, testArray)).toBe(false);
testArray = ["test1", "test3"];
expect(areArraysEqual(OGArray, testArray)).toBe(false);
testArray = ["test1", "test2", "test3"];
expect(areArraysEqual(OGArray, testArray)).toBe(true);
testArray = ["test1", "test3", "test2"];
expect(areArraysEqual(OGArray, testArray)).toBe(true);
});
});
describe("isURL", () => {
test("returns true for valid URLs", () => {
expect(isURL("http://example.com")).toBe(true);
expect(isURL("https://www.google.com/search?q=javascript")).toBe(true);
expect(isURL("https://en.wikipedia.org/wiki/Regular_expression")).toBe(
true,
);
expect(
isURL("https://www.example.com/path(withparentheses)/file.html"),
).toBe(true);
expect(
isURL("https://www.example.com/path[withparentheses]/file_(1)[2].html"),
).toBe(true);
});
test("returns false for invalid URLs", () => {
expect(isURL("http://localhost:3000")).toBe(false);
expect(isURL("not a URL")).toBe(false);
expect(isURL("ftp:/example.com")).toBe(false);
expect(isURL("http://example.")).toBe(false);
expect(isURL("http://localhost:port")).toBe(false);
expect(isURL("notAURL")).toBe(false);
expect(isURL("httpsnotAURL")).toBe(false);
});
});
describe("createBlobUrl", () => {
beforeEach(() => {
URL.createObjectURL = jest
.fn()
.mockReturnValue(`blob:${window.location.origin}/123-123-123-123-123`);
});
it("should test that it created correct blob URL", () => {
expect(createBlobUrl(new Blob(), "base64")).toMatch(
/blob:[a-z0-9-]*\?type=base64/,
);
expect(createBlobUrl(new Blob(), "raw")).toMatch(
/blob:[a-z0-9-]*\?type=raw/,
);
});
});
describe("parseBlobUrl", () => {
it("should test that it created correct blob URL", () => {
expect(parseBlobUrl("blob:123-123?type=base")).toEqual([
`blob:${window.location.origin}/123-123`,
"base",
]);
expect(parseBlobUrl("blob:123-123?type=raw")).toEqual([
`blob:${window.location.origin}/123-123`,
"raw",
]);
});
});