From ea1df2d25342e327860d70907d4662910a5458a0 Mon Sep 17 00:00:00 2001 From: simeng-li Date: Mon, 20 Jun 2022 09:45:03 +0800 Subject: [PATCH] test(ui): add ut (#1136) add ut --- .../SocialSignInDropdown/index.test.tsx | 39 ++++++++++++++++++- .../TermsOfUsePromiseModal/index.test.tsx | 36 +++++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 packages/ui/src/containers/TermsOfUse/TermsOfUsePromiseModal/index.test.tsx diff --git a/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.test.tsx b/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.test.tsx index c32f3ff43..a17b6b725 100644 --- a/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.test.tsx +++ b/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.test.tsx @@ -1,18 +1,34 @@ +import { fireEvent } from '@testing-library/react'; import React from 'react'; import { MemoryRouter } from 'react-router-dom'; import renderWithPageContext from '@/__mocks__/RenderWithPageContext'; import SettingsProvider from '@/__mocks__/RenderWithPageContext/SettingsProvider'; import { socialConnectors } from '@/__mocks__/logto'; +import { ConnectorData } from '@/types'; import SocialSignInDropdown from '.'; +const mockInvokeSocialSignIn = jest.fn(); + +// eslint-disable-next-line unicorn/consistent-function-scoping +jest.mock('@/hooks/use-social', () => () => ({ + invokeSocialSignIn: (connector: ConnectorData) => { + mockInvokeSocialSignIn(connector); + }, +})); + describe('SocialSignInDropdown', () => { it('render properly', () => { const { queryByText } = renderWithPageContext( - + ); @@ -21,4 +37,25 @@ describe('SocialSignInDropdown', () => { expect(queryByText(name.en)).not.toBeNull(); } }); + + it('invokeSignIn', () => { + const { getByText } = renderWithPageContext( + + + + + + ); + + if (socialConnectors[0]?.name.en) { + const socialLink = getByText(socialConnectors[0]?.name.en); + fireEvent.click(socialLink); + expect(mockInvokeSocialSignIn).toBeCalledWith(socialConnectors[0]); + } + }); }); diff --git a/packages/ui/src/containers/TermsOfUse/TermsOfUsePromiseModal/index.test.tsx b/packages/ui/src/containers/TermsOfUse/TermsOfUsePromiseModal/index.test.tsx new file mode 100644 index 000000000..d1d70bb61 --- /dev/null +++ b/packages/ui/src/containers/TermsOfUse/TermsOfUsePromiseModal/index.test.tsx @@ -0,0 +1,36 @@ +import { fireEvent } from '@testing-library/react'; +import React from 'react'; + +import renderWithPageContext from '@/__mocks__/RenderWithPageContext'; +import SettingsProvider from '@/__mocks__/RenderWithPageContext/SettingsProvider'; + +import TermsOfUsePromiseModal from '.'; + +describe('TermsOfUsePromiseModal', () => { + it('render properly', () => { + const onResolve = jest.fn(); + const onReject = jest.fn(); + + const { getByText } = renderWithPageContext( + + + + ); + + const confirmButton = getByText('action.agree'); + const cancelButton = getByText('action.cancel'); + + fireEvent.click(confirmButton); + expect(onResolve).toBeCalledWith(true); + + fireEvent.click(cancelButton); + expect(onReject).toBeCalledWith(false); + }); +});