debian-image-builder-frontend/src/test/Components/CreateImageWizardV2/steps/Registration/Registration.test.tsx
lucasgarfield d4c9534ecc V2Wizard/Details: Add request assertion tests
Adds tests to verify requets for images with names and descriptions are
formulated correctly.

Test functions shared/common to multiple steps were extracted to the
test utilities.
2024-02-15 13:10:34 +01:00

181 lines
4.9 KiB
TypeScript

import { screen } from '@testing-library/react';
import { userEvent } from '@testing-library/user-event';
import { CREATE_BLUEPRINT } from '../../../../../constants';
import {
CreateBlueprintRequest,
ImageRequest,
} from '../../../../../store/imageBuilderApi';
import { clickNext } from '../../../../testUtils';
import {
enterBlueprintName,
render,
interceptBlueprintRequest,
goToRegistrationStep,
clickRegisterLater,
} from '../../wizardTestUtils';
jest.mock('@redhat-cloud-services/frontend-components/useChrome', () => ({
useChrome: () => ({
auth: {
getUser: () => {
return {
identity: {
internal: {
org_id: 5,
},
},
};
},
},
isBeta: () => false,
isProd: () => true,
getEnvironment: () => 'prod',
}),
}));
const selectActivationKey = async () => {
const activationKeyDropdown = await screen.findByRole('textbox', {
name: 'Select activation key',
});
await userEvent.click(activationKeyDropdown);
const activationKey = await screen.findByRole('option', {
name: 'name0',
});
await userEvent.click(activationKey);
};
const clickShowAdditionalConnectionOptions = async () => {
const link = await screen.findByText('Show additional connection options');
await userEvent.click(link);
};
const deselectEnableRemoteRemediations = async () => {
const checkBox = await screen.findByRole('checkbox', {
name: 'Enable remote remediations and system management with automation',
});
await userEvent.click(checkBox);
};
const deselectPredictiveAnalytics = async () => {
const checkBox = await screen.findByRole('checkbox', {
name: 'Enable predictive analytics and management capabilities',
});
await userEvent.click(checkBox);
};
const goToReviewStep = async () => {
await clickNext();
await clickNext();
await clickNext();
await enterBlueprintName();
await clickNext();
};
describe('registration request generated correctly', () => {
const imageRequest: ImageRequest = {
architecture: 'x86_64',
image_type: 'image-installer',
upload_request: {
options: {},
type: 'aws.s3',
},
};
const blueprintRequest: CreateBlueprintRequest = {
name: 'Red Velvet',
description: '',
distribution: 'rhel-93',
image_requests: [imageRequest],
customizations: {},
};
test('register + insights + rhc', async () => {
await render();
await goToRegistrationStep();
await selectActivationKey();
await goToReviewStep();
const receivedRequest = await interceptBlueprintRequest(CREATE_BLUEPRINT);
const expectedSubscription = {
'activation-key': 'name0',
insights: true,
rhc: true,
organization: 5,
'server-url': 'subscription.rhsm.redhat.com',
'base-url': 'https://cdn.redhat.com/',
};
const expectedRequest = {
...blueprintRequest,
customizations: { subscription: expectedSubscription },
};
expect(receivedRequest).toEqual(expectedRequest);
});
test('register + insights', async () => {
await render();
await goToRegistrationStep();
await clickShowAdditionalConnectionOptions();
await deselectEnableRemoteRemediations();
await selectActivationKey();
await goToReviewStep();
const receivedRequest = await interceptBlueprintRequest(CREATE_BLUEPRINT);
const expectedSubscription = {
'activation-key': 'name0',
insights: true,
rhc: false,
organization: 5,
'server-url': 'subscription.rhsm.redhat.com',
'base-url': 'https://cdn.redhat.com/',
};
const expectedRequest = {
...blueprintRequest,
customizations: { subscription: expectedSubscription },
};
expect(receivedRequest).toEqual(expectedRequest);
});
test('register', async () => {
await render();
await goToRegistrationStep();
await clickShowAdditionalConnectionOptions();
await deselectPredictiveAnalytics();
await selectActivationKey();
await goToReviewStep();
const receivedRequest = await interceptBlueprintRequest(CREATE_BLUEPRINT);
const expectedSubscription = {
'activation-key': 'name0',
insights: false,
rhc: false,
organization: 5,
'server-url': 'subscription.rhsm.redhat.com',
'base-url': 'https://cdn.redhat.com/',
};
const expectedRequest = {
...blueprintRequest,
customizations: { subscription: expectedSubscription },
};
expect(receivedRequest).toEqual(expectedRequest);
});
test('register Later', async () => {
await render();
await goToRegistrationStep();
await clickShowAdditionalConnectionOptions();
await clickRegisterLater();
await goToReviewStep();
const receivedRequest = await interceptBlueprintRequest(CREATE_BLUEPRINT);
const expectedRequest = {
...blueprintRequest,
customizations: {},
};
expect(receivedRequest).toEqual(expectedRequest);
});
});