2019-09-13 14:07:03 +00:00
|
|
|
import React from "react";
|
|
|
|
import { mount, shallow } from "enzyme";
|
|
|
|
import DatePicker from "./";
|
2019-09-18 07:52:55 +00:00
|
|
|
import NewCalendar from "../calendar";
|
2019-09-17 07:41:35 +00:00
|
|
|
import InputBlock from "../input-block";
|
2019-09-13 14:07:03 +00:00
|
|
|
import moment from "moment";
|
2019-09-08 16:57:00 +00:00
|
|
|
|
2019-09-13 14:07:03 +00:00
|
|
|
const selectedDate = new Date("09/12/2019");
|
|
|
|
const minDate = new Date("01/01/1970");
|
|
|
|
const maxDate = new Date("01/01/2020");
|
|
|
|
describe("DatePicker tests", () => {
|
|
|
|
it("DatePicker renders without error", () => {
|
|
|
|
const wrapper = mount(<DatePicker />);
|
2019-09-08 16:57:00 +00:00
|
|
|
expect(wrapper).toExist();
|
|
|
|
});
|
2019-09-13 14:07:03 +00:00
|
|
|
|
|
|
|
it("DatePicker disabled when isDisabled is passed", () => {
|
|
|
|
const wrapper = mount(<DatePicker isDisabled={true} />);
|
|
|
|
expect(wrapper.prop("isDisabled")).toEqual(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("DatePicker opened when inOpen is passed", () => {
|
|
|
|
const wrapper = mount(<DatePicker inOpen={true} />);
|
|
|
|
expect(wrapper.prop("inOpen")).toEqual(true);
|
|
|
|
});
|
|
|
|
|
2019-09-17 07:41:35 +00:00
|
|
|
it("DatePicker has rendered content NewCalendar", () => {
|
|
|
|
const wrapper = mount(<DatePicker inOpen={true} />);
|
|
|
|
expect(wrapper).toExist(<NewCalendar />);
|
|
|
|
});
|
|
|
|
it("DatePicker has rendered content InputBlock", () => {
|
|
|
|
const wrapper = mount(<DatePicker />);
|
|
|
|
expect(wrapper).toExist(<InputBlock />);
|
|
|
|
});
|
|
|
|
|
2019-09-13 14:07:03 +00:00
|
|
|
it("DatePicker hasError is passed", () => {
|
|
|
|
const wrapper = mount(<DatePicker hasError={true} />);
|
|
|
|
expect(wrapper.prop("hasError")).toEqual(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("DatePicker disabled when isReadOnly is passed", () => {
|
|
|
|
const wrapper = mount(<DatePicker isReadOnly={true} />);
|
|
|
|
expect(wrapper.prop("isReadOnly")).toEqual(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("DatePicker minDate test", () => {
|
|
|
|
const wrapper = mount(<DatePicker minDate={minDate} />);
|
|
|
|
expect(wrapper.props().minDate).toEqual(minDate);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("DatePicker maxDate test", () => {
|
|
|
|
const wrapper = mount(<DatePicker maxDate={maxDate} />);
|
|
|
|
expect(wrapper.props().maxDate).toEqual(maxDate);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("DatePicker selectedDate test", () => {
|
|
|
|
const wrapper = mount(<DatePicker selectedDate={selectedDate} />);
|
|
|
|
expect(wrapper.props().selectedDate).toEqual(selectedDate);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("DatePicker themeColor test", () => {
|
|
|
|
const wrapper = mount(<DatePicker themeColor={"#fff"} />);
|
|
|
|
expect(wrapper.props().themeColor).toEqual("#fff");
|
|
|
|
});
|
|
|
|
|
2019-09-17 12:52:10 +00:00
|
|
|
it("DatePicker input mask test", () => {
|
|
|
|
const mask = [/\d/, /\d/, "/", /\d/, /\d/, "/", /\d/, /\d/, /\d/, /\d/];
|
|
|
|
const wrapper = mount(<InputBlock mask={mask} />);
|
|
|
|
expect(wrapper.props().mask).toBe(mask);
|
|
|
|
expect(wrapper.props().mask).toEqual(mask);
|
|
|
|
});
|
|
|
|
|
2019-09-17 07:41:35 +00:00
|
|
|
it("DatePicker locale test", () => {
|
|
|
|
const wrapper = mount(<DatePicker locale={"en-GB"} />);
|
|
|
|
expect(wrapper.prop("locale")).toEqual("en-GB");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("DatePicker input value with locale test", () => {
|
|
|
|
moment.locale("ru");
|
|
|
|
const value = moment(selectedDate).format("L");
|
|
|
|
const wrapper = mount(<DatePicker value={value} />);
|
|
|
|
expect(wrapper.props().value).toEqual("12.09.2019");
|
2019-09-13 14:07:03 +00:00
|
|
|
});
|
|
|
|
|
2019-09-17 07:41:35 +00:00
|
|
|
it("DatePicker check the onChange callback", () => {
|
|
|
|
const onChange = jest.fn();
|
|
|
|
const props = {
|
|
|
|
value: "03/03/2000",
|
2020-10-16 13:16:01 +00:00
|
|
|
onChange,
|
2019-09-17 07:41:35 +00:00
|
|
|
};
|
|
|
|
const wrapper = mount(<DatePicker {...props} />).find("input");
|
|
|
|
wrapper.simulate("change", { target: { value: "09/09/2019" } });
|
|
|
|
expect(onChange).toHaveBeenCalledWith(new Date("09/09/2019"));
|
2019-09-13 14:07:03 +00:00
|
|
|
});
|
2019-09-20 06:00:11 +00:00
|
|
|
|
2019-11-22 10:44:24 +00:00
|
|
|
/*it("check DatePicker popup open", () => {
|
2019-09-17 07:41:35 +00:00
|
|
|
const onFocus = jest.fn(() => true);
|
2019-09-20 06:00:11 +00:00
|
|
|
const wrapper = mount(<DatePicker onFocus={onFocus} isOpen={false} />);
|
|
|
|
const input = wrapper.find("input");
|
2019-09-17 07:41:35 +00:00
|
|
|
input.simulate("focus");
|
2019-09-17 12:23:38 +00:00
|
|
|
|
|
|
|
const instance = wrapper.instance();
|
|
|
|
expect(instance.state.isOpen).toEqual(true);
|
2019-11-22 10:44:24 +00:00
|
|
|
});*/
|
2019-09-17 12:56:25 +00:00
|
|
|
|
|
|
|
it("DatePicker check the Calendar onChange callback", () => {
|
|
|
|
const onChange = jest.fn();
|
|
|
|
const props = {
|
|
|
|
value: "03/03/2000",
|
|
|
|
isOpen: true,
|
2020-10-16 13:16:01 +00:00
|
|
|
onChange,
|
2019-09-17 12:56:25 +00:00
|
|
|
};
|
|
|
|
const wrapper = mount(<DatePicker {...props} />);
|
|
|
|
|
|
|
|
const days = wrapper.find(".calendar-month");
|
|
|
|
|
|
|
|
days.first().simulate("click", { target: { value: 1 } });
|
|
|
|
|
|
|
|
expect(onChange).toHaveBeenCalled();
|
|
|
|
});
|
2019-09-18 10:21:23 +00:00
|
|
|
|
2019-09-20 06:00:11 +00:00
|
|
|
it("DatePicker check Compare date function", () => {
|
2019-09-18 10:21:23 +00:00
|
|
|
const date = new Date();
|
|
|
|
const errorDate = new Date("01/01/3000");
|
|
|
|
const wrapper = shallow(<DatePicker />).instance();
|
|
|
|
expect(wrapper.compareDate(date)).toEqual(true);
|
|
|
|
expect(wrapper.compareDate(errorDate)).toEqual(false);
|
|
|
|
});
|
|
|
|
|
2019-09-20 06:00:11 +00:00
|
|
|
it("DatePicker check Compare dates function", () => {
|
2019-09-18 10:21:23 +00:00
|
|
|
const date = new Date();
|
|
|
|
const wrapper = shallow(<DatePicker />).instance();
|
|
|
|
expect(wrapper.compareDates(date, date) === 0).toEqual(true);
|
|
|
|
expect(wrapper.compareDates(date, new Date("01/01/2000")) === 0).toEqual(
|
|
|
|
false
|
|
|
|
);
|
|
|
|
});
|
2019-09-20 06:00:11 +00:00
|
|
|
|
|
|
|
it("DatePicker check is valid dates function", () => {
|
|
|
|
var date = new Date();
|
|
|
|
date.setFullYear(1);
|
|
|
|
const wrapper = shallow(<DatePicker />).instance();
|
|
|
|
expect(wrapper.isValidDate(selectedDate, maxDate, minDate, false)).toEqual(
|
|
|
|
false
|
|
|
|
);
|
|
|
|
expect(wrapper.isValidDate(date, maxDate, minDate, false)).toEqual(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("DatePicker componentDidUpdate() lifecycle test", () => {
|
|
|
|
const props = {
|
|
|
|
selectedDate: new Date(),
|
|
|
|
minDate: new Date("01/01/1970"),
|
|
|
|
maxDate: new Date("01/01/2030"),
|
|
|
|
isOpen: true,
|
|
|
|
isDisabled: false,
|
|
|
|
isReadOnly: false,
|
|
|
|
hasError: false,
|
|
|
|
themeColor: "#ED7309",
|
2020-10-16 13:16:01 +00:00
|
|
|
locale: "en",
|
2019-09-20 06:00:11 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
var date = new Date();
|
|
|
|
date.setFullYear(1);
|
|
|
|
|
|
|
|
const wrapper = mount(<DatePicker {...props} />).instance();
|
|
|
|
wrapper.componentDidUpdate(wrapper.props, wrapper.state);
|
|
|
|
|
|
|
|
expect(wrapper.props).toBe(wrapper.props);
|
|
|
|
expect(wrapper.state).toBe(wrapper.state);
|
|
|
|
|
|
|
|
const wrapper2 = mount(
|
|
|
|
<DatePicker
|
|
|
|
{...props}
|
|
|
|
selectedDate={date}
|
|
|
|
hasError={false}
|
|
|
|
size="big"
|
|
|
|
isDisabled={false}
|
|
|
|
/>
|
|
|
|
).instance();
|
|
|
|
|
|
|
|
wrapper2.componentDidUpdate(wrapper2.props, wrapper2.state);
|
|
|
|
|
|
|
|
expect(wrapper2.props).toBe(wrapper2.props);
|
|
|
|
expect(wrapper2.state).toBe(wrapper2.state);
|
|
|
|
});
|
|
|
|
|
2020-10-16 13:16:01 +00:00
|
|
|
it("componentWillUnmount() lifecycle test", () => {
|
2019-09-20 06:00:11 +00:00
|
|
|
const wrapper = mount(<DatePicker isOpen={true} />);
|
2020-10-16 13:16:01 +00:00
|
|
|
const componentWillUnmount = jest.spyOn(
|
|
|
|
wrapper.instance(),
|
|
|
|
"componentWillUnmount"
|
|
|
|
);
|
2019-09-20 06:00:11 +00:00
|
|
|
|
|
|
|
wrapper.unmount();
|
|
|
|
expect(componentWillUnmount).toHaveBeenCalled();
|
|
|
|
});
|
2019-11-27 13:34:11 +00:00
|
|
|
|
2020-10-16 13:16:01 +00:00
|
|
|
it("accepts id", () => {
|
|
|
|
const wrapper = mount(<DatePicker isOpen={true} id="testId" />);
|
2019-11-27 13:34:11 +00:00
|
|
|
|
2020-10-16 13:16:01 +00:00
|
|
|
expect(wrapper.prop("id")).toEqual("testId");
|
2019-11-27 13:34:11 +00:00
|
|
|
});
|
|
|
|
|
2020-10-16 13:16:01 +00:00
|
|
|
it("accepts className", () => {
|
|
|
|
const wrapper = mount(<DatePicker isOpen={true} className="test" />);
|
2019-11-27 13:34:11 +00:00
|
|
|
|
2020-10-16 13:16:01 +00:00
|
|
|
expect(wrapper.prop("className")).toEqual("test");
|
2019-11-27 13:34:11 +00:00
|
|
|
});
|
|
|
|
|
2020-10-16 13:16:01 +00:00
|
|
|
it("accepts style", () => {
|
2019-11-27 13:34:11 +00:00
|
|
|
const wrapper = mount(
|
2020-10-16 13:16:01 +00:00
|
|
|
<DatePicker isOpen={true} style={{ color: "red" }} />
|
2019-11-27 13:34:11 +00:00
|
|
|
);
|
|
|
|
|
2020-10-16 13:16:01 +00:00
|
|
|
expect(wrapper.getDOMNode().style).toHaveProperty("color", "red");
|
2019-11-27 13:34:11 +00:00
|
|
|
});
|
2019-09-08 16:57:00 +00:00
|
|
|
});
|