test: Update CreateImageWizard tests

This updates following test suites after bumping react and testing-library:
- CreateImageWizard.azure.test.js
- CreateImageWizard.azure.2.test.js
- CreateImageWizard.content.test.js
- CreateImageWizard.test.js
This commit is contained in:
regexowl 2023-08-28 15:04:50 +02:00 committed by Lucas Garfield
parent 9f3ed3d0ec
commit e71d98da08
4 changed files with 467 additions and 725 deletions

View file

@ -2,6 +2,7 @@ import React from 'react';
import '@testing-library/jest-dom';
import { screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { rest } from 'msw';
import CreateImageWizard from '../../../Components/CreateImageWizard/CreateImageWizard';
@ -54,11 +55,12 @@ describe('Step Upload to Azure', () => {
jest.clearAllMocks();
});
const user = userEvent.setup();
const setUp = async () => {
renderCustomRoutesWithReduxRouter('imagewizard', {}, routes);
// select aws as upload destination
const azureTile = screen.getByTestId('upload-azure');
azureTile.click();
// select Azure as upload destination
await user.click(screen.getByTestId('upload-azure'));
await clickNext();

View file

@ -1,7 +1,7 @@
import React from 'react';
import '@testing-library/jest-dom';
import { act, screen, waitFor } from '@testing-library/react';
import { screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import CreateImageWizard from '../../../Components/CreateImageWizard/CreateImageWizard';
@ -74,8 +74,7 @@ describe('Step Upload to Azure', () => {
const setUp = async () => {
({ router } = renderCustomRoutesWithReduxRouter('imagewizard', {}, routes));
// select Azure as upload destination
const azureTile = screen.getByTestId('upload-azure');
azureTile.click();
user.click(await screen.findByTestId('upload-azure'));
await clickNext();
@ -87,7 +86,7 @@ describe('Step Upload to Azure', () => {
test('clicking Next loads Registration', async () => {
await setUp();
await user.click(screen.getByTestId('azure-radio-manual'));
await user.click(await screen.findByTestId('azure-radio-manual'));
// Randomly generated GUID
await user.type(
screen.getByTestId('azure-tenant-id-manual'),
@ -101,9 +100,7 @@ describe('Step Upload to Azure', () => {
screen.getByTestId('azure-resource-group-manual'),
'testResourceGroup'
);
await act(async () => {
await clickNext();
});
clickNext();
await screen.findByRole('textbox', {
name: 'Select activation key',
@ -130,14 +127,15 @@ describe('Step Upload to Azure', () => {
test('azure step basics works', async () => {
await setUp();
const nextButton = await getNextButton();
expect(await getNextButton()).toHaveClass('pf-m-disabled');
expect(nextButton).toHaveClass('pf-m-disabled');
expect(screen.getByTestId('azure-radio-source')).toBeChecked();
await user.click(screen.getByTestId('azure-radio-manual'));
expect(screen.getByTestId('azure-radio-manual')).toBeChecked();
expect(await getNextButton()).toHaveClass('pf-m-disabled');
expect(nextButton).toHaveClass('pf-m-disabled');
const tenantId = screen.getByTestId('azure-tenant-id-manual');
expect(tenantId).toHaveValue('');
@ -152,11 +150,11 @@ describe('Step Upload to Azure', () => {
expect(resourceGroup).toBeEnabled();
await user.type(resourceGroup, 'testGroup');
expect(await getNextButton()).not.toHaveClass('pf-m-disabled');
expect(nextButton).not.toHaveClass('pf-m-disabled');
screen.getByTestId('azure-radio-source').click();
user.click(screen.getByTestId('azure-radio-source'));
expect(await getNextButton()).toHaveClass('pf-m-disabled');
await waitFor(() => expect(nextButton).toHaveClass('pf-m-disabled'));
const sourceDropdown = await getSourceDropdown();
@ -164,26 +162,28 @@ describe('Step Upload to Azure', () => {
expect(screen.getByTestId('azure-tenant-id-source')).toHaveValue('');
expect(screen.getByTestId('azure-subscription-id-source')).toHaveValue('');
sourceDropdown.click();
user.click(sourceDropdown);
const source = await screen.findByRole('option', {
name: /azureSource1/i,
});
source.click();
user.click(
await screen.findByRole('option', {
name: /azureSource1/i,
})
);
// wait for fetching the upload info
await waitFor(() =>
expect(screen.getByTestId('azure-tenant-id-source')).not.toHaveValue('')
);
const resourceGroupDropdown = screen.getByRole('textbox', {
name: /select resource group/i,
});
await user.click(resourceGroupDropdown);
await user.click(
screen.getByRole('textbox', {
name: /select resource group/i,
})
);
const groups = screen.getAllByLabelText(/^Resource group/);
expect(groups).toHaveLength(2);
await user.click(screen.getByLabelText('Resource group myResourceGroup1'));
expect(await getNextButton()).not.toHaveClass('pf-m-disabled');
expect(nextButton).not.toHaveClass('pf-m-disabled');
}, 10000);
test('handles change of selected Source', async () => {
@ -191,30 +191,33 @@ describe('Step Upload to Azure', () => {
const sourceDropdown = await getSourceDropdown();
sourceDropdown.click();
const source = await screen.findByRole('option', {
name: /azureSource1/i,
});
source.click();
user.click(sourceDropdown);
user.click(
await screen.findByRole('option', {
name: /azureSource1/i,
})
);
await waitFor(() =>
expect(screen.getByTestId('azure-tenant-id-source')).not.toHaveValue('')
);
sourceDropdown.click();
const source2 = await screen.findByRole('option', {
name: /azureSource2/i,
});
source2.click();
user.click(sourceDropdown);
user.click(
await screen.findByRole('option', {
name: /azureSource2/i,
})
);
await waitFor(() =>
expect(screen.getByTestId('azure-tenant-id-source')).toHaveValue(
'73d5694c-7a28-417e-9fca-55840084f508'
)
);
const resourceGroupDropdown = screen.getByRole('textbox', {
name: /select resource group/i,
});
await user.click(resourceGroupDropdown);
await user.click(
screen.getByRole('textbox', {
name: /select resource group/i,
})
);
const groups = screen.getByLabelText(/^Resource group/);
expect(groups).toBeInTheDocument();
expect(screen.getByLabelText('Resource group theirGroup2')).toBeVisible();

View file

@ -2,7 +2,7 @@ import React from 'react';
import '@testing-library/jest-dom';
import { act, screen, waitFor, within } from '@testing-library/react';
import { screen, waitFor, within } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import api from '../../../api.js';
@ -69,11 +69,11 @@ jest
const searchForAvailablePackages = async (searchbox, searchTerm) => {
const user = userEvent.setup();
await user.type(searchbox, searchTerm);
await act(async () => {
screen
.getByRole('button', { name: /search button for available packages/i })
.click();
});
user.click(
await screen.findByRole('button', {
name: /search button for available packages/i,
})
);
};
const searchForChosenPackages = async (searchbox, searchTerm) => {
@ -119,44 +119,37 @@ describe('Step Packages', () => {
));
// select aws as upload destination
const awsTile = screen.getByTestId('upload-aws');
await act(async () => {
awsTile.click();
await clickNext();
});
await user.click(await screen.findByTestId('upload-aws'));
await clickNext();
// aws step
const manualRadio = screen.getByRole('radio', {
name: /manually enter an account id\./i,
});
manualRadio.click();
const aai = screen.getByTestId('aws-account-id');
await act(async () => {
await user.type(aai, '012345678901');
await clickNext();
});
user.click(
screen.getByRole('radio', {
name: /manually enter an account id\./i,
})
);
await user.type(
await screen.findByTestId('aws-account-id'),
'012345678901'
);
await clickNext();
// skip registration
await screen.findByRole('textbox', {
name: 'Select activation key',
});
const registerLaterRadio = screen.getByTestId('registration-radio-later');
await act(async () => {
await user.click(registerLaterRadio);
await clickNext();
// skip fsc
await clickNext();
});
user.click(await screen.findByTestId('registration-radio-later'));
await clickNext();
// skip fsc
await clickNext();
};
test('clicking Next loads Image name', async () => {
await setUp();
await act(async () => {
await clickNext();
});
await clickNext();
screen.getByRole('heading', {
await screen.findByRole('heading', {
name: 'Details',
});
});
@ -164,9 +157,7 @@ describe('Step Packages', () => {
test('clicking Back loads file system configuration', async () => {
await setUp();
await act(async () => {
await clickBack();
});
await clickBack();
screen.getByRole('heading', { name: /file system configuration/i });
});
@ -180,12 +171,12 @@ describe('Step Packages', () => {
test('should display search bar and button', async () => {
await setUp();
const sapi = screen.getByTestId('search-available-pkgs-input');
await act(async () => {
await user.type(sapi, 'test');
});
await user.type(
await screen.findByTestId('search-available-pkgs-input'),
'test'
);
screen.getByRole('button', {
await screen.findByRole('button', {
name: 'Search button for available packages',
});
});
@ -203,16 +194,14 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
await act(async () => {
searchbox.click();
});
await user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
'option'
);
const availablePackagesItems = await within(
availablePackagesList
).findAllByRole('option');
expect(availablePackagesItems).toHaveLength(3);
const [firstItem, secondItem, thirdItem] = availablePackagesItems;
expect(firstItem).toHaveTextContent('testsummary for test package');
@ -226,29 +215,15 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
await act(async () => {
searchbox.click();
});
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
const apt = screen.getByTestId('available-pkgs-testPkg');
await act(async () => {
apt.click();
});
const bas = screen.getByRole('button', { name: /Add selected/ });
await act(async () => {
bas.click();
});
await user.click(await screen.findByTestId('available-pkgs-testPkg'));
await user.click(screen.getByRole('button', { name: /Add selected/ }));
const spt = screen.getByTestId('selected-pkgs-testPkg');
await act(async () => {
spt.click();
});
const brs = screen.getByRole('button', { name: /Remove selected/ });
await act(async () => {
brs.click();
});
user.click(screen.getByTestId('selected-pkgs-testPkg'));
user.click(screen.getByRole('button', { name: /Remove selected/ }));
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
@ -267,20 +242,12 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
await act(async () => {
searchbox.click();
});
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
const baa = screen.getByRole('button', { name: /Add all/ });
await act(async () => {
baa.click();
});
const bra = screen.getByRole('button', { name: /Remove all/ });
await act(async () => {
bra.click();
});
user.click(screen.getByRole('button', { name: /Add all/ }));
await user.click(screen.getByRole('button', { name: /Remove all/ }));
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
@ -299,72 +266,39 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
await act(async () => {
searchbox.click();
});
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
const baa = screen.getByRole('button', { name: /Add all/ });
await act(async () => {
baa.click();
});
user.click(screen.getByRole('button', { name: /Add all/ }));
// remove a single package
const splt = screen.getByTestId('selected-pkgs-lib-test');
await act(async () => {
splt.click();
});
const brs = screen.getByRole('button', { name: /Remove selected/ });
await act(async () => {
brs.click();
});
await user.click(await screen.findByTestId('selected-pkgs-lib-test'));
user.click(screen.getByRole('button', { name: /Remove selected/ }));
// skip name page
const bn1 = screen.getByRole('button', { name: /Next/ });
await act(async () => {
bn1.click();
});
clickNext();
// review page
const bn2 = screen.getByRole('button', { name: /Next/ });
await act(async () => {
bn2.click();
});
clickNext();
// await screen.findByTestId('chosen-packages-count');
let chosen = await screen.findByTestId('chosen-packages-count');
expect(chosen).toHaveTextContent('2');
// remove another package
const bb1 = screen.getByRole('button', { name: /Back/ });
await act(async () => {
bb1.click();
});
const bb2 = screen.getByRole('button', { name: /Back/ });
await act(async () => {
bb2.click();
});
clickBack();
clickBack();
await screen.findByTestId('search-available-pkgs-input');
const op = screen.getByRole('option', {
name: /summary for test package/,
});
await act(async () => {
op.click();
});
const brs2 = screen.getByRole('button', { name: /Remove selected/ });
await act(async () => {
brs2.click();
});
user.click(
screen.getByRole('option', {
name: /summary for test package/,
})
);
user.click(screen.getByRole('button', { name: /Remove selected/ }));
// review page
const n1 = screen.getByRole('button', { name: /Next/ });
await act(async () => {
n1.click();
});
const n2 = screen.getByRole('button', { name: /Next/ });
await act(async () => {
n2.click();
});
clickNext();
clickNext();
// await screen.findByTestId('chosen-packages-count');
chosen = await screen.findByTestId('chosen-packages-count');
@ -377,12 +311,10 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
await act(async () => {
searchbox.click();
});
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'asdf');
screen.getByText('No results found');
await screen.findByText('No results found');
});
test('should display empty available state on failed search after a successful search', async () => {
@ -391,19 +323,19 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
await act(async () => {
searchbox.click();
});
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
screen
.getByRole('button', { name: /clear available packages search/i })
.click();
user.click(
await screen.findByRole('button', {
name: /clear available packages search/i,
})
);
await searchForAvailablePackages(searchbox, 'asdf');
screen.getByText('No results found');
await screen.findByText('No results found');
});
test('should display empty chosen state on failed search', async () => {
@ -413,12 +345,12 @@ describe('Step Packages', () => {
const searchboxChosen = screen.getAllByRole('textbox')[1];
await waitFor(() => expect(searchboxAvailable).toBeEnabled());
searchboxAvailable.click();
user.click(searchboxAvailable);
await searchForAvailablePackages(searchboxAvailable, 'test');
screen.getByRole('button', { name: /Add all/ }).click();
user.click(await screen.findByRole('button', { name: /Add all/ }));
searchboxChosen.click();
user.click(searchboxChosen);
await user.type(searchboxChosen, 'asdf');
expect(screen.getByText('No packages found')).toBeInTheDocument();
@ -432,7 +364,7 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
searchbox.click();
user.click(searchbox);
const getPackages = jest
.spyOn(api, 'getPackages')
@ -443,7 +375,7 @@ describe('Step Packages', () => {
});
await searchForAvailablePackages(searchbox, 'testPkg');
expect(getPackages).toHaveBeenCalledTimes(2);
await waitFor(() => expect(getPackages).toHaveBeenCalledTimes(2));
screen.getByText('Over 100 results found. Refine your search.');
screen.getByText('Too many results to display');
@ -455,7 +387,7 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
searchbox.click();
user.click(searchbox);
const getPackages = jest
.spyOn(api, 'getPackages')
@ -466,7 +398,7 @@ describe('Step Packages', () => {
});
await searchForAvailablePackages(searchbox, 'testPkg-128');
expect(getPackages).toHaveBeenCalledTimes(2);
await waitFor(() => expect(getPackages).toHaveBeenCalledTimes(2));
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getByRole(
@ -484,14 +416,14 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
searchbox.click();
user.click(searchbox);
const getPackages = jest
.spyOn(api, 'getPackages')
.mockImplementation(() => Promise.resolve(mockPkgResultAlpha));
await searchForAvailablePackages(searchbox, 'test');
expect(getPackages).toHaveBeenCalledTimes(1);
await waitFor(() => expect(getPackages).toHaveBeenCalledTimes(1));
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
@ -511,21 +443,25 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0];
await waitFor(() => expect(searchbox).toBeEnabled());
searchbox.click();
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
'option'
);
const availablePackagesItems = await within(
availablePackagesList
).findAllByRole('option');
expect(availablePackagesItems).toHaveLength(3);
screen
.getByRole('button', { name: /clear available packages search/i })
.click();
user.click(
await screen.findByRole('button', {
name: /clear available packages search/i,
})
);
screen.getByText('Search above to add additionalpackages to your image');
await screen.findByText(
'Search above to add additionalpackages to your image'
);
});
test('chosen packages can be reset after filtering', async () => {
@ -534,25 +470,26 @@ describe('Step Packages', () => {
const availableSearchbox = screen.getAllByRole('textbox')[0];
await waitFor(() => expect(availableSearchbox).toBeEnabled());
availableSearchbox.click();
user.click(availableSearchbox);
await searchForAvailablePackages(availableSearchbox, 'test');
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
'option'
);
expect(availablePackagesItems).toHaveLength(3);
const availablePackagesItems = await within(
availablePackagesList
).findAllByRole('option');
await waitFor(() => expect(availablePackagesItems).toHaveLength(3));
screen.getByRole('button', { name: /Add all/ }).click();
user.click(await screen.findByRole('button', { name: /Add all/ }));
const chosenPackagesList = screen.getByTestId('chosen-pkgs-list');
let chosenPackagesItems =
within(chosenPackagesList).getAllByRole('option');
expect(chosenPackagesItems).toHaveLength(3);
let chosenPackagesItems = await within(chosenPackagesList).findAllByRole(
'option'
);
await waitFor(() => expect(chosenPackagesItems).toHaveLength(3));
const chosenSearchbox = screen.getAllByRole('textbox')[1];
chosenSearchbox.click();
await user.click(chosenSearchbox);
await searchForChosenPackages(chosenSearchbox, 'lib');
chosenPackagesItems = await within(chosenPackagesList).findAllByRole(
'option'
@ -560,11 +497,15 @@ describe('Step Packages', () => {
// eslint-disable-next-line jest-dom/prefer-in-document
expect(chosenPackagesItems).toHaveLength(1);
screen
.getByRole('button', { name: /clear chosen packages search/i })
.click();
chosenPackagesItems = within(chosenPackagesList).getAllByRole('option');
expect(chosenPackagesItems).toHaveLength(3);
await user.click(
await screen.findByRole('button', {
name: /clear chosen packages search/i,
})
);
chosenPackagesItems = await within(chosenPackagesList).findAllByRole(
'option'
);
await waitFor(() => expect(chosenPackagesItems).toHaveLength(3));
});
});
@ -578,20 +519,15 @@ describe('Step Packages', () => {
));
// select aws as upload destination
const awsTile = screen.getByTestId('upload-aws');
await act(async () => {
awsTile.click();
await clickNext();
});
user.click(screen.getByTestId('upload-aws'));
await clickNext();
// aws step
await user.click(
screen.getByRole('radio', { name: /manually enter an account id\./i })
);
await user.type(screen.getByTestId('aws-account-id'), '012345678901');
await act(async () => {
await clickNext();
});
await clickNext();
// skip registration
await screen.findByRole('textbox', {
name: 'Select activation key',
@ -599,12 +535,9 @@ describe('Step Packages', () => {
const registerLaterRadio = screen.getByTestId('registration-radio-later');
await user.click(registerLaterRadio);
await act(async () => {
await clickNext();
// skip fsc
await clickNext();
});
await clickNext();
// skip fsc
await clickNext();
};
test('search results should be sorted with most relevant results first', async () => {
@ -619,9 +552,7 @@ describe('Step Packages', () => {
//const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
await act(async () => {
searchbox.click();
});
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
@ -644,17 +575,15 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
await act(async () => {
searchbox.click();
});
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
screen.getByTestId('available-pkgs-testPkg').click();
screen.getByRole('button', { name: /Add selected/ }).click();
user.click(await screen.findByTestId('available-pkgs-testPkg'));
user.click(screen.getByRole('button', { name: /Add selected/ }));
screen.getByTestId('selected-pkgs-testPkg').click();
screen.getByRole('button', { name: /Remove selected/ }).click();
user.click(await screen.findByTestId('selected-pkgs-testPkg'));
user.click(screen.getByRole('button', { name: /Remove selected/ }));
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
@ -673,17 +602,17 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
searchbox.click();
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
screen.getByRole('button', { name: /Add all/ }).click();
screen.getByRole('button', { name: /Remove all/ }).click();
user.click(screen.getByRole('button', { name: /Add all/ }));
user.click(screen.getByRole('button', { name: /Remove all/ }));
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
'option'
);
const availablePackagesItems = await within(
availablePackagesList
).findAllByRole('option');
expect(availablePackagesItems).toHaveLength(3);
const [firstItem, secondItem, thirdItem] = availablePackagesItems;
expect(firstItem).toHaveTextContent('testsummary for test package');
@ -697,22 +626,22 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
searchbox.click();
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
screen.getByRole('button', { name: /Add all/ }).click();
user.click(screen.getByRole('button', { name: /Add all/ }));
// remove a single package
screen.getByTestId('selected-pkgs-lib-test').click();
screen.getByRole('button', { name: /Remove selected/ }).click();
user.click(await screen.findByTestId('selected-pkgs-lib-test'));
user.click(screen.getByRole('button', { name: /Remove selected/ }));
// skip Custom repositories page
screen.getByRole('button', { name: /Next/ }).click();
clickNext();
// skip name page
screen.getByRole('button', { name: /Next/ }).click();
clickNext();
// review page
screen.getByRole('button', { name: /Next/ }).click();
clickNext();
// await screen.findByTestId('chosen-packages-count');
const chosen = await screen.findByTestId('chosen-packages-count');
@ -725,7 +654,7 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
searchbox.click();
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'asdf');
@ -739,12 +668,12 @@ describe('Step Packages', () => {
const searchboxChosen = screen.getAllByRole('textbox')[1];
await waitFor(() => expect(searchboxAvailable).toBeEnabled());
searchboxAvailable.click();
user.click(searchboxAvailable);
await searchForAvailablePackages(searchboxAvailable, 'test');
screen.getByRole('button', { name: /Add all/ }).click();
user.click(screen.getByRole('button', { name: /Add all/ }));
searchboxChosen.click();
user.click(searchboxChosen);
await user.type(searchboxChosen, 'asdf');
expect(screen.getByText('No packages found')).toBeInTheDocument();
@ -758,7 +687,7 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
await waitFor(() => expect(searchbox).toBeEnabled());
searchbox.click();
user.click(searchbox);
const getPackages = jest
.spyOn(api, 'getPackagesContentSources')
@ -767,7 +696,7 @@ describe('Step Packages', () => {
);
await searchForAvailablePackages(searchbox, 'test');
expect(getPackages).toHaveBeenCalledTimes(1);
await waitFor(() => expect(getPackages).toHaveBeenCalledTimes(1));
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
@ -787,21 +716,23 @@ describe('Step Packages', () => {
const searchbox = screen.getAllByRole('textbox')[0];
await waitFor(() => expect(searchbox).toBeEnabled());
searchbox.click();
user.click(searchbox);
await searchForAvailablePackages(searchbox, 'test');
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
'option'
);
const availablePackagesItems = await within(
availablePackagesList
).findAllByRole('option');
expect(availablePackagesItems).toHaveLength(3);
screen
.getByRole('button', { name: /clear available packages search/i })
.click();
user.click(
screen.getByRole('button', { name: /clear available packages search/i })
);
screen.getByText('Search above to add additionalpackages to your image');
await screen.findByText(
'Search above to add additionalpackages to your image'
);
});
test('chosen packages can be reset after filtering', async () => {
@ -810,35 +741,40 @@ describe('Step Packages', () => {
const availableSearchbox = screen.getAllByRole('textbox')[0];
await waitFor(() => expect(availableSearchbox).toBeEnabled());
availableSearchbox.click();
user.click(availableSearchbox);
await searchForAvailablePackages(availableSearchbox, 'test');
const availablePackagesList = screen.getByTestId('available-pkgs-list');
const availablePackagesItems = within(availablePackagesList).getAllByRole(
'option'
);
const availablePackagesItems = await within(
availablePackagesList
).findAllByRole('option');
expect(availablePackagesItems).toHaveLength(3);
screen.getByRole('button', { name: /Add all/ }).click();
user.click(screen.getByRole('button', { name: /Add all/ }));
const chosenPackagesList = screen.getByTestId('chosen-pkgs-list');
let chosenPackagesItems =
within(chosenPackagesList).getAllByRole('option');
let chosenPackagesItems = await within(chosenPackagesList).findAllByRole(
'option'
);
expect(chosenPackagesItems).toHaveLength(3);
const chosenSearchbox = screen.getAllByRole('textbox')[1];
chosenSearchbox.click();
user.click(chosenSearchbox);
await searchForChosenPackages(chosenSearchbox, 'lib');
chosenPackagesItems = within(chosenPackagesList).getAllByRole('option');
// eslint-disable-next-line jest-dom/prefer-in-document
expect(chosenPackagesItems).toHaveLength(1);
screen
.getByRole('button', { name: /clear chosen packages search/i })
.click();
chosenPackagesItems = within(chosenPackagesList).getAllByRole('option');
expect(chosenPackagesItems).toHaveLength(3);
await user.click(
await screen.findByRole('button', {
name: /clear chosen packages search/i,
})
);
chosenPackagesItems = await within(chosenPackagesList).findAllByRole(
'option'
);
await waitFor(() => expect(chosenPackagesItems).toHaveLength(3));
});
});
});
@ -849,43 +785,34 @@ describe('Step Custom repositories', () => {
({ router } = renderCustomRoutesWithReduxRouter('imagewizard', {}, routes));
// select aws as upload destination
const awsTile = screen.getByTestId('upload-aws');
await act(async () => {
awsTile.click();
await clickNext();
});
user.click(await screen.findByTestId('upload-aws'));
await clickNext();
// aws step
await user.click(
screen.getByRole('radio', { name: /manually enter an account id\./i })
);
await user.type(screen.getByTestId('aws-account-id'), '012345678901');
await act(async () => {
await clickNext();
});
await clickNext();
// skip registration
await screen.findByRole('textbox', {
name: 'Select activation key',
});
const registerLaterRadio = screen.getByLabelText('Register later');
await user.click(registerLaterRadio);
await act(async () => {
await clickNext();
// skip fsc
await clickNext();
// skip packages
await clickNext();
});
user.click(screen.getByLabelText('Register later'));
await clickNext();
// skip fsc
await clickNext();
// skip packages
await clickNext();
};
test('selected repositories stored in and retrieved from form state', async () => {
await setUp();
const getFirstRepoCheckbox = () =>
screen.findByRole('checkbox', {
const getFirstRepoCheckbox = async () =>
await screen.findByRole('checkbox', {
name: /select row 0/i,
});
let firstRepoCheckbox = await getFirstRepoCheckbox();
@ -894,10 +821,8 @@ describe('Step Custom repositories', () => {
await user.click(firstRepoCheckbox);
expect(firstRepoCheckbox.checked).toEqual(true);
await act(async () => {
await clickNext();
clickBack();
});
await clickNext();
clickBack();
firstRepoCheckbox = await getFirstRepoCheckbox();
expect(firstRepoCheckbox.checked).toEqual(true);
@ -906,10 +831,11 @@ describe('Step Custom repositories', () => {
test('correct number of repositories is fetched', async () => {
await setUp();
const selectButton = await screen.findByRole('button', {
name: /select/i,
});
await user.click(selectButton);
await user.click(
await screen.findByRole('button', {
name: /select/i,
})
);
screen.getByText(/select all \(1015 items\)/i);
});
@ -933,12 +859,12 @@ describe('Step Custom repositories', () => {
expect(rows).toHaveLength(1);
// clear filter
screen.getByRole('button', { name: /reset/i }).click();
await user.click(await screen.findByRole('button', { name: /reset/i }));
rows = getRows();
// remove first row from list since it is just header labels
rows.shift();
expect(rows).toHaveLength(10);
await waitFor(() => expect(rows).toHaveLength(10));
});
});