import renderer from "react-test-renderer"; import combos from "combos"; import TimePicker from "../TimePicker"; import * as React from "react"; import { mount } from "enzyme"; import sinon from "sinon"; import Option from "../Option"; import DropDown from "../DropDown"; function noop() {} describe("TimePicker", () => { const _props = { selectedHour: [1, 12, undefined], selectedMinute: [0, 15, undefined] }; const _combos = combos(_props); test.each(_combos)("%o", props => { const timePicker = renderer.create( ); const tree = timePicker.toJSON(); expect(tree).toMatchSnapshot(); }); }); describe("TimePicker: functionality test", () => { test("should call onHourChange/onMinuteChange on click", () => { const spyHour = sinon.spy(); const spyMinute = sinon.spy(); const clock = sinon.useFakeTimers(); const timePicker = mount( ); timePicker.find("[data-test-id='hour-label']").simulate("click"); clock.tick(10000); timePicker .find(DropDown) .at(0) .find(Option) .at(0) .simulate("click"); expect(spyHour.calledOnce).toBeTruthy(); expect(spyHour.calledWith(1)).toBeTruthy(); timePicker.find("[data-test-id='minute-label']").simulate("click"); clock.tick(10000); timePicker .find(DropDown) .at(1) .find(Option) .at(0) .simulate("click"); expect(spyMinute.calledOnce).toBeTruthy(); expect(spyMinute.calledWith(0)).toBeTruthy(); }); });