Wizard: Add 3rd Party Repositories
Adds support for 3rd party repositories using the Red Hat Insights Repositories app on console.redhat.com. The packages step has been refactored heavily to reduce the bug surface area and improve its reusability (it is now used in two Wizard steps). New features related to the Repositories app are currently only exposed in stage. Because stage and production are quite divergent (they have different steps, for instance) there are separate test suites for the production and stage versions of the Wizard. When these features are moved into production, the two test suites can be merged into one.
This commit is contained in:
parent
3cad570606
commit
5adc0e7d4a
16 changed files with 2227 additions and 342 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -188,7 +188,10 @@ describe('Create Image Wizard', () => {
|
|||
screen.getByRole('heading', { name: /Create image/ });
|
||||
|
||||
screen.getByRole('button', { name: 'Image output' });
|
||||
screen.getByRole('button', { name: 'Additional packages' });
|
||||
screen.getByRole('button', { name: 'Registration' });
|
||||
screen.getByRole('button', { name: 'File system configuration' });
|
||||
screen.getByRole('button', { name: 'Content' });
|
||||
screen.getByRole('button', { name: 'Additional Red Hat packages' });
|
||||
screen.getByRole('button', { name: 'Name image' });
|
||||
screen.getByRole('button', { name: 'Review' });
|
||||
});
|
||||
|
|
@ -850,14 +853,10 @@ describe('Step Packages', () => {
|
|||
await searchForAvailablePackages(searchbox, 'test');
|
||||
expect(getPackages).toHaveBeenCalledTimes(1);
|
||||
|
||||
screen
|
||||
.getByRole('option', { name: /testPkg test package summary/ })
|
||||
.click();
|
||||
screen.getByTestId('available-pkgs-testPkg').click();
|
||||
screen.getByRole('button', { name: /Add selected/ }).click();
|
||||
|
||||
screen
|
||||
.getByRole('option', { name: /testPkg test package summary/ })
|
||||
.click();
|
||||
screen.getByTestId('selected-pkgs-testPkg').click();
|
||||
screen.getByRole('button', { name: /Remove selected/ }).click();
|
||||
|
||||
const availablePackagesList = screen.getByTestId('available-pkgs-list');
|
||||
|
|
@ -913,9 +912,7 @@ describe('Step Packages', () => {
|
|||
screen.getByRole('button', { name: /Add all/ }).click();
|
||||
|
||||
// remove a single package
|
||||
screen
|
||||
.getByRole('option', { name: /lib-test lib-test package summary/ })
|
||||
.click();
|
||||
screen.getByTestId('selected-pkgs-lib-test').click();
|
||||
screen.getByRole('button', { name: /Remove selected/ }).click();
|
||||
|
||||
// skip name page
|
||||
|
|
@ -1007,58 +1004,6 @@ describe('Step Packages', () => {
|
|||
await searchForChosenPackages(searchboxChosen, '');
|
||||
});
|
||||
|
||||
test('should filter chosen packages from available list', async () => {
|
||||
await setUp();
|
||||
|
||||
const searchboxAvailable = screen.getAllByRole('textbox')[0];
|
||||
const availablePackagesList = screen.getByTestId('available-pkgs-list');
|
||||
const chosenPackagesList = screen.getByTestId('chosen-pkgs-list');
|
||||
|
||||
const getPackages = jest
|
||||
.spyOn(api, 'getPackages')
|
||||
.mockImplementation(() => Promise.resolve(mockPkgResult));
|
||||
|
||||
searchboxAvailable.click();
|
||||
await searchForAvailablePackages(searchboxAvailable, 'test');
|
||||
expect(getPackages).toHaveBeenCalledTimes(1);
|
||||
|
||||
let availablePackagesItems = within(availablePackagesList).getAllByRole(
|
||||
'option'
|
||||
);
|
||||
expect(availablePackagesItems).toHaveLength(3);
|
||||
|
||||
screen
|
||||
.getByRole('option', { name: /testPkg test package summary/ })
|
||||
.click();
|
||||
screen.getByRole('button', { name: /Add selected/ }).click();
|
||||
|
||||
availablePackagesItems = within(availablePackagesList).getAllByRole(
|
||||
'option'
|
||||
);
|
||||
expect(availablePackagesItems).toHaveLength(2);
|
||||
|
||||
let chosenPackagesItems = within(chosenPackagesList).getAllByRole('option');
|
||||
// Knowing if it is in document isn't enough. We want a specific length of 1 so ignore rule.
|
||||
// eslint-disable-next-line jest-dom/prefer-in-document
|
||||
expect(chosenPackagesItems).toHaveLength(1);
|
||||
|
||||
searchboxAvailable.click();
|
||||
await searchForAvailablePackages(searchboxAvailable, 'test');
|
||||
expect(getPackages).toHaveBeenCalledTimes(2);
|
||||
|
||||
availablePackagesItems = within(availablePackagesList).getAllByRole(
|
||||
'option'
|
||||
);
|
||||
chosenPackagesItems = within(chosenPackagesList).getAllByRole('option');
|
||||
expect(availablePackagesItems).toHaveLength(2);
|
||||
// Knowing if it is in document isn't enough. We want a specific length of 1 so ignore rule.
|
||||
// eslint-disable-next-line jest-dom/prefer-in-document
|
||||
expect(chosenPackagesItems).toHaveLength(1);
|
||||
within(chosenPackagesList).getByRole('option', {
|
||||
name: /testPkg test package summary/,
|
||||
});
|
||||
});
|
||||
|
||||
test('should get all packages, regardless of api default limit', async () => {
|
||||
await setUp();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue