UNPKG

@zohodesk/dot

Version:

In this Library, we Provide Some Basic Components to Build Your Application

131 lines (129 loc) 4.08 kB
import React from 'react'; import { render } from '@testing-library/react'; import Link from "../Link"; import LinkContext from "../LinkContext"; describe('Link Component Snapshot Tests', () => { const targetOptions = ['_blank', '_self']; const mockContextOptions = { options: { isLink: true, constructURL: jest.fn((urlName, urlData) => `https://zoho.com/${urlName}/${urlData || ''}`) } }; const renderWithProvider = component => render( /*#__PURE__*/React.createElement(LinkContext.Provider, { value: mockContextOptions }, component)); test('renders with default props', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, null)); expect(asFragment()).toMatchSnapshot(); }); test('renders with children content', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, null, "Click Here")); expect(asFragment()).toMatchSnapshot(); }); test('renders with href prop', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { href: "https://zoho.com" })); expect(asFragment()).toMatchSnapshot(); }); test.each(targetOptions)('renders with target - %s', target => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { target: target })); expect(asFragment()).toMatchSnapshot(); }); test('renders with urlName and urlData using provider', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { urlName: "profile", urlData: { id: 123 } })); expect(mockContextOptions.options.constructURL).toHaveBeenCalledWith('profile', { id: 123 }); expect(asFragment()).toMatchSnapshot(); }); test('renders with urlName and undefined urlData using provider', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { urlName: "profile" })); expect(mockContextOptions.options.constructURL).toHaveBeenCalledWith('profile', undefined); expect(asFragment()).toMatchSnapshot(); }); test('renders with urlName and urlData as undefined using provider', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { urlName: undefined, urlData: undefined })); expect(mockContextOptions.options.constructURL).toHaveBeenCalledWith(undefined, undefined); expect(asFragment()).toMatchSnapshot(); }); test('renders with custom className', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { className: "custom-link" })); expect(asFragment()).toMatchSnapshot(); }); test('renders with title prop', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { title: "Example Title" })); expect(asFragment()).toMatchSnapshot(); }); test('renders with download attribute', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { download: true })); expect(asFragment()).toMatchSnapshot(); }); test('renders with rel attribute', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { rel: "noopener noreferrer" })); expect(asFragment()).toMatchSnapshot(); }); test('renders with dataId prop', () => { const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { dataId: "test-id" })); expect(asFragment()).toMatchSnapshot(); }); test('renders with customProps', () => { const customProps = { 'data-custom': 'customValue', 'data-id': 'uniqueId' }; const { asFragment } = renderWithProvider( /*#__PURE__*/React.createElement(Link, { customProps: customProps })); expect(asFragment()).toMatchSnapshot(); }); });