1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import React from 'react';
6 import { configure, mount } from "enzyme";
7 import { InstanceTypesPanel } from './instance-types-panel';
8 import Adapter from "enzyme-adapter-react-16";
9 import { combineReducers, createStore } from "redux";
10 import { Provider } from "react-redux";
11 import { formatFileSize } from 'common/formatters';
13 configure({ adapter: new Adapter() });
15 describe('<InstanceTypesPanel />', () => {
20 const initialAuthState = {
25 ProviderType: "provider",
29 IncludedScratch: 1000,
33 ProviderType: "gpuProvider",
41 HardwareCapability: '8.6',
42 DriverVersion: '11.4',
47 ReserveExtraRAM: 1000,
55 store = createStore(combineReducers({
56 auth: (state: any = initialAuthState, action: any) => state,
60 it('renders instance types', () => {
63 <Provider store={store}>
64 <InstanceTypesPanel />
68 Object.keys(initialAuthState.config.clusterConfig.InstanceTypes).forEach((instanceKey) => {
69 const instanceType = initialAuthState.config.clusterConfig.InstanceTypes[instanceKey];
70 const item = panel.find(`Grid[data-cy="${instanceKey}"]`)
72 expect(item.find('h6').text()).toContain(instanceKey);
73 expect(item.text()).toContain(`Provider type: ${instanceType.ProviderType}`);
74 expect(item.text()).toContain(`Price: $${instanceType.Price}`);
75 expect(item.text()).toContain(`Cores: ${instanceType.VCPUs}`);
76 expect(item.text()).toContain(`Preemptible: ${instanceType.Preemptible.toString()}`);
77 expect(item.text()).toContain(`Max disk request: ${formatFileSize(instanceType.IncludedScratch)}`);
78 expect(item.text()).toContain(`Max ram request: ${formatFileSize(instanceType.RAM - initialAuthState.config.clusterConfig.Containers.ReserveExtraRAM)}`);
79 if (instanceType.CUDA && instanceType.CUDA.DeviceCount > 0) {
80 expect(item.text()).toContain(`CUDA GPUs: ${instanceType.CUDA.DeviceCount}`);
81 expect(item.text()).toContain(`Hardware capability: ${instanceType.CUDA.HardwareCapability}`);
82 expect(item.text()).toContain(`Driver version: ${instanceType.CUDA.DriverVersion}`);