react-stable-ref
Version:
An assortment of utilities for testing against unstable references in React
79 lines • 3.69 kB
JavaScript
"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