@zohodesk/dot
Version:
In this Library, we Provide Some Basic Components to Build Your Application
131 lines (129 loc) • 4.08 kB
JavaScript
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();
});
});