From 226438bbe6371e16b09b22a2583c3d00554c81f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Wed, 21 Jun 2023 10:43:41 +0100 Subject: [PATCH 01/13] Handle linking to unregistered hosts --- .../ClusterDetails/HanaClusterDetails.jsx | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx index ca96681256..2aa3871b20 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx @@ -14,7 +14,7 @@ import HostLink from '@components/HostLink'; import ChecksResultOverview from '@components/ClusterDetails/ChecksResultOverview'; import ProviderLabel from '@components/ProviderLabel'; import SapSystemLink from '@components/SapSystemLink'; -import { EOS_SETTINGS, EOS_CLEAR_ALL, EOS_PLAY_CIRCLE } from 'eos-icons-react'; +import { EOS_SETTINGS, EOS_CLEAR_ALL, EOS_PLAY_CIRCLE, EOS_WARNING_OUTLINED } from 'eos-icons-react'; import { RUNNING_STATES } from '@state/lastExecutions'; import SiteDetails from './SiteDetails'; @@ -33,9 +33,21 @@ const siteDetailsConfig = { { title: 'Hostname', key: '', - render: (_, hostData) => ( - {hostData.name} - ), + render: (_, hostData) => { + if (hostData.hostId) { + return ({hostData.name}); + } + return ( + + + {hostData.name} + + + ); + } }, { title: 'Role', key: 'hana_status' }, { @@ -74,8 +86,8 @@ function HanaClusterDetails({ sapSystems, details, lastExecution, - onStartExecution = () => {}, - navigate = () => {}, + onStartExecution = () => { }, + navigate = () => { }, }) { const enrichedNodes = enrichNodes(details?.nodes, hosts); const enrichedSapSystem = { From 126952776fda925fc174a06605a11edc23ad4674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Mon, 3 Jul 2023 16:13:28 +0100 Subject: [PATCH 02/13] Add host link test for unregistered nodes --- .../HanaClusterDetails.test.jsx | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx index f31dedad53..b0b99c5070 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx @@ -6,6 +6,7 @@ import { renderWithRouter } from '@lib/test-utils'; import { clusterFactory, hostFactory, + hanaClusterDetailsNodesFactory, checksExecutionCompletedFactory, checksExecutionRunningFactory, sapSystemFactory, @@ -181,4 +182,50 @@ describe('HanaClusterDetails component', () => { expect(sidContainer).toHaveTextContent(sid); expect(sidContainer.querySelector('a')).toBeNull(); }); + + it('should display a host link in the site details if the host is registered', () => { + const unregisteredClusterNode = hanaClusterDetailsNodesFactory.build({ name: "unknownhost" }) + const registeredClusterNode = hanaClusterDetailsNodesFactory.build({ name: "registeredhost" }) + + + const { + clusterID, + clusterName, + cib_last_written: cibLastWritten, + type: clusterType, + sid, + provider, + details, + } = clusterFactory.build({ nodes: [unregisteredClusterNode, registeredClusterNode] }); + + const hosts = hostFactory.buildList(2, { hostname: "registeredhost", cluster_id: clusterID }); + + const sapSystems = sapSystemFactory.buildList(2, { tenant: sid }); + + renderWithRouter( + + ); + + const unregisteredHostContainer = screen.getByText('unknownhost').nextSibling; + const registeredHostContainer = screen.getByText('unknownhost'); + + expect(registeredHostContainer).toBeInTheDocument(); + expect(unregisteredHostContainer.querySelector('a')).toHaveAttribute( + 'href', + `/hosts/registeredhost}` + ); + }); }); From 3a6a626130bd4ba4203769ceec6a900208e5363f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Mon, 3 Jul 2023 16:27:28 +0100 Subject: [PATCH 03/13] Update hostId field to id --- assets/js/components/ClusterDetails/HanaClusterDetails.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx index 2aa3871b20..874f2f74a3 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx @@ -34,8 +34,8 @@ const siteDetailsConfig = { title: 'Hostname', key: '', render: (_, hostData) => { - if (hostData.hostId) { - return ({hostData.name}); + if (hostData.id) { + return ({hostData.name}); } return ( From cf6f9b260b9c9331f1f0e5a83a1b54db14febb14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Mon, 3 Jul 2023 16:29:34 +0100 Subject: [PATCH 04/13] Fix broken test --- assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx index b0b99c5070..09f0956fc7 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx @@ -220,7 +220,7 @@ describe('HanaClusterDetails component', () => { ); const unregisteredHostContainer = screen.getByText('unknownhost').nextSibling; - const registeredHostContainer = screen.getByText('unknownhost'); + const registeredHostContainer = screen.getByText('registeredhost'); expect(registeredHostContainer).toBeInTheDocument(); expect(unregisteredHostContainer.querySelector('a')).toHaveAttribute( From b1bf11b9ca6228d1c60a714325332958bf9f6d61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Tue, 11 Jul 2023 16:20:57 +0100 Subject: [PATCH 05/13] Add ClusterNodeLink component --- .../ClusterDetails/ClusterNodeLink.jsx | 23 +++++++++++++ .../ClusterDetails/ClusterNodeLink.test.jsx | 32 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 assets/js/components/ClusterDetails/ClusterNodeLink.jsx create mode 100644 assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx diff --git a/assets/js/components/ClusterDetails/ClusterNodeLink.jsx b/assets/js/components/ClusterDetails/ClusterNodeLink.jsx new file mode 100644 index 0000000000..5efdec1401 --- /dev/null +++ b/assets/js/components/ClusterDetails/ClusterNodeLink.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { EOS_WARNING_OUTLINED } from 'eos-icons-react'; + +import Tooltip from '@components/Tooltip'; +import HostLink from '@components/HostLink'; + +function ClusterNodeLink({ name, hostId }) { + if (hostId) { + return {name}; + } + return ( + + + {name} + + + ); +} + +export default ClusterNodeLink; diff --git a/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx b/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx new file mode 100644 index 0000000000..18a36b0967 --- /dev/null +++ b/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { screen, render } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { renderWithRouterMatch } from '@lib/test-utils'; +import ClusterNodeLink from '@components/ClusterDetails/ClusterNodeLink'; + +describe('ClusterNodeLink', () => { + it('renders HostLink when hostId is provided', () => { + const hostId = '12345678-abcd-1234-abcd-1234567890ab'; + const name = 'host01'; + const path = '/hosts/:hostId'; + + renderWithRouterMatch(, { + path, + route: `/hosts/${hostId}`, + }); + + const hostLinkElement = screen.getByRole('link', { name }); + + expect(hostLinkElement).toBeInTheDocument(); + expect(hostLinkElement).toHaveAttribute('href', `/hosts/${hostId}`); + }); + + it('renders warning span when hostId is not provided', () => { + const name = 'host02'; + + render(); + expect( + screen.getByText('Host currently not registered.') + ).toBeInTheDocument(); + }); +}); From f2a6a280dd45249ef7050155efbe3925590ec63e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Tue, 11 Jul 2023 16:21:24 +0100 Subject: [PATCH 06/13] Use ClusterNodeLink component for cluster node linking --- .../ClusterDetails/AscsErsClusterDetails.jsx | 4 +-- .../AscsErsClusterDetails.stories.jsx | 12 +++++++++ .../AscsErsClusterDetails.test.jsx | 27 +++++++++++++++++++ .../ClusterDetails/HanaClusterDetails.jsx | 26 +++++------------- .../HanaClusterDetails.stories.jsx | 7 +++++ .../HanaClusterDetails.test.jsx | 21 ++++++++------- 6 files changed, 66 insertions(+), 31 deletions(-) diff --git a/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx b/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx index 700cde1b11..1f90e9482a 100644 --- a/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx +++ b/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx @@ -6,7 +6,7 @@ import Table from '@components/Table'; import ListView from '@components/ListView'; import ProviderLabel from '@components/ProviderLabel'; import DottedPagination from '@components/DottedPagination'; -import HostLink from '@components/HostLink'; +import ClusterNodeLink from '@components/ClusterDetails/ClusterNodeLink'; import SapSystemLink from '@components/SapSystemLink'; import { renderEnsaVersion } from '@components/SapSystemDetails'; @@ -23,7 +23,7 @@ const nodeDetailsConfig = { { title: 'Hostname', key: '', - render: (_, { id, name }) => {name}, + render: (_, { id, name }) => , }, { title: 'Role', diff --git a/assets/js/components/ClusterDetails/AscsErsClusterDetails.stories.jsx b/assets/js/components/ClusterDetails/AscsErsClusterDetails.stories.jsx index 787a160466..f2af3de69f 100644 --- a/assets/js/components/ClusterDetails/AscsErsClusterDetails.stories.jsx +++ b/assets/js/components/ClusterDetails/AscsErsClusterDetails.stories.jsx @@ -76,6 +76,18 @@ export const Single = { ), }; +export const WithUnregisteredHost = { + args: { + ...Single.args, + hosts: [buildHostsFromAscsErsClusterDetails(details).pop()], + }, + render: (args) => ( + + + + ), +}; + export const MultiSID = { args: { ...Single.args, diff --git a/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx b/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx index 33f4b408d5..923ba4528f 100644 --- a/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx +++ b/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx @@ -200,4 +200,31 @@ describe('ClusterDetails AscsErsClusterDetails component', () => { expect(sidContainer).toHaveTextContent(sid); expect(sidContainer.querySelector('a')).toBeNull(); }); + + it('should display a host link for registered hosts', () => { + const { + name, + cib_last_written: cibLastWritten, + provider, + details, + } = clusterFactory.build({ type: 'ascs_ers' }); + + const hosts = buildHostsFromAscsErsClusterDetails(details); + renderWithRouter( + + ); + const registeredHostContainer = screen.getByText(hosts[0].hostname); + + expect(registeredHostContainer).toHaveAttribute( + 'href', + `/hosts/${hosts[0].id}` + ); + }); }); diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx index 874f2f74a3..c4a0ceeda9 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx @@ -10,11 +10,11 @@ import ListView from '@components/ListView'; import Table from '@components/Table'; import Tooltip from '@components/Tooltip'; import TriggerChecksExecutionRequest from '@components/TriggerChecksExecutionRequest'; -import HostLink from '@components/HostLink'; +import ClusterNodeLink from '@components/ClusterDetails/ClusterNodeLink'; import ChecksResultOverview from '@components/ClusterDetails/ChecksResultOverview'; import ProviderLabel from '@components/ProviderLabel'; import SapSystemLink from '@components/SapSystemLink'; -import { EOS_SETTINGS, EOS_CLEAR_ALL, EOS_PLAY_CIRCLE, EOS_WARNING_OUTLINED } from 'eos-icons-react'; +import { EOS_SETTINGS, EOS_CLEAR_ALL, EOS_PLAY_CIRCLE } from 'eos-icons-react'; import { RUNNING_STATES } from '@state/lastExecutions'; import SiteDetails from './SiteDetails'; @@ -33,21 +33,9 @@ const siteDetailsConfig = { { title: 'Hostname', key: '', - render: (_, hostData) => { - if (hostData.id) { - return ({hostData.name}); - } - return ( - - - {hostData.name} - - - ); - } + render: (_, hostData) => ( + + ), }, { title: 'Role', key: 'hana_status' }, { @@ -86,8 +74,8 @@ function HanaClusterDetails({ sapSystems, details, lastExecution, - onStartExecution = () => { }, - navigate = () => { }, + onStartExecution = () => {}, + navigate = () => {}, }) { const enrichedNodes = enrichNodes(details?.nodes, hosts); const enrichedSapSystem = { diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx index 1708f083b0..bead5248f3 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx @@ -80,6 +80,13 @@ export const Hana = { }, }; +export const WithUnregisteredHost = { + args: { + ...Hana.args, + hosts: [hosts.pop()], + }, +}; + export const WithNoSelectedChecks = { args: { ...Hana.args, diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx index 09f0956fc7..743e7b684b 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx @@ -184,9 +184,9 @@ describe('HanaClusterDetails component', () => { }); it('should display a host link in the site details if the host is registered', () => { - const unregisteredClusterNode = hanaClusterDetailsNodesFactory.build({ name: "unknownhost" }) - const registeredClusterNode = hanaClusterDetailsNodesFactory.build({ name: "registeredhost" }) - + const registeredClusterNode = hanaClusterDetailsNodesFactory.build({ + name: 'registeredhost', + }); const { clusterID, @@ -196,9 +196,12 @@ describe('HanaClusterDetails component', () => { sid, provider, details, - } = clusterFactory.build({ nodes: [unregisteredClusterNode, registeredClusterNode] }); + } = clusterFactory.build({ details: { nodes: [registeredClusterNode] } }); - const hosts = hostFactory.buildList(2, { hostname: "registeredhost", cluster_id: clusterID }); + const host = hostFactory.build({ + hostname: registeredClusterNode.name, + cluster_id: clusterID, + }); const sapSystems = sapSystemFactory.buildList(2, { tenant: sid }); @@ -208,7 +211,7 @@ describe('HanaClusterDetails component', () => { clusterName={clusterName} selectedChecks={[]} hasSelectedChecks={false} - hosts={hosts} + hosts={[host]} clusterType={clusterType} cibLastWritten={cibLastWritten} sid={sid} @@ -219,13 +222,11 @@ describe('HanaClusterDetails component', () => { /> ); - const unregisteredHostContainer = screen.getByText('unknownhost').nextSibling; const registeredHostContainer = screen.getByText('registeredhost'); - expect(registeredHostContainer).toBeInTheDocument(); - expect(unregisteredHostContainer.querySelector('a')).toHaveAttribute( + expect(registeredHostContainer).toHaveAttribute( 'href', - `/hosts/registeredhost}` + `/hosts/${host.id}` ); }); }); From ae2a3dd7cfd1139f61d2f8aaa035fe1f0112060a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Wed, 12 Jul 2023 12:18:53 +0100 Subject: [PATCH 07/13] Use slice instead of pop --- .../ClusterDetails/AscsErsClusterDetails.stories.jsx | 2 +- .../ClusterDetails/HanaClusterDetails.stories.jsx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/js/components/ClusterDetails/AscsErsClusterDetails.stories.jsx b/assets/js/components/ClusterDetails/AscsErsClusterDetails.stories.jsx index f2af3de69f..8f5371f51d 100644 --- a/assets/js/components/ClusterDetails/AscsErsClusterDetails.stories.jsx +++ b/assets/js/components/ClusterDetails/AscsErsClusterDetails.stories.jsx @@ -79,7 +79,7 @@ export const Single = { export const WithUnregisteredHost = { args: { ...Single.args, - hosts: [buildHostsFromAscsErsClusterDetails(details).pop()], + hosts: Single.args.hosts.slice(0, 1), }, render: (args) => ( diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx index bead5248f3..82df7f8909 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx @@ -75,15 +75,15 @@ export const Hana = { sapSystems, details, lastExecution, - onStartExecution: () => {}, - navigate: () => {}, + onStartExecution: () => { }, + navigate: () => { }, }, }; export const WithUnregisteredHost = { args: { ...Hana.args, - hosts: [hosts.pop()], + hosts: hosts.slice(0, 1), }, }; From d8348bffc840ccd93a4fc590fb686f123416277a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Wed, 12 Jul 2023 12:19:28 +0100 Subject: [PATCH 08/13] Improve tests --- .../AscsErsClusterDetails.test.jsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx b/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx index 923ba4528f..2cca0cf925 100644 --- a/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx +++ b/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx @@ -10,6 +10,7 @@ import { buildSapSystemsFromAscsErsClusterDetails, ascsErsClusterDetailsFactory, clusterFactory, + hostFactory, } from '@lib/test-utils/factories'; import { providerData } from '@components/ProviderLabel/ProviderLabel'; @@ -105,7 +106,7 @@ describe('ClusterDetails AscsErsClusterDetails component', () => { nodes.forEach( async ( { - id: clusterID, + id: hostId, name: nodeName, role, virtual_ip: virtualIp, @@ -119,7 +120,7 @@ describe('ClusterDetails AscsErsClusterDetails component', () => { expect(hostnameCell).toHaveTextContent(nodeName); expect(hostnameCell) .querySelector('a') - .toHaveAttributes('href', clusterID); + .toHaveAttributes('href', hostId); expect(row.querySelector('td:nth-child(1)')).toHaveTextContent(role); expect(row.querySelector('td:nth-child(2)')).toHaveTextContent( virtualIp @@ -201,7 +202,7 @@ describe('ClusterDetails AscsErsClusterDetails component', () => { expect(sidContainer.querySelector('a')).toBeNull(); }); - it('should display a host link for registered hosts', () => { + it('should not display a host link for unregistered hosts', () => { const { name, cib_last_written: cibLastWritten, @@ -210,6 +211,8 @@ describe('ClusterDetails AscsErsClusterDetails component', () => { } = clusterFactory.build({ type: 'ascs_ers' }); const hosts = buildHostsFromAscsErsClusterDetails(details); + const unregisteredHost = hosts.pop() + renderWithRouter( { details={details} /> ); - const registeredHostContainer = screen.getByText(hosts[0].hostname); + const unregisteredHostContainer = screen.getByText(unregisteredHost.hostname); - expect(registeredHostContainer).toHaveAttribute( - 'href', - `/hosts/${hosts[0].id}` + expect(unregisteredHostContainer).not.toHaveAttribute( + 'href' ); }); }); From 9900b4c4a58caae99d1f10f4a8c4bd7fdc3f89ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Wed, 12 Jul 2023 12:20:52 +0100 Subject: [PATCH 09/13] Use factories when possible --- .../ClusterDetails/ClusterNodeLink.test.jsx | 22 +++++++++---------- .../HanaClusterDetails.test.jsx | 6 ++--- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx b/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx index 18a36b0967..f0812c5e8e 100644 --- a/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx +++ b/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx @@ -1,30 +1,28 @@ import React from 'react'; import { screen, render } from '@testing-library/react'; import '@testing-library/jest-dom'; -import { renderWithRouterMatch } from '@lib/test-utils'; +import { renderWithRouter } from '@lib/test-utils'; import ClusterNodeLink from '@components/ClusterDetails/ClusterNodeLink'; +import { + hostFactory +} from '@lib/test-utils/factories'; describe('ClusterNodeLink', () => { it('renders HostLink when hostId is provided', () => { - const hostId = '12345678-abcd-1234-abcd-1234567890ab'; - const name = 'host01'; - const path = '/hosts/:hostId'; + const { id, hostname } = hostFactory.build(); - renderWithRouterMatch(, { - path, - route: `/hosts/${hostId}`, - }); + renderWithRouter(); - const hostLinkElement = screen.getByRole('link', { name }); + const hostLinkElement = screen.getByRole('link', { hostname }); expect(hostLinkElement).toBeInTheDocument(); - expect(hostLinkElement).toHaveAttribute('href', `/hosts/${hostId}`); + expect(hostLinkElement).toHaveAttribute('href', `/hosts/${id}`); }); it('renders warning span when hostId is not provided', () => { - const name = 'host02'; + const { hostname } = hostFactory.build(); - render(); + render(); expect( screen.getByText('Host currently not registered.') ).toBeInTheDocument(); diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx index 743e7b684b..83dd5f7b83 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx @@ -184,9 +184,7 @@ describe('HanaClusterDetails component', () => { }); it('should display a host link in the site details if the host is registered', () => { - const registeredClusterNode = hanaClusterDetailsNodesFactory.build({ - name: 'registeredhost', - }); + const registeredClusterNode = hanaClusterDetailsNodesFactory.build(); const { clusterID, @@ -222,7 +220,7 @@ describe('HanaClusterDetails component', () => { /> ); - const registeredHostContainer = screen.getByText('registeredhost'); + const registeredHostContainer = screen.getByText(registeredClusterNode.name); expect(registeredHostContainer).toHaveAttribute( 'href', From f5fb747b99bc2fe14ad14176c21a9ef182eb67b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Wed, 12 Jul 2023 12:31:09 +0100 Subject: [PATCH 10/13] Use children instead of separate name property --- .../js/components/ClusterDetails/AscsErsClusterDetails.jsx | 2 +- assets/js/components/ClusterDetails/ClusterNodeLink.jsx | 6 +++--- .../js/components/ClusterDetails/ClusterNodeLink.test.jsx | 4 ++-- assets/js/components/ClusterDetails/HanaClusterDetails.jsx | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx b/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx index 1f90e9482a..cc6ba888e6 100644 --- a/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx +++ b/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx @@ -23,7 +23,7 @@ const nodeDetailsConfig = { { title: 'Hostname', key: '', - render: (_, { id, name }) => , + render: (_, { id, name }) => {name}, }, { title: 'Role', diff --git a/assets/js/components/ClusterDetails/ClusterNodeLink.jsx b/assets/js/components/ClusterDetails/ClusterNodeLink.jsx index 5efdec1401..f032196f58 100644 --- a/assets/js/components/ClusterDetails/ClusterNodeLink.jsx +++ b/assets/js/components/ClusterDetails/ClusterNodeLink.jsx @@ -4,14 +4,14 @@ import { EOS_WARNING_OUTLINED } from 'eos-icons-react'; import Tooltip from '@components/Tooltip'; import HostLink from '@components/HostLink'; -function ClusterNodeLink({ name, hostId }) { +function ClusterNodeLink({ hostId, children }) { if (hostId) { - return {name}; + return {children}; } return ( - {name} + {children} { it('renders HostLink when hostId is provided', () => { const { id, hostname } = hostFactory.build(); - renderWithRouter(); + renderWithRouter({hostname}); const hostLinkElement = screen.getByRole('link', { hostname }); @@ -22,7 +22,7 @@ describe('ClusterNodeLink', () => { it('renders warning span when hostId is not provided', () => { const { hostname } = hostFactory.build(); - render(); + render({hostname}); expect( screen.getByText('Host currently not registered.') ).toBeInTheDocument(); diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx index c4a0ceeda9..5ec6c2cec4 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx @@ -34,7 +34,7 @@ const siteDetailsConfig = { title: 'Hostname', key: '', render: (_, hostData) => ( - + {hostData.name} ), }, { title: 'Role', key: 'hana_status' }, @@ -74,8 +74,8 @@ function HanaClusterDetails({ sapSystems, details, lastExecution, - onStartExecution = () => {}, - navigate = () => {}, + onStartExecution = () => { }, + navigate = () => { }, }) { const enrichedNodes = enrichNodes(details?.nodes, hosts); const enrichedSapSystem = { From 52c61f695303cde2873b117ae1db34ee34d0f913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Wed, 12 Jul 2023 13:08:38 +0100 Subject: [PATCH 11/13] Remove unused hostFactory import --- .../js/components/ClusterDetails/AscsErsClusterDetails.test.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx b/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx index 2cca0cf925..f69be1a741 100644 --- a/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx +++ b/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx @@ -10,7 +10,6 @@ import { buildSapSystemsFromAscsErsClusterDetails, ascsErsClusterDetailsFactory, clusterFactory, - hostFactory, } from '@lib/test-utils/factories'; import { providerData } from '@components/ProviderLabel/ProviderLabel'; From e7d6649312cab99f2c1c7b74257fa3d38fdc422b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Wed, 12 Jul 2023 15:05:28 +0100 Subject: [PATCH 12/13] Apply prettier formatting --- assets/js/components/ClusterDetails/HanaClusterDetails.jsx | 4 ++-- .../components/ClusterDetails/HanaClusterDetails.stories.jsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx index 5ec6c2cec4..bbfcc3a29f 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.jsx @@ -74,8 +74,8 @@ function HanaClusterDetails({ sapSystems, details, lastExecution, - onStartExecution = () => { }, - navigate = () => { }, + onStartExecution = () => {}, + navigate = () => {}, }) { const enrichedNodes = enrichNodes(details?.nodes, hosts); const enrichedSapSystem = { diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx index 82df7f8909..24c785b2fd 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.stories.jsx @@ -75,8 +75,8 @@ export const Hana = { sapSystems, details, lastExecution, - onStartExecution: () => { }, - navigate: () => { }, + onStartExecution: () => {}, + navigate: () => {}, }, }; From 8488e8a7db9be5af0555d2674ccc8ea17e5326fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Torrero=20Marijnissen?= Date: Wed, 12 Jul 2023 15:23:58 +0100 Subject: [PATCH 13/13] Run prettier --- .../ClusterDetails/AscsErsClusterDetails.jsx | 4 +++- .../AscsErsClusterDetails.test.jsx | 18 ++++++------------ .../ClusterDetails/ClusterNodeLink.test.jsx | 4 +--- .../ClusterDetails/HanaClusterDetails.test.jsx | 4 +++- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx b/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx index cc6ba888e6..90bdabc631 100644 --- a/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx +++ b/assets/js/components/ClusterDetails/AscsErsClusterDetails.jsx @@ -23,7 +23,9 @@ const nodeDetailsConfig = { { title: 'Hostname', key: '', - render: (_, { id, name }) => {name}, + render: (_, { id, name }) => ( + {name} + ), }, { title: 'Role', diff --git a/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx b/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx index f69be1a741..a4a449c7e2 100644 --- a/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx +++ b/assets/js/components/ClusterDetails/AscsErsClusterDetails.test.jsx @@ -104,13 +104,7 @@ describe('ClusterDetails AscsErsClusterDetails component', () => { nodes.forEach( async ( - { - id: hostId, - name: nodeName, - role, - virtual_ip: virtualIp, - filesysten, - }, + { id: hostId, name: nodeName, role, virtual_ip: virtualIp, filesysten }, index ) => { await waitFor(() => { @@ -210,7 +204,7 @@ describe('ClusterDetails AscsErsClusterDetails component', () => { } = clusterFactory.build({ type: 'ascs_ers' }); const hosts = buildHostsFromAscsErsClusterDetails(details); - const unregisteredHost = hosts.pop() + const unregisteredHost = hosts.pop(); renderWithRouter( { details={details} /> ); - const unregisteredHostContainer = screen.getByText(unregisteredHost.hostname); - - expect(unregisteredHostContainer).not.toHaveAttribute( - 'href' + const unregisteredHostContainer = screen.getByText( + unregisteredHost.hostname ); + + expect(unregisteredHostContainer).not.toHaveAttribute('href'); }); }); diff --git a/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx b/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx index 3697fea8e3..f620fdca96 100644 --- a/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx +++ b/assets/js/components/ClusterDetails/ClusterNodeLink.test.jsx @@ -3,9 +3,7 @@ import { screen, render } from '@testing-library/react'; import '@testing-library/jest-dom'; import { renderWithRouter } from '@lib/test-utils'; import ClusterNodeLink from '@components/ClusterDetails/ClusterNodeLink'; -import { - hostFactory -} from '@lib/test-utils/factories'; +import { hostFactory } from '@lib/test-utils/factories'; describe('ClusterNodeLink', () => { it('renders HostLink when hostId is provided', () => { diff --git a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx index 83dd5f7b83..e5ad12ea9e 100644 --- a/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx +++ b/assets/js/components/ClusterDetails/HanaClusterDetails.test.jsx @@ -220,7 +220,9 @@ describe('HanaClusterDetails component', () => { /> ); - const registeredHostContainer = screen.getByText(registeredClusterNode.name); + const registeredHostContainer = screen.getByText( + registeredClusterNode.name + ); expect(registeredHostContainer).toHaveAttribute( 'href',