// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import React from 'react'; import { configure, mount } from "enzyme"; import { InstanceTypesPanel } from './instance-types-panel'; import Adapter from "enzyme-adapter-react-16"; import { combineReducers, createStore } from "redux"; import { Provider } from "react-redux"; import { formatFileSize } from 'common/formatters'; configure({ adapter: new Adapter() }); describe('', () => { // let props; let store; const initialAuthState = { config: { clusterConfig: { InstanceTypes: { "normalType" : { ProviderType: "provider", Price: 0.123, VCPUs: 6, Preemptible: false, IncludedScratch: 1000, RAM: 5000, }, "gpuType" : { ProviderType: "gpuProvider", Price: 0.456, VCPUs: 8, Preemptible: true, IncludedScratch: 500, RAM: 6000, CUDA: { DeviceCount: 1, HardwareCapability: '8.6', DriverVersion: '11.4', }, }, }, Containers: { ReserveExtraRAM: 1000, } } } } beforeEach(() => { store = createStore(combineReducers({ auth: (state: any = initialAuthState, action: any) => state, })); }); it('renders instance types', () => { // when const panel = mount( ); // then Object.keys(initialAuthState.config.clusterConfig.InstanceTypes).forEach((instanceKey) => { const instanceType = initialAuthState.config.clusterConfig.InstanceTypes[instanceKey]; const item = panel.find(`Grid[data-cy="${instanceKey}"]`) expect(item.find('h6').text()).toContain(instanceKey); expect(item.text()).toContain(`Provider type: ${instanceType.ProviderType}`); expect(item.text()).toContain(`Price: $${instanceType.Price}`); expect(item.text()).toContain(`Cores: ${instanceType.VCPUs}`); expect(item.text()).toContain(`Preemptible: ${instanceType.Preemptible.toString()}`); expect(item.text()).toContain(`Max disk request: ${formatFileSize(instanceType.IncludedScratch)}`); expect(item.text()).toContain(`Max ram request: ${formatFileSize(instanceType.RAM - initialAuthState.config.clusterConfig.Containers.ReserveExtraRAM)}`); if (instanceType.CUDA && instanceType.CUDA.DeviceCount > 0) { expect(item.text()).toContain(`CUDA GPUs: ${instanceType.CUDA.DeviceCount}`); expect(item.text()).toContain(`Hardware capability: ${instanceType.CUDA.HardwareCapability}`); expect(item.text()).toContain(`Driver version: ${instanceType.CUDA.DriverVersion}`); } }); }); });