UNPKG

react-native-timer-picker

Version:

A simple, flexible, performant duration picker for React Native apps 🔥 Great for timers, alarms and duration inputs ⏰🕰️⏳ Includes iOS-style haptic and audio feedback 🍏

119 lines (118 loc) 4.61 kB
"use strict"; var _react = _interopRequireDefault(require("react")); var _reactNative = require("@testing-library/react-native"); var _reactNative2 = require("react-native"); var _Modal = _interopRequireDefault(require("../components/Modal")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } describe("Modal", () => { beforeEach(() => { jest.useFakeTimers(); }); afterEach(() => { jest.runOnlyPendingTimers(); jest.useRealTimers(); (0, _reactNative.cleanup)(); }); it("renders without crashing", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: true })); const component = getByTestId("modal"); expect(component).toBeDefined(); }); it("renders children when visible", () => { const { getByText } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: true }, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Modal Content"))); const content = getByText("Modal Content"); expect(content).toBeDefined(); }); it("calls onOverlayPress when overlay is pressed", () => { const onOverlayPressMock = jest.fn(); const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: true, onOverlayPress: onOverlayPressMock })); const overlay = getByTestId("modal-backdrop"); _reactNative.fireEvent.press(overlay); expect(onOverlayPressMock).toHaveBeenCalled(); }); it("renders but is not visible when isVisible is false", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: false })); const modal = getByTestId("modal"); expect(modal).toBeDefined(); expect(modal.props.visible).toBe(false); }); it("does not call onOverlayPress when onOverlayPress is not provided", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: true })); const overlay = getByTestId("modal-backdrop"); expect(() => _reactNative.fireEvent.press(overlay)).not.toThrow(); }); it("renders multiple children", () => { const { getByText } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: true }, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "First Child"), /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Second Child"))); const firstChild = getByText("First Child"); const secondChild = getByText("Second Child"); expect(firstChild).toBeDefined(); expect(secondChild).toBeDefined(); }); it("handles rapid visibility changes", () => { const { rerender, getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: true })); expect(getByTestId("modal")).toBeDefined(); expect(getByTestId("modal").props.visible).toBe(true); rerender(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: false })); expect(getByTestId("modal")).toBeDefined(); expect(getByTestId("modal").props.visible).toBe(false); rerender(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: true })); expect(getByTestId("modal")).toBeDefined(); expect(getByTestId("modal").props.visible).toBe(true); }); it("calls onOverlayPress exactly once per press", () => { const onOverlayPressMock = jest.fn(); const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: true, onOverlayPress: onOverlayPressMock })); const overlay = getByTestId("modal-backdrop"); _reactNative.fireEvent.press(overlay); expect(onOverlayPressMock).toHaveBeenCalledTimes(1); }); it("renders children with complex structure", () => { const { getByText } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_Modal.default, { isVisible: true }, /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Parent"), /*#__PURE__*/_react.default.createElement(_reactNative2.Text, null, "Child"))); expect(getByText("Parent")).toBeDefined(); expect(getByText("Child")).toBeDefined(); }); }); //# sourceMappingURL=Modal.test.js.map