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 🍏

169 lines (168 loc) 6.53 kB
"use strict"; var _react = _interopRequireDefault(require("react")); var _reactNative = require("@testing-library/react-native"); var _reactNative2 = require("react-native"); var _TimerPicker = _interopRequireDefault(require("../components/TimerPicker")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } describe("TimerPicker", () => { it("renders without crashing", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, null)); const component = getByTestId("timer-picker"); expect(component).toBeDefined(); }); it("renders without crashing with negative padWithNItems", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { padWithNItems: -1 })); const component = getByTestId("timer-picker"); expect(component).toBeDefined(); }); it("hides days, minutes and seconds when respective hide props are provided", () => { const { queryByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { hideDays: true, hideMinutes: true, hideSeconds: true })); const dayPicker = queryByTestId("duration-scroll-day"); const minutePicker = queryByTestId("duration-scroll-minute"); const secondPicker = queryByTestId("duration-scroll-second"); expect(dayPicker).toBeNull(); expect(minutePicker).toBeNull(); expect(secondPicker).toBeNull(); }); it("uses the custom FlatList component when provided", () => { const CustomFlatList = props => /*#__PURE__*/_react.default.createElement(_reactNative2.FlatList, _extends({}, props, { testID: "custom-flat-list" })); const { queryAllByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { FlatList: CustomFlatList })); const customFlatList = queryAllByTestId("custom-flat-list"); expect(customFlatList).toHaveLength(3); }); it("renders all pickers by default (hours, minutes, seconds)", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, null)); expect(getByTestId("duration-scroll-hour")).toBeDefined(); expect(getByTestId("duration-scroll-minute")).toBeDefined(); expect(getByTestId("duration-scroll-second")).toBeDefined(); }); it("hides hours when hideHours is true", () => { const { queryByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { hideHours: true })); expect(queryByTestId("duration-scroll-hour")).toBeNull(); }); it("renders with custom initial value", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { initialValue: { hours: 2, minutes: 30, seconds: 45 } })); expect(getByTestId("timer-picker")).toBeDefined(); }); it("renders with hourInterval", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { hourInterval: 2 })); expect(getByTestId("timer-picker")).toBeDefined(); }); it("renders with minuteInterval", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { minuteInterval: 15 })); expect(getByTestId("timer-picker")).toBeDefined(); }); it("renders with secondInterval", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { secondInterval: 5 })); expect(getByTestId("timer-picker")).toBeDefined(); }); it("renders with custom labels", () => { const { getByText } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { hourLabel: "hrs", minuteLabel: "mins", secondLabel: "secs" })); expect(getByText("hrs")).toBeDefined(); expect(getByText("mins")).toBeDefined(); expect(getByText("secs")).toBeDefined(); }); it("renders with disabled state", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { disabled: true })); expect(getByTestId("timer-picker")).toBeDefined(); }); it("renders LinearGradient when specified", () => { const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { use12HourPicker: false })); expect(getByTestId("timer-picker")).toBeDefined(); }); it("handles combination of hide props", () => { const { queryByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { hideHours: true, hideSeconds: true })); expect(queryByTestId("duration-scroll-hour")).toBeNull(); expect(queryByTestId("duration-scroll-minute")).toBeDefined(); expect(queryByTestId("duration-scroll-second")).toBeNull(); }); it("handles onDurationChange callback", () => { const onDurationChangeMock = jest.fn(); const { getByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { onDurationChange: onDurationChangeMock })); expect(getByTestId("timer-picker")).toBeDefined(); }); it("renders with all hide props and days enabled", () => { const { getByTestId, queryByTestId } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPicker.default, { hideDays: false, hideHours: true, hideMinutes: true, hideSeconds: true })); expect(getByTestId("duration-scroll-day")).toBeDefined(); expect(queryByTestId("duration-scroll-hour")).toBeNull(); expect(queryByTestId("duration-scroll-minute")).toBeNull(); expect(queryByTestId("duration-scroll-second")).toBeNull(); }); }); //# sourceMappingURL=TimerPicker.test.js.map