Skip to content

Commit

Permalink
chore: add tests (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
huextrat authored Sep 19, 2024
1 parent fecdb63 commit f0bf865
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 16 deletions.
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,15 +64,18 @@
"@commitlint/config-conventional": "19.5.0",
"@semantic-release/changelog": "6.0.3",
"@semantic-release/git": "10.0.1",
"@testing-library/react-native": "12.7.2",
"@types/jest": "29.5.13",
"@types/react": "18.3.7",
"@types/react-test-renderer": "18.3.0",
"commitlint": "19.5.0",
"del-cli": "5.1.0",
"husky": "9.1.6",
"jest": "29.7.0",
"react": "18.3.1",
"react-native": "0.75.3",
"react-native-builder-bob": "0.30.2",
"react-test-renderer": "18.3.1",
"semantic-release": "24.1.1",
"turbo": "2.1.2",
"typescript": "5.6.2"
Expand Down
5 changes: 4 additions & 1 deletion setupJest.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
jest.mock("react-native/Libraries/BatchedBridge/NativeModules", () => ({
ScreenshotAware: {
mulitply: jest.fn(),
addListener: jest.fn(),
removeListeners: jest.fn(),
},
PlatformConstants: {},
DeviceInfo: {},
}));
57 changes: 55 additions & 2 deletions src/__tests__/index.test.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,58 @@
import { renderHook } from "@testing-library/react-native";
import { NativeEventEmitter } from "react-native";
import NativeScreenshotAware from "../codegenSpec/NativeScreenshotAware";
import { useScreenshotAware } from "../index";
import ScreenshotAware from "../index";

interface NativeModule {
addListener: (event: string) => void;
removeListeners: (count: number) => void;
}

const emitter = new NativeEventEmitter(NativeScreenshotAware);
const typedEmitter = emitter as unknown as { _nativeModule: NativeModule };

describe("ScreenshotAware", () => {
it("true", () => {
expect(true).toBe(true);
afterEach(() => {
jest.clearAllMocks();
});

it("should add and remove listener in useScreenshotAware hook", () => {
const callback = jest.fn();
const { unmount } = renderHook(() => useScreenshotAware(callback));

expect(typedEmitter._nativeModule.addListener).toHaveBeenCalledWith(
"ScreenshotAwareEvent",
);

unmount();
expect(typedEmitter._nativeModule.removeListeners).toHaveBeenCalledWith(1);
});

it("should call the callback when a screenshot event occurs", () => {
const callback = jest.fn();
renderHook(() => useScreenshotAware(callback));

emitter.emit("ScreenshotAwareEvent");

expect(callback).toHaveBeenCalled();
});

it("should add and remove listener in ScreenshotAware module", () => {
const callback = jest.fn();
const subscription = ScreenshotAware.addListener(callback);

expect(typedEmitter._nativeModule.addListener).toHaveBeenCalledWith(
"ScreenshotAwareEvent",
);

subscription.remove();
expect(typedEmitter._nativeModule.removeListeners).toHaveBeenCalledWith(1);
});

it("should remove all listeners in ScreenshotAware module", () => {
ScreenshotAware.removeAllListeners();

expect(typedEmitter._nativeModule.removeListeners).toHaveBeenCalled();
});
});
4 changes: 3 additions & 1 deletion src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export const useScreenshotAware = (callback: () => void) => {
* }
* ```
*/
export default {
const ScreenshotAware = {
/**
* Adds a listener for screenshot events.
*
Expand All @@ -79,3 +79,5 @@ export default {
removeAllListeners: () =>
moduleEventEmitter.removeAllListeners("ScreenshotAwareEvent"),
};

export default ScreenshotAware;
108 changes: 96 additions & 12 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3293,6 +3293,25 @@ __metadata:
languageName: node
linkType: hard

"@testing-library/react-native@npm:12.7.2":
version: 12.7.2
resolution: "@testing-library/react-native@npm:12.7.2"
dependencies:
jest-matcher-utils: "npm:^29.7.0"
pretty-format: "npm:^29.7.0"
redent: "npm:^3.0.0"
peerDependencies:
jest: ">=28.0.0"
react: ">=16.8.0"
react-native: ">=0.59"
react-test-renderer: ">=16.8.0"
peerDependenciesMeta:
jest:
optional: true
checksum: 10/6e50342eb6d6424abf8fb89006b21a127988bdf3697dba69d63254da7ed8eadda7ab5fe02873c63a7dd3e12719e578aebf4a5f12049a6490cd50a07bc6e6df54
languageName: node
linkType: hard

"@tufjs/canonical-json@npm:2.0.0":
version: 2.0.0
resolution: "@tufjs/canonical-json@npm:2.0.0"
Expand Down Expand Up @@ -3443,6 +3462,15 @@ __metadata:
languageName: node
linkType: hard

"@types/react-test-renderer@npm:18.3.0":
version: 18.3.0
resolution: "@types/react-test-renderer@npm:18.3.0"
dependencies:
"@types/react": "npm:*"
checksum: 10/c53683990bd194cb68e3987bda79c78eff41517f7a747e92f3e54217c2ce3addd031b8a45bf631982c909cc2caeeb905372f322758e05bb76c03754a3f24426e
languageName: node
linkType: hard

"@types/react@npm:18.3.7":
version: 18.3.7
resolution: "@types/react@npm:18.3.7"
Expand Down Expand Up @@ -4149,9 +4177,9 @@ __metadata:
linkType: hard

"caniuse-lite@npm:^1.0.30001646":
version: 1.0.30001660
resolution: "caniuse-lite@npm:1.0.30001660"
checksum: 10/5d83f0b7e2075b7e31f114f739155dc6c21b0afe8cb61180f625a4903b0ccd3d7591a5f81c930f14efddfa57040203ba0890850b8a3738f6c7f17c7dd83b9de8
version: 1.0.30001662
resolution: "caniuse-lite@npm:1.0.30001662"
checksum: 10/275dee3c2365d58c65609e707dfd7454e72195fdae7d3a8fea05f1ddb49581f64dfc65965964ee2cff99cc0af44d08c572437b1effd43e9ddc174d7a1d7f95a3
languageName: node
linkType: hard

Expand Down Expand Up @@ -8183,7 +8211,7 @@ __metadata:
languageName: node
linkType: hard

"min-indent@npm:^1.0.1":
"min-indent@npm:^1.0.0, min-indent@npm:^1.0.1":
version: 1.0.1
resolution: "min-indent@npm:1.0.1"
checksum: 10/bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1
Expand Down Expand Up @@ -8781,7 +8809,7 @@ __metadata:
languageName: node
linkType: hard

"object-assign@npm:^4.0.1":
"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1":
version: 4.1.1
resolution: "object-assign@npm:4.1.1"
checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
Expand Down Expand Up @@ -9511,20 +9539,20 @@ __metadata:
languageName: node
linkType: hard

"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.3.1":
version: 18.3.1
resolution: "react-is@npm:18.3.1"
checksum: 10/d5f60c87d285af24b1e1e7eaeb123ec256c3c8bdea7061ab3932e3e14685708221bf234ec50b21e10dd07f008f1b966a2730a0ce4ff67905b3872ff2042aec22
languageName: node
linkType: hard

"react-is@npm:^17.0.1":
version: 17.0.2
resolution: "react-is@npm:17.0.2"
checksum: 10/73b36281e58eeb27c9cc6031301b6ae19ecdc9f18ae2d518bdb39b0ac564e65c5779405d623f1df9abf378a13858b79442480244bd579968afc1faf9a2ce5e05
languageName: node
linkType: hard

"react-is@npm:^18.0.0":
version: 18.3.1
resolution: "react-is@npm:18.3.1"
checksum: 10/d5f60c87d285af24b1e1e7eaeb123ec256c3c8bdea7061ab3932e3e14685708221bf234ec50b21e10dd07f008f1b966a2730a0ce4ff67905b3872ff2042aec22
languageName: node
linkType: hard

"react-native-builder-bob@npm:0.30.2, react-native-builder-bob@npm:^0.30.2":
version: 0.30.2
resolution: "react-native-builder-bob@npm:0.30.2"
Expand Down Expand Up @@ -9582,15 +9610,18 @@ __metadata:
"@commitlint/config-conventional": "npm:19.5.0"
"@semantic-release/changelog": "npm:6.0.3"
"@semantic-release/git": "npm:10.0.1"
"@testing-library/react-native": "npm:12.7.2"
"@types/jest": "npm:29.5.13"
"@types/react": "npm:18.3.7"
"@types/react-test-renderer": "npm:18.3.0"
commitlint: "npm:19.5.0"
del-cli: "npm:5.1.0"
husky: "npm:9.1.6"
jest: "npm:29.7.0"
react: "npm:18.3.1"
react-native: "npm:0.75.3"
react-native-builder-bob: "npm:0.30.2"
react-test-renderer: "npm:18.3.1"
semantic-release: "npm:24.1.1"
turbo: "npm:2.1.2"
typescript: "npm:5.6.2"
Expand Down Expand Up @@ -9662,6 +9693,31 @@ __metadata:
languageName: node
linkType: hard

"react-shallow-renderer@npm:^16.15.0":
version: 16.15.0
resolution: "react-shallow-renderer@npm:16.15.0"
dependencies:
object-assign: "npm:^4.1.1"
react-is: "npm:^16.12.0 || ^17.0.0 || ^18.0.0"
peerDependencies:
react: ^16.0.0 || ^17.0.0 || ^18.0.0
checksum: 10/06457fe5bcaa44aeca998905b6849304742ea1cc2d3841e4a0964c745ff392bc4dec07f8c779f317faacce3a0bf6f84e15020ac0fa81adb931067dbb0baf707b
languageName: node
linkType: hard

"react-test-renderer@npm:18.3.1":
version: 18.3.1
resolution: "react-test-renderer@npm:18.3.1"
dependencies:
react-is: "npm:^18.3.1"
react-shallow-renderer: "npm:^16.15.0"
scheduler: "npm:^0.23.2"
peerDependencies:
react: ^18.3.1
checksum: 10/d53137315c677bdfba702a7179a69828233fc7635ae1e0c03b203923d643400ace72b343cb3dd3dafba8911c20bef53f55bff7aa2e4ddff3ccc423fdd9deeee2
languageName: node
linkType: hard

"react@npm:18.3.1":
version: 18.3.1
resolution: "react@npm:18.3.1"
Expand Down Expand Up @@ -9789,6 +9845,16 @@ __metadata:
languageName: node
linkType: hard

"redent@npm:^3.0.0":
version: 3.0.0
resolution: "redent@npm:3.0.0"
dependencies:
indent-string: "npm:^4.0.0"
strip-indent: "npm:^3.0.0"
checksum: 10/fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b
languageName: node
linkType: hard

"redent@npm:^4.0.0":
version: 4.0.0
resolution: "redent@npm:4.0.0"
Expand Down Expand Up @@ -10048,6 +10114,15 @@ __metadata:
languageName: node
linkType: hard

"scheduler@npm:^0.23.2":
version: 0.23.2
resolution: "scheduler@npm:0.23.2"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10/e8d68b89d18d5b028223edf090092846868a765a591944760942b77ea1f69b17235f7e956696efbb62c8130ab90af7e0949bfb8eba7896335507317236966bc9
languageName: node
linkType: hard

"selfsigned@npm:^2.4.1":
version: 2.4.1
resolution: "selfsigned@npm:2.4.1"
Expand Down Expand Up @@ -10626,6 +10701,15 @@ __metadata:
languageName: node
linkType: hard

"strip-indent@npm:^3.0.0":
version: 3.0.0
resolution: "strip-indent@npm:3.0.0"
dependencies:
min-indent: "npm:^1.0.0"
checksum: 10/18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530
languageName: node
linkType: hard

"strip-indent@npm:^4.0.0":
version: 4.0.0
resolution: "strip-indent@npm:4.0.0"
Expand Down

0 comments on commit f0bf865

Please sign in to comment.