diff --git a/src/link/__tests__/link.test.tsx b/src/link/__tests__/link.test.tsx index 5b4e80e85..59daeec64 100644 --- a/src/link/__tests__/link.test.tsx +++ b/src/link/__tests__/link.test.tsx @@ -1,4 +1,68 @@ -import { testExamples } from '@test/utils'; +/* + * @Author: CarltonJin + * @Date: 2022-08-21 + * @FilePath: /tdesign-react/src/link/__tests__/link.test.tsx + */ +import React, { FunctionComponent, ComponentClass } from 'react'; +import { testExamples, render, screen, fireEvent } from '@test/utils'; +import userEvent from '@testing-library/user-event'; +import Link from '../Link'; + +export interface TestExampleOverrides { + [exampleFileName: string]: (Component: FunctionComponent | ComponentClass) => void | Promise; +} // 测试组件代码 Example 快照 testExamples(__dirname); + +describe('Link', () => { + test('base', () => { + const { container } = render(查看链接); + expect(container.querySelectorAll('.t-link')).toHaveLength(1); + expect(container.querySelectorAll('.t-link')[0].textContent).toEqual('查看链接'); + }); + + test('disabled', () => { + const fn = jest.fn(); + const { container } = render(); + expect(container.firstChild).toHaveClass('t-is-disabled', ''); + + userEvent.hover(screen.getByTestId('disabled')); + expect(screen.getByTestId('disabled')).not.toHaveClass('t-link--hover-underline'); + + fireEvent.click(container.firstChild); + expect(fn).toBeCalledTimes(0); + }); + + test('underline', () => { + const { container } = render(); + expect(container.firstChild).toHaveClass('t-is-underline'); + }); + + test('hover', () => { + const { container } = render(); + expect(container.firstChild).toHaveClass('t-link--hover-color'); + }); + + test('icon', () => { + render(} />); + expect(document.querySelector('.t-link__prefix-icon')).toBeInTheDocument(); + + render(} />); + expect(document.querySelector('.t-link__suffix-icon')).toBeInTheDocument(); + }); + + test('size', () => { + expect(render().container.firstChild).toHaveClass('t-size-l'); + expect(render().container.firstChild).toHaveClass('t-size-s'); + }); + + test('theme', () => { + expect(render().container.firstChild).toHaveClass('t-link--theme-danger', ''); + expect(render().container.firstChild).toHaveClass('t-link--theme-default', ''); + expect(render().container.firstChild).toHaveClass('t-link--theme-primary', ''); + expect(render().container.firstChild).toHaveClass('t-link--theme-success', ''); + expect(render().container.firstChild).toHaveClass('t-link--theme-warning', ''); + expect(render().container.firstChild).toHaveClass('t-link--theme-default', ''); + }); +});