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 🍏
73 lines (72 loc) • 3.34 kB
JavaScript
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("@testing-library/react-native");
var _TimerPickerModal = _interopRequireDefault(require("../components/TimerPickerModal"));
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("TimerPickerModal", () => {
const mockOnConfirm = jest.fn();
const mockOnCancel = jest.fn();
const defaultProps = {
visible: true,
setIsVisible: jest.fn(),
onConfirm: mockOnConfirm,
onCancel: mockOnCancel
};
it("renders without crashing", () => {
const {
getByTestId
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, defaultProps));
const component = getByTestId("timer-picker-modal");
expect(component).toBeDefined();
});
it("calls onConfirm when Confirm button is pressed", () => {
const {
getByText
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, defaultProps));
const confirmButton = getByText("Confirm");
_reactNative.fireEvent.press(confirmButton);
expect(mockOnConfirm).toHaveBeenCalled();
});
it("calls onCancel when Cancel button is pressed", () => {
const {
getByText
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, defaultProps));
const cancelButton = getByText("Cancel");
_reactNative.fireEvent.press(cancelButton);
expect(mockOnCancel).toHaveBeenCalled();
});
it("hides the modal when Cancel button is pressed", () => {
const setIsVisibleMock = jest.fn();
const {
getByText
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
setIsVisible: setIsVisibleMock
})));
const cancelButton = getByText("Cancel");
_reactNative.fireEvent.press(cancelButton);
expect(setIsVisibleMock).toHaveBeenCalledWith(false);
});
it("hides the modal when overlay is pressed", () => {
const setIsVisibleMock = jest.fn();
const {
getByTestId
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, _extends({}, defaultProps, {
closeOnOverlayPress: true,
setIsVisible: setIsVisibleMock
})));
const overlay = getByTestId("modal-backdrop");
_reactNative.fireEvent.press(overlay);
expect(setIsVisibleMock).toHaveBeenCalledWith(false);
});
it("calls onConfirm with selected duration when Confirm button is pressed", () => {
const {
getByText
} = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(_TimerPickerModal.default, defaultProps));
// Select duration in TimerPicker, assuming its interaction is tested separately
const confirmButton = getByText("Confirm");
_reactNative.fireEvent.press(confirmButton);
expect(mockOnConfirm).toHaveBeenCalledWith(expect.objectContaining({}));
});
});
//# sourceMappingURL=TimerPickerModal.test.js.map
;