UNPKG

react-native-web-internals

Version:

React Native for Web

89 lines (88 loc) 4.04 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty; var __copyProps = (to, from, except, desc) => { if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target, mod )); var import_jsx_runtime = require("react/jsx-runtime"), React = require("react"), ReactDOM = __toESM(require("react-dom")), import_test_utils = require("react-dom/test-utils"), import__ = __toESM(require("..")); function createRoot(rootNode) { return { render(element) { ReactDOM.render(element, rootNode); } }; } describe("useStable", function() { var root, rootNode, spy = {}, TestComponent = function(param) { var { initialValueCallback } = param, value = (0, import__.default)(initialValueCallback); return spy.value = value, null; }; beforeEach(function() { spy = {}, rootNode = document.createElement("div"), document.body.appendChild(rootNode), root = createRoot(rootNode); }), afterEach(function() { root.render(null), document.body.removeChild(rootNode), rootNode = null, root = null; }), test("correctly sets the initial value", function() { var initialValueCallback = function() { return 5; }; (0, import_test_utils.act)(function() { root.render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TestComponent, { initialValueCallback })); }), expect(spy.value).toBe(5); }), test("does not change the value", function() { var counter = 0, initialValueCallback = function() { return counter++; }; (0, import_test_utils.act)(function() { root.render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TestComponent, { initialValueCallback })); }), expect(spy.value).toBe(0), (0, import_test_utils.act)(function() { root.render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TestComponent, { initialValueCallback })); }), expect(spy.value).toBe(0); }), test("only calls the callback once", function() { var counter = 0, initialValueCallback = function() { return counter++; }; (0, import_test_utils.act)(function() { root.render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TestComponent, { initialValueCallback })); }), expect(counter).toBe(1), (0, import_test_utils.act)(function() { root.render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TestComponent, { initialValueCallback })); }), expect(counter).toBe(1); }), test("does not change the value if the callback initially returns null", function() { var counter = 0, initialValueCallback = function() { return counter === 0 ? (counter++, null) : counter++; }; (0, import_test_utils.act)(function() { root.render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TestComponent, { initialValueCallback })); }), expect(spy.value).toBe(null), (0, import_test_utils.act)(function() { root.render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TestComponent, { initialValueCallback })); }), expect(spy.value).toBe(null); }); }); //# sourceMappingURL=index-test.js.map