From 15ef0364cae7e4c6b6b2a27fff4ff2f8ef3b09f7 Mon Sep 17 00:00:00 2001 From: Mgrdich <46796009+Mgrdich@users.noreply.github.com> Date: Fri, 1 Apr 2022 00:30:19 +0400 Subject: [PATCH] Clusters Style change during initializing phase + implement tests suites (#1787) --- .../Nav/ClusterTab/ClusterTab.styled.ts | 23 +++++---- .../__tests__/ClusterTab.styled.spec.tsx | 47 +++++++++++++++++++ kafka-ui-react-app/src/theme/theme.ts | 1 + 3 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 kafka-ui-react-app/src/components/Nav/ClusterTab/__tests__/ClusterTab.styled.spec.tsx diff --git a/kafka-ui-react-app/src/components/Nav/ClusterTab/ClusterTab.styled.ts b/kafka-ui-react-app/src/components/Nav/ClusterTab/ClusterTab.styled.ts index a01434b91a..9b61878bba 100644 --- a/kafka-ui-react-app/src/components/Nav/ClusterTab/ClusterTab.styled.ts +++ b/kafka-ui-react-app/src/components/Nav/ClusterTab/ClusterTab.styled.ts @@ -12,7 +12,7 @@ export const Wrapper = styled.li.attrs({ role: 'menuitem' })<{ display: grid; grid-template-columns: min-content min-content auto min-content; grid-template-areas: 'title status . chevron'; - gap: 0px 5px; + gap: 0 5px; padding: 0.5em 0.75em; cursor: pointer; @@ -52,13 +52,20 @@ export const StatusIcon = styled.circle.attrs({ cx: 2, cy: 2, r: 2, -})<{ status: ServerStatus }>( - ({ theme, status }) => css` - fill: ${status === ServerStatus.ONLINE - ? theme.menu.statusIconColor.online - : theme.menu.statusIconColor.offline}; - ` -); + role: 'status-circle', +})<{ status: ServerStatus }>(({ theme, status }) => { + const statusColor: { + [k in ServerStatus]: string; + } = { + [ServerStatus.ONLINE]: theme.menu.statusIconColor.online, + [ServerStatus.OFFLINE]: theme.menu.statusIconColor.offline, + [ServerStatus.INITIALIZING]: theme.menu.statusIconColor.initializing, + }; + + return css` + fill: ${statusColor[status]}; + `; +}); export const ChevronWrapper = styled.svg.attrs({ viewBox: '0 0 10 6', diff --git a/kafka-ui-react-app/src/components/Nav/ClusterTab/__tests__/ClusterTab.styled.spec.tsx b/kafka-ui-react-app/src/components/Nav/ClusterTab/__tests__/ClusterTab.styled.spec.tsx new file mode 100644 index 0000000000..76b69ebd59 --- /dev/null +++ b/kafka-ui-react-app/src/components/Nav/ClusterTab/__tests__/ClusterTab.styled.spec.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import { render } from 'lib/testHelpers'; +import theme from 'theme/theme'; +import { screen } from '@testing-library/react'; +import * as S from 'components/Nav/ClusterTab/ClusterTab.styled'; +import { ServerStatus } from 'generated-sources'; + +describe('Cluster Styled Components', () => { + describe('Wrapper Component', () => { + it('should check the rendering and correct Styling when it is open', () => { + render(); + expect(screen.getByRole('menuitem')).toHaveStyle( + `color:${theme.menu.color.isOpen}` + ); + }); + it('should check the rendering and correct Styling when it is Not open', () => { + render(); + expect(screen.getByRole('menuitem')).toHaveStyle( + `color:${theme.menu.color.normal}` + ); + }); + }); + + describe('StatusIcon Component', () => { + it('should check the rendering and correct Styling when it is online', () => { + render(); + + expect(screen.getByRole('status-circle')).toHaveStyle( + `fill:${theme.menu.statusIconColor.online}` + ); + }); + + it('should check the rendering and correct Styling when it is offline', () => { + render(); + expect(screen.getByRole('status-circle')).toHaveStyle( + `fill:${theme.menu.statusIconColor.offline}` + ); + }); + + it('should check the rendering and correct Styling when it is Initializing', () => { + render(); + expect(screen.getByRole('status-circle')).toHaveStyle( + `fill:${theme.menu.statusIconColor.initializing}` + ); + }); + }); +}); diff --git a/kafka-ui-react-app/src/theme/theme.ts b/kafka-ui-react-app/src/theme/theme.ts index e30cacfb20..e2b337a3ce 100644 --- a/kafka-ui-react-app/src/theme/theme.ts +++ b/kafka-ui-react-app/src/theme/theme.ts @@ -225,6 +225,7 @@ const theme = { statusIconColor: { online: Colors.green[40], offline: Colors.red[50], + initializing: Colors.yellow[20], }, chevronIconColor: Colors.neutral[50], },