diff --git a/packages/manager/apps/hpc-vmware-managed-vcd/public/translations/datacentres/order/Messages_fr_FR.json b/packages/manager/apps/hpc-vmware-managed-vcd/public/translations/datacentres/order/Messages_fr_FR.json index 0d75f37edcec..38d7cdbfc1bb 100644 --- a/packages/manager/apps/hpc-vmware-managed-vcd/public/translations/datacentres/order/Messages_fr_FR.json +++ b/packages/manager/apps/hpc-vmware-managed-vcd/public/translations/datacentres/order/Messages_fr_FR.json @@ -8,6 +8,7 @@ "managed_vcd_vdc_order_ram_value": "{{ram}} Go", "managed_vcd_vdc_order_vcpu_count": "Nombre de vCPU", "managed_vcd_vdc_order_type": "Type", + "managed_vcd_vdc_order_performance_class": "{{performanceClass}}/To", "managed_vcd_vdc_order_price": "Prix", "managed_vcd_vdc_order_price_detail": "Prix pour 1 mois", "managed_vcd_vdc_order_quantity_title": "Choisir une quantité", diff --git a/packages/manager/apps/hpc-vmware-managed-vcd/src/components/datagrid/storage/StorageOrderCells.component.tsx b/packages/manager/apps/hpc-vmware-managed-vcd/src/components/datagrid/storage/StorageOrderCells.component.tsx index 0ee805d7f77f..a4f72dcf8439 100644 --- a/packages/manager/apps/hpc-vmware-managed-vcd/src/components/datagrid/storage/StorageOrderCells.component.tsx +++ b/packages/manager/apps/hpc-vmware-managed-vcd/src/components/datagrid/storage/StorageOrderCells.component.tsx @@ -30,8 +30,8 @@ export const StorageOrderSelectCell = (storage: VCDOrderableStoragePriced) => { ); }; -export const StorageOrderTypeCell = (storage: VCDOrderableStoragePriced) => ( - {storage.name} +export const StorageOrderTypeCell = ({ name }: VCDOrderableStoragePriced) => ( + {name} ); export const StorageOrderPriceCell = (storage: VCDOrderableStoragePriced) => { @@ -45,3 +45,14 @@ export const StorageOrderPriceCell = (storage: VCDOrderableStoragePriced) => { ); }; + +export const StoragePerformanceClassCell = ({ + performanceClass, +}: VCDOrderableStoragePriced) => { + const { t } = useTranslation('datacentres/order'); + return ( + + {t('managed_vcd_vdc_order_performance_class', { performanceClass })} + + ); +}; diff --git a/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/DatacentreStorageOrder.page.tsx b/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/DatacentreStorageOrder.page.tsx index 520f7041c4f0..9b604c4f95a9 100644 --- a/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/DatacentreStorageOrder.page.tsx +++ b/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/DatacentreStorageOrder.page.tsx @@ -8,8 +8,10 @@ import { StorageOrderPriceCell, StorageOrderSelectCell, StorageOrderTypeCell, + StoragePerformanceClassCell, } from '@/components/datagrid/storage/StorageOrderCells.component'; import { + PERFORMANCE_CLASS_LABEL, STORAGE_ORDER_MAX_QUANTITY, STORAGE_ORDER_MIN_QUANTITY, } from './datacentreStorageOrder.constants'; @@ -31,6 +33,12 @@ export default function StorageOrderPage() { label: t('managed_vcd_vdc_order_type'), isSortable: false, }, + { + id: 'performanceClass', + cell: StoragePerformanceClassCell, + label: PERFORMANCE_CLASS_LABEL, + isSortable: false, + }, { id: 'price', cell: StorageOrderPriceCell, diff --git a/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/DatacentreStorageOrder.spec.tsx b/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/DatacentreStorageOrder.spec.tsx index d40f5775feed..e45cd69bc907 100644 --- a/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/DatacentreStorageOrder.spec.tsx +++ b/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/DatacentreStorageOrder.spec.tsx @@ -3,9 +3,11 @@ import userEvent from '@testing-library/user-event'; import { organizationList, datacentreList, + orderableResourceData, } from '@ovh-ux/manager-module-vcd-api'; import { assertTextVisibility } from '@ovh-ux/manager-core-test-utils'; import { labels, renderTest } from '../../../../test-utils'; +import { PERFORMANCE_CLASS_LABEL } from './datacentreStorageOrder.constants'; const orderCTA = labels.datacentresStorage.managed_vcd_vdc_storage_order_cta; const orderTitle = labels.datacentresOrder.managed_vcd_vdc_order_storage_title; @@ -17,11 +19,32 @@ describe('Datacentre Storage Order Page', () => { initialRoute: `/${organizationList[0].id}/datacentres/${datacentreList[0].id}/storage`, }); + const { name, performanceClass } = orderableResourceData.storage[0]; + + // checks CTA await assertTextVisibility(orderCTA); const orderButton = screen.getByText(orderCTA); await waitFor(() => userEvent.click(orderButton)); await assertTextVisibility(orderTitle); + + // check datagrid content + await assertTextVisibility( + labels.datacentresOrder.managed_vcd_vdc_order_type, + ); + await assertTextVisibility(name); + + await assertTextVisibility(PERFORMANCE_CLASS_LABEL); + await assertTextVisibility( + labels.datacentresOrder.managed_vcd_vdc_order_performance_class + .toString() + .replace('{{performanceClass}}', performanceClass), + ); + + await assertTextVisibility( + labels.datacentresOrder.managed_vcd_vdc_order_price, + ); + await assertTextVisibility('80.00 €'); }); it('display an error if orderableResource service is KO', async () => { diff --git a/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/datacentreStorageOrder.constants.ts b/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/datacentreStorageOrder.constants.ts index fdcfb737c473..806b72ea4bd2 100644 --- a/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/datacentreStorageOrder.constants.ts +++ b/packages/manager/apps/hpc-vmware-managed-vcd/src/pages/dashboard/datacentre/storage-order/datacentreStorageOrder.constants.ts @@ -1,2 +1,3 @@ export const STORAGE_ORDER_MIN_QUANTITY = 1; export const STORAGE_ORDER_MAX_QUANTITY = 50; +export const PERFORMANCE_CLASS_LABEL = 'Performance class'; diff --git a/packages/manager/modules/vcd-api/src/mocks/vcd-datacentre/vdc-orderable-resource.mock.ts b/packages/manager/modules/vcd-api/src/mocks/vcd-datacentre/vdc-orderable-resource.mock.ts index 1a152cad328d..dba0362d17d9 100644 --- a/packages/manager/modules/vcd-api/src/mocks/vcd-datacentre/vdc-orderable-resource.mock.ts +++ b/packages/manager/modules/vcd-api/src/mocks/vcd-datacentre/vdc-orderable-resource.mock.ts @@ -30,6 +30,7 @@ export const orderableResourceData: VCDOrderableResourceData = { name: 'vcd-datastore-1000', profile: 'vcd-datastore-1000', type: 'storage', + performanceClass: '250', }, ], }; diff --git a/packages/manager/modules/vcd-api/src/types/vcd-orderable-resource.type.ts b/packages/manager/modules/vcd-api/src/types/vcd-orderable-resource.type.ts index e98433d21ae1..1c964946f256 100644 --- a/packages/manager/modules/vcd-api/src/types/vcd-orderable-resource.type.ts +++ b/packages/manager/modules/vcd-api/src/types/vcd-orderable-resource.type.ts @@ -5,7 +5,9 @@ import { VCDCatalogProductPricing } from './vcd-catalog.type'; export type VCDOrderableVHost = Omit & { vCPUSpeed: number; }; -export type VCDOrderableStorage = Omit; +export type VCDOrderableStorage = Omit & { + performanceClass: string; +}; type WithPricing = T & { pricing: VCDCatalogProductPricing };