test
)).toBe(true); + }); + it('isFragment', () => { + expect(isFragment(test
)).toBe(false); + expect(isFragment(<>test>)).toBe(true); + }); + it('replaceElement', () => { + const node =test
; + expect(replaceElement(null, node)).toBe(node); + expect(replaceElement(node, node)).toStrictEqual(node); + }); + it('cloneElement', () => { + const node =test
; + expect(cloneElement(null)).toBe(null); + expect(cloneElement(node)).toStrictEqual(node); + }); +}); diff --git a/components/_util/__tests__/responsiveObserve.test.ts b/components/_util/__tests__/responsiveObserve.test.ts new file mode 100644 index 0000000..6ab86ec --- /dev/null +++ b/components/_util/__tests__/responsiveObserve.test.ts @@ -0,0 +1,14 @@ +import ResponsiveObserve, { responsiveMap } from '../responsiveObserve'; + +describe('Test ResponsiveObserve', () => { + it('test ResponsiveObserve subscribe and unsubscribe', () => { + const { xs } = responsiveMap; + const subscribeFunc = jest.fn(); + const token = ResponsiveObserve.subscribe(subscribeFunc); + expect(ResponsiveObserve.matchHandlers[xs].mql.matches).toBeTruthy(); + expect(subscribeFunc).toHaveBeenCalledTimes(1); + + ResponsiveObserve.unsubscribe(token); + expect(ResponsiveObserve.matchHandlers[xs].mql.removeListener).toHaveBeenCalled(); + }); +}); diff --git a/components/_util/__tests__/scrollTo.test.ts b/components/_util/__tests__/scrollTo.test.ts new file mode 100644 index 0000000..5fe2e09 --- /dev/null +++ b/components/_util/__tests__/scrollTo.test.ts @@ -0,0 +1,72 @@ +import { waitFakeTimer } from '../../../tests/utils'; +import scrollTo from '../scrollTo'; + +describe('Test ScrollTo function', () => { + const dateNowMock = jest.spyOn(Date, 'now'); + + beforeAll(() => { + jest.useFakeTimers(); + }); + + beforeEach(() => { + dateNowMock.mockReturnValueOnce(0).mockReturnValueOnce(1000); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + afterEach(() => { + jest.clearAllTimers(); + dateNowMock.mockClear(); + }); + + it('test scrollTo', async () => { + const scrollToSpy = jest.spyOn(window, 'scrollTo').mockImplementation((_, y) => { + window.scrollY = y; + window.pageYOffset = y; + }); + + scrollTo(1000); + await waitFakeTimer(); + + expect(window.pageYOffset).toBe(1000); + + scrollToSpy.mockRestore(); + }); + + it('test callback - option', async () => { + const cbMock = jest.fn(); + scrollTo(1000, { + callback: cbMock, + }); + await waitFakeTimer(); + expect(cbMock).toHaveBeenCalledTimes(1); + }); + + it('test getContainer - option', async () => { + const div = document.createElement('div'); + scrollTo(1000, { + getContainer: () => div, + }); + await waitFakeTimer(); + expect(div.scrollTop).toBe(1000); + }); + + it('test getContainer document - option', async () => { + scrollTo(1000, { + getContainer: () => document, + }); + await waitFakeTimer(); + expect(document.documentElement.scrollTop).toBe(1000); + }); + + it('test duration - option', async () => { + scrollTo(1000, { + duration: 1100, + getContainer: () => document, + }); + await waitFakeTimer(); + expect(document.documentElement.scrollTop).toBe(1000); + }); +}); diff --git a/components/_util/__tests__/transButton.test.tsx b/components/_util/__tests__/transButton.test.tsx new file mode 100644 index 0000000..6f1fef1 --- /dev/null +++ b/components/_util/__tests__/transButton.test.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import TransButton from '../transButton'; +import { render } from '../../../tests/utils'; + +describe('transButton component', () => { + it('disabled should update style', () => { + const { container } = render(+ placeholder text here +
++ placeholder text here +
+placeholder text here
+