UNPKG

react-stable-ref

Version:

An assortment of utilities for testing against unstable references in React

79 lines 3.69 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = __importDefault(require("react")); var react_2 = require("@testing-library/react"); var useWhichDepChanged_1 = __importDefault(require("./useWhichDepChanged")); var Button = function (_a) { var data = _a.data, children = _a.children, onChange = _a.onChange; useWhichDepChanged_1.default({ data: data }, onChange); return react_1.default.createElement("button", { type: "button" }, children); }; describe('useWhichDepChanged', function () { var consoleMock; beforeEach(function () { consoleMock = jest .spyOn(global.console, 'log') .mockImplementation(function () { }); }); afterAll(function () { jest.resetAllMocks(); react_2.cleanup(); }); it('emits changed dependencies to the console', function () { var testValue = 'Foo'; var rerender = react_2.render(react_1.default.createElement(Button, { data: testValue }, "Hello World")).rerender; testValue = 'Bar'; rerender(react_1.default.createElement(Button, { data: testValue }, "Hello World")); expect(consoleMock).toHaveBeenCalledWith('[useWhichDepChanged]', { data: { from: 'Foo', to: 'Bar' }, }); expect(consoleMock).toHaveBeenCalledTimes(1); }); it('detects changed dependencies', function () { var onChange = jest.fn(); var testValue = 'Foo'; var rerender = react_2.render(react_1.default.createElement(Button, { onChange: onChange, data: testValue }, "Hello World")).rerender; testValue = 'Bar'; rerender(react_1.default.createElement(Button, { onChange: onChange, data: testValue }, "Hello World")); expect(onChange).toHaveBeenCalledWith({ data: { from: 'Foo', to: 'Bar', }, }); expect(onChange).toHaveBeenCalledTimes(1); }); it('detects unstable dependencies', function () { var onChange = jest.fn(); var testArray = [1, 2, 3]; var rerender = react_2.render(react_1.default.createElement(Button, { onChange: onChange, data: testArray }, "Hello World")).rerender; testArray = [1, 2, 3]; rerender(react_1.default.createElement(Button, { onChange: onChange, data: testArray }, "Hello World")); expect(onChange).toHaveBeenCalledWith({ data: { from: testArray, to: testArray, }, }); expect(onChange).toHaveBeenCalledTimes(1); }); it('should not detect unchanged dependencies', function () { var onChange = jest.fn(); var testValue = 'Foo'; var rerender = react_2.render(react_1.default.createElement(Button, { onChange: onChange, data: testValue }, "Hello World")).rerender; rerender(react_1.default.createElement(Button, { onChange: onChange, data: testValue }, "Hello World")); expect(onChange).not.toHaveBeenCalled(); }); it('should not detect stable dependencies', function () { var onChange = jest.fn(); var testValue = 'Foo'; var rerender = react_2.render(react_1.default.createElement(Button, { onChange: onChange, data: testValue }, "Hello World")).rerender; testValue = 'Foo'; rerender(react_1.default.createElement(Button, { onChange: onChange, data: testValue }, "Hello World")); expect(onChange).not.toHaveBeenCalled(); }); }); //# sourceMappingURL=useWhichDepChanged.spec.js.map