diff --git a/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/components/__tests__/Toast.test.js b/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/components/__tests__/Toast.test.js
index e3b912cbf..c68d6f3b3 100644
--- a/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/components/__tests__/Toast.test.js
+++ b/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/components/__tests__/Toast.test.js
@@ -1,82 +1,83 @@
import React from 'react';
-import { shallow } from '@theforeman/test';
+import { render, screen } from '@testing-library/react';
+import { MemoryRouter } from 'react-router-dom';
+import '@testing-library/jest-dom';
import Toast from '../Toast';
+jest.mock('foremanReact/common/I18n', () => ({
+ translate: jest.fn(str => str),
+}));
+
+const renderToast = (props = {}) =>
+ render(
+
+
+
+ );
+
+const omittedText =
+ 'Excluded from upload to console.redhat.com Inventory service because host_registration_insights_inventory parameter value is false:';
+
describe('Toast', () => {
it('renders with all three status counts including user_omitted', () => {
- const wrapper = shallow(
-
- );
-
- const links = wrapper.find('HostsWithStatusLink');
- expect(links).toHaveLength(3);
+ renderToast({ userOmittedHosts: 2 });
- // Check the children (numbers) of each link
- expect(
- links
- .at(0)
- .children()
- .text()
- ).toBe('5');
- expect(
- links
- .at(1)
- .children()
- .text()
- ).toBe('3');
- expect(
- links
- .at(2)
- .children()
- .text()
- ).toBe('2');
+ expect(screen.getByRole('link', { name: '10' })).toHaveAttribute(
+ 'href',
+ '/new/hosts?search=set%3F+subscription_uuid&page=1'
+ );
+ expect(screen.getByRole('link', { name: '5' })).toHaveAttribute(
+ 'href',
+ '/new/hosts?search=insights_inventory_sync_status+%3D+sync&page=1'
+ );
+ expect(screen.getByRole('link', { name: '3' })).toHaveAttribute(
+ 'href',
+ '/new/hosts?search=insights_inventory_sync_status+%3D+disconnect&page=1'
+ );
+ expect(screen.getByRole('link', { name: '2' })).toHaveAttribute(
+ 'href',
+ '/new/hosts?search=insights_inventory_sync_status+%3D+user_omitted&page=1'
+ );
+ expect(screen.getByText(omittedText, { exact: false })).toBeInTheDocument();
});
it('does not render user_omitted section when count is 0', () => {
- const wrapper = shallow(
-
- );
-
- // Should have only 2 HostsWithStatusLink components (sync and disconnect)
- const links = wrapper.find('HostsWithStatusLink');
- expect(links).toHaveLength(2);
+ renderToast({ userOmittedHosts: 0 });
- // Should not contain the user_omitted explanation text
- expect(wrapper.text()).not.toContain(
- 'host_registration_insights_inventory parameter value is false'
- );
+ expect(screen.getByRole('link', { name: '8' })).toBeInTheDocument();
+ expect(screen.getByRole('link', { name: '5' })).toBeInTheDocument();
+ expect(screen.getByRole('link', { name: '3' })).toBeInTheDocument();
+ expect(screen.queryByRole('link', { name: '2' })).not.toBeInTheDocument();
+ expect(
+ screen.queryByText(omittedText, { exact: false })
+ ).not.toBeInTheDocument();
});
it('renders without crashing when userOmittedHosts is not provided (default)', () => {
- const wrapper = shallow();
-
- // Should use default value of 0, so only 2 links
- const links = wrapper.find('HostsWithStatusLink');
- expect(links).toHaveLength(2);
+ renderToast();
- // Verify the count values
+ expect(screen.getByRole('link', { name: '8' })).toBeInTheDocument();
+ expect(screen.getByRole('link', { name: '5' })).toBeInTheDocument();
+ expect(screen.getByRole('link', { name: '3' })).toBeInTheDocument();
expect(
- links
- .at(0)
- .children()
- .text()
- ).toBe('5');
- expect(
- links
- .at(1)
- .children()
- .text()
- ).toBe('3');
+ screen.queryByText(omittedText, { exact: false })
+ ).not.toBeInTheDocument();
});
it('renders correct status links for each category', () => {
- const wrapper = shallow(
-
- );
+ renderToast({ userOmittedHosts: 2 });
- const links = wrapper.find('HostsWithStatusLink');
- expect(links.at(0).prop('statusName')).toBe('sync');
- expect(links.at(1).prop('statusName')).toBe('disconnect');
- expect(links.at(2).prop('statusName')).toBe('user_omitted');
+ expect(screen.getByRole('link', { name: '5' })).toHaveAttribute(
+ 'href',
+ expect.stringContaining('sync')
+ );
+ expect(screen.getByRole('link', { name: '3' })).toHaveAttribute(
+ 'href',
+ expect.stringContaining('disconnect')
+ );
+ expect(screen.getByRole('link', { name: '2' })).toHaveAttribute(
+ 'href',
+ expect.stringContaining('user_omitted')
+ );
});
});