// @ts-nocheck
import * as React from "react"
import TestRenderer from "react-test-renderer"
import { act } from "react-dom/test-utils"
import { mount } from "enzyme"
import async from "async"
import TimePicker from ".."
class TimePickerTest extends React.Component {
state = {
value: "09:00",
}
render() {
const { value } = this.state
return (
this.setState({ value: val })}
minTime="08:40"
maxTime="09:20"
ref={(node) => {
if (node) {
this.picker = node
}
return null
}}
/>
)
}
}
function timeout(ms: number) {
return (done: () => void) => {
setTimeout(done, ms)
}
}
describe("TimePicker", () => {
beforeAll(() => {
jest.useFakeTimers()
})
afterAll(() => {
jest.useRealTimers()
})
it("是否正确渲染", () => {
const wrapper = TestRenderer.create()
expect(wrapper).toMatchSnapshot()
})
it("各种情况快照核对", () => {
const wrapper0 = TestRenderer.create(
)
expect(wrapper0).toMatchSnapshot()
})
it("输入事件", () => {
const wrapper = mount()
const input = wrapper.find("input")
input.simulate("focus")
expect(wrapper.find("Popover").props().visible).toEqual(true)
input.simulate("change", { target: { value: " " } })
input.simulate("change", { target: { value: "16:07" } })
expect(wrapper.find("Input").props().value).toEqual("16:07")
input.simulate("keydown", { keyCode: 13 })
expect(wrapper.find("Popover").props().visible).toEqual(false)
})
it("点击事件", () => {
const wrapper = mount()
expect(wrapper.find("Popover").props().visible).toEqual(false)
wrapper.find("input").simulate("focus")
expect(wrapper.find("Popover").props().visible).toEqual(true)
act(() => {
wrapper.find(".adui-time-item").at(0).simulate("click")
jest.advanceTimersByTime(50)
wrapper.update()
expect(wrapper.find("Input").props().value).toEqual("08:40")
wrapper.find(".adui-time-item").at(42).simulate("click")
wrapper.update()
jest.advanceTimersByTime(50)
expect(wrapper.find("Input").props().value).toEqual("08:40")
wrapper.find("input").simulate("change", { target: { value: "07:40" } })
wrapper.find("input").simulate("change", { target: { value: "08:4" } })
wrapper.update()
expect(wrapper.find("Input").props().value).toEqual("08:40")
})
// act(() => {
// wrapper
// .find(".adui-time-item")
// .at(1)
// .simulate("click")
// wrapper.update()
// jest.advanceTimersByTime(350)
// expect(wrapper.find("Input").props().value).toEqual("09:20")
// done()
// })
// act(() => {
// wrapper
// .find(".adui-time-item")
// .at(1)
// .simulate("click")
// wrapper.update()
// expect(wrapper.find("Input").props().value).toEqual("09:20")
// })
// act(() => {
// wrapper
// .find(".adui-time-item")
// .at(0)
// .simulate("click")
// wrapper.update()
// expect(wrapper.find("Input").props().value).toEqual("08:40")
// })
})
it("内部驱动", () => {
const wrapper = mount()
const input = wrapper.find("input")
input.simulate("focus")
expect(wrapper.find("Popover").props().visible).toEqual(true)
wrapper.find(".adui-time-item").at(0).simulate("click")
expect(wrapper.find("Input").props().value).toEqual("00:20")
})
it("外部控制", () => {
const wrapper = mount()
const input = wrapper.find("input")
input.simulate("focus")
expect(wrapper.find("Popover").props().visible).toEqual(true)
wrapper.find(".adui-time-item").at(0).simulate("click")
expect(wrapper.find("Input").props().value).toEqual("09:00")
})
it("测试禁用", () => {
const wrapper = mount()
const input = wrapper.find("input")
input.simulate("click")
expect(wrapper.find("Popover").props().visible).toEqual(false)
})
it("测试最大时间和最小时间", () => {
const wrapper = mount(
)
const input = wrapper.find("input")
input.simulate("change", { target: { value: "09:30" } })
input.simulate("focus")
expect(wrapper.find("Popover").props().visible).toEqual(true)
})
})