CreateImageWizardV2: add tests for package groups

This commit is contained in:
Sanne Raymaekers 2024-06-13 17:07:42 +02:00 committed by Klara Simickova
parent 7759c122df
commit e37782ebf6
3 changed files with 70 additions and 0 deletions

View file

@ -77,6 +77,13 @@ const searchForPackage = async () => {
await userEvent.type(searchBox, 'test');
};
const searchForGroup = async () => {
const searchBox = await screen.findByRole('textbox', {
name: /search packages/i,
});
await userEvent.type(searchBox, '@grouper');
};
const selectFirstPackage = async () => {
await userEvent.click(
await screen.findByRole('checkbox', { name: /select row 0/i })
@ -145,6 +152,38 @@ describe('packages request generated correctly', () => {
expect(receivedRequest).toEqual(expectedRequest);
});
test('with custom groups', async () => {
await renderCreateMode();
await goToPackagesStep();
await searchForGroup();
await selectFirstPackage();
await goToReviewStep();
const receivedRequest = await interceptBlueprintRequest(CREATE_BLUEPRINT);
const expectedRequest: CreateBlueprintRequest = {
...blueprintRequest,
customizations: {
packages: ['@grouper'],
},
};
expect(receivedRequest).toEqual(expectedRequest);
});
test('deselecting a group removes it from the request', async () => {
await renderCreateMode();
await goToPackagesStep();
await searchForGroup();
await selectFirstPackage();
await switchToSelected();
await deselectFirstPackage();
await goToReviewStep();
const receivedRequest = await interceptBlueprintRequest(CREATE_BLUEPRINT);
const expectedRequest = blueprintRequest;
expect(receivedRequest).toEqual(expectedRequest);
});
});
describe('package recommendations', () => {

View file

@ -1,5 +1,6 @@
import {
ApiRepositoryRpm,
ApiSearchPackageGroupResponse,
ApiSearchRpmResponse,
} from '../../store/contentSourcesApi';
import { RecommendPackageApiResponse } from '../../store/imageBuilderApi';
@ -66,6 +67,25 @@ export const mockSourcesPackagesResults = (
return [];
};
export const mockSourcesGroupsResults = (
search: string,
urls: string[]
): ApiSearchPackageGroupResponse[] => {
const isDistroPkgSearch =
urls.filter((u) => u.includes('cdn.redhat.com')).length > 0;
if (isDistroPkgSearch && search === 'grouper') {
return [
{
description: '',
id: 'grouper',
package_group_name: 'Grouper group',
package_list: ['fish1', 'fish2'],
},
];
}
return [];
};
export const mockPkgResultAlphaContentSources: ApiRepositoryRpm[] = [
{
name: 'lib-test',

View file

@ -34,6 +34,7 @@ import {
import {
mockPkgRecommendations,
mockSourcesPackagesResults,
mockSourcesGroupsResults,
} from '../fixtures/packages';
import {
mockPopularRepo,
@ -64,6 +65,16 @@ export const handlers = [
ctx.json(mockSourcesPackagesResults(search, urls))
);
}),
rest.post(
`${CONTENT_SOURCES_API}/package_groups/names`,
async (req, res, ctx) => {
const { search, urls } = await req.json();
return res(
ctx.status(200),
ctx.json(mockSourcesGroupsResults(search, urls))
);
}
),
rest.get(`${CONTENT_SOURCES_API}/features/`, async (req, res, ctx) => {
return res(ctx.status(200), ctx.json(mockedFeatureResponse));
}),