@centreon/ui 24.4.1-MON-34691-improve-code-coverage.26 → 24.4.1-MON-24235-Filter-App-token.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@centreon/ui",
3
- "version": "24.4.1-MON-34691-improve-code-coverage.26",
3
+ "version": "24.4.1-MON-24235-Filter-App-token.0",
4
4
  "description": "Centreon UI Components",
5
5
  "scripts": {
6
6
  "eslint": "eslint ./src --ext .js,.jsx,.ts,.tsx --max-warnings 0",
@@ -28,7 +28,6 @@
28
28
  "author": {
29
29
  "name": "centreon@centreon.com"
30
30
  },
31
- "baseCodeCoveragePercentage": 60,
32
31
  "license": "GPL-2.0",
33
32
  "bugs": {
34
33
  "url": "https://github.com/centreon/centreon/issues"
@@ -1,4 +1,4 @@
1
- import { DialogContentText, Typography } from '@mui/material';
1
+ import { ButtonProps, DialogContentText, Typography } from '@mui/material';
2
2
 
3
3
  import Dialog, { Props as DialogProps } from '..';
4
4
 
@@ -6,15 +6,23 @@ type Props = DialogProps & {
6
6
  children?: JSX.Element;
7
7
  labelMessage?: string | null;
8
8
  labelSecondMessage?: string | null;
9
+ restCancelButtonProps?: ButtonProps;
10
+ restConfirmButtonProps?: ButtonProps;
9
11
  };
10
12
 
11
13
  const Confirm = ({
12
14
  labelMessage,
13
15
  labelSecondMessage,
14
16
  children,
17
+ restCancelButtonProps,
18
+ restConfirmButtonProps,
15
19
  ...rest
16
20
  }: Props): JSX.Element => (
17
- <Dialog {...rest}>
21
+ <Dialog
22
+ restCancelButtonProps={restCancelButtonProps}
23
+ restConfirmButtonProps={restConfirmButtonProps}
24
+ {...rest}
25
+ >
18
26
  <DialogContentText>
19
27
  {labelMessage && <Typography>{labelMessage}</Typography>}
20
28
  {labelSecondMessage && <Typography>{labelSecondMessage}</Typography>}
@@ -9,7 +9,8 @@ import {
9
9
  DialogContent,
10
10
  DialogActions,
11
11
  DialogProps,
12
- CircularProgress
12
+ CircularProgress,
13
+ ButtonProps
13
14
  } from '@mui/material';
14
15
 
15
16
  import { DataTestAttributes } from '../@types/data-attributes';
@@ -48,6 +49,8 @@ export type Props = {
48
49
  onClose?: () => void;
49
50
  onConfirm: (event, value?) => void;
50
51
  open: boolean;
52
+ restCancelButtonProps?: ButtonProps;
53
+ restConfirmButtonProps?: ButtonProps;
51
54
  submitting?: boolean;
52
55
  } & DialogProps &
53
56
  DataTestAttributes;
@@ -70,6 +73,8 @@ const Dialog = ({
70
73
  dialogContentClassName,
71
74
  dialogActionsClassName,
72
75
  dialogConfirmButtonClassName,
76
+ restCancelButtonProps,
77
+ restConfirmButtonProps,
73
78
  ...rest
74
79
  }: Props): JSX.Element => {
75
80
  const { classes, cx } = useStyles({ contentWidth });
@@ -101,6 +106,7 @@ const Dialog = ({
101
106
  data-testid="Cancel"
102
107
  disabled={cancelDisabled}
103
108
  onClick={onCancel}
109
+ {...restCancelButtonProps}
104
110
  >
105
111
  {labelCancel}
106
112
  </Button>
@@ -113,6 +119,7 @@ const Dialog = ({
113
119
  disabled={confirmDisabled}
114
120
  endIcon={submitting && <CircularProgress size={15} />}
115
121
  onClick={onConfirm}
122
+ {...restConfirmButtonProps}
116
123
  >
117
124
  {labelConfirm}
118
125
  </Button>
@@ -5,7 +5,7 @@ import { Metric } from '../common/timeSeries/models';
5
5
 
6
6
  import ResponsiveGauge from './ResponsiveGauge';
7
7
 
8
- export interface Props {
8
+ interface Props {
9
9
  baseColor?: string;
10
10
  data?: LineChartData;
11
11
  displayAsRaw?: boolean;
@@ -3,6 +3,8 @@ import { makeStyles } from 'tss-react/mui';
3
3
 
4
4
  import { Box, Typography } from '@mui/material';
5
5
 
6
+ import EllipsisTypography from '../../Typography/EllipsisTypography';
7
+
6
8
  import heatMapData from './HeatMapData.json';
7
9
 
8
10
  import { HeatMap } from '.';
@@ -20,6 +22,29 @@ const meta: Meta<typeof HeatMap<Data>> = {
20
22
  export default meta;
21
23
  type Story = StoryObj<typeof HeatMap<Data>>;
22
24
 
25
+ const TileContent = ({
26
+ isSmallestSize,
27
+ data
28
+ }: {
29
+ data: Data;
30
+ isSmallestSize: boolean;
31
+ }): JSX.Element | false =>
32
+ !isSmallestSize && (
33
+ <Box
34
+ sx={{
35
+ alignItems: 'center',
36
+ color: 'common.black',
37
+ display: 'flex',
38
+ flexDirection: 'column',
39
+ width: '100%'
40
+ }}
41
+ >
42
+ <EllipsisTypography textAlign="center">{data.host}</EllipsisTypography>
43
+ <EllipsisTypography textAlign="center">{data.service}</EllipsisTypography>
44
+ <EllipsisTypography textAlign="center">{data.counter}</EllipsisTypography>
45
+ </Box>
46
+ );
47
+
23
48
  const TooltipContent = ({ data }: { data: Data }): JSX.Element => {
24
49
  return (
25
50
  <Box sx={{ backgroundColor: 'common.white', color: 'common.black' }}>
@@ -40,7 +40,7 @@ const ResponsiveHeatMap = <TData,>({
40
40
  const theoricalTotalTilesWidth =
41
41
  tilesLength * tileWidth + (tilesLength - 1) * gap;
42
42
 
43
- if (lt(width, 680) && gt(maxTotalTilesWidth, width) && !tileSizeFixed) {
43
+ if (lt(width, 680) && gt(maxTotalTilesWidth, width)) {
44
44
  return smallestTileSize;
45
45
  }
46
46
 
@@ -66,19 +66,13 @@ const ResponsiveHeatMap = <TData,>({
66
66
  }}
67
67
  >
68
68
  {tiles.map(({ backgroundColor, id, data }) => (
69
- <Box
70
- className={classes.heatMapTile}
71
- data-testid={id}
72
- key={id}
73
- sx={{ backgroundColor }}
74
- >
69
+ <Box className={classes.heatMapTile} key={id} sx={{ backgroundColor }}>
75
70
  <Tooltip
76
71
  hasCaret
77
72
  classes={{
78
73
  arrow: cx(classes.heatMapTooltipArrow, arrowClassName),
79
74
  tooltip: classes.heatMapTooltip
80
75
  }}
81
- data-testid={`tooltip-${data?.id}`}
82
76
  followCursor={false}
83
77
  label={
84
78
  displayTooltipCondition?.(data) &&
@@ -8,7 +8,7 @@ interface MakeStylesProps {
8
8
 
9
9
  export const legendWidth = 21;
10
10
  const legendItemHeight = 5.25;
11
- const legendItemHeightCompact = 2;
11
+ const legendItemHeightCompact = 1.75;
12
12
 
13
13
  export const useStyles = makeStyles<MakeStylesProps>()(
14
14
  (theme, { limitLegendRows }) => ({
@@ -38,7 +38,7 @@ const LegendHeader = ({
38
38
 
39
39
  const getEndText = (): string => {
40
40
  if (value) {
41
- return value;
41
+ return `${value}${hasUnit ? ` ${unit}` : ''}`;
42
42
  }
43
43
 
44
44
  return hasUnit ? ` ${unitName}` : '';
@@ -5,7 +5,7 @@ import { equals, find, isNil } from 'ramda';
5
5
 
6
6
  import { mousePositionAtom } from '../InteractiveComponents/interactionWithGraphAtoms';
7
7
  import {
8
- formatMetricValueWithUnit,
8
+ formatMetricValue,
9
9
  getLineForMetric,
10
10
  getMetrics,
11
11
  getTimeValue
@@ -73,7 +73,7 @@ const useInteractiveValues = ({
73
73
  metric_id
74
74
  }) as Line;
75
75
 
76
- const formattedValue = formatMetricValueWithUnit({
76
+ const formattedValue = formatMetricValue({
77
77
  base,
78
78
  unit,
79
79
  value
@@ -78,7 +78,7 @@ const WrapperLineChart = ({
78
78
  return (
79
79
  <div
80
80
  ref={lineChartRef as MutableRefObject<HTMLDivElement>}
81
- style={{ height: '100%', overflowY: 'hidden', width: '100%' }}
81
+ style={{ height: '100%', width: '100%' }}
82
82
  >
83
83
  <ParentSize>
84
84
  {({
@@ -11,7 +11,7 @@ import { getColorFromDataAndTresholds } from '../common/utils';
11
11
 
12
12
  import { useTextStyles } from './Text.styles';
13
13
 
14
- export interface Props {
14
+ interface Props {
15
15
  baseColor?: string;
16
16
  data?: LineChartData;
17
17
  displayAsRaw?: boolean;
@@ -476,7 +476,15 @@ const registerMsUnitToNumeral = (): null => {
476
476
 
477
477
  registerMsUnitToNumeral();
478
478
 
479
- const getBase1024 = ({ unit, base }): boolean => {
479
+ const formatMetricValue = ({
480
+ value,
481
+ unit,
482
+ base = 1000
483
+ }: FormatMetricValueProps): string | null => {
484
+ if (isNil(value)) {
485
+ return null;
486
+ }
487
+
480
488
  const base2Units = [
481
489
  'B',
482
490
  'bytes',
@@ -489,19 +497,7 @@ const getBase1024 = ({ unit, base }): boolean => {
489
497
  'b'
490
498
  ];
491
499
 
492
- return base2Units.includes(unit) || Number(base) === 1024;
493
- };
494
-
495
- const formatMetricValue = ({
496
- value,
497
- unit,
498
- base = 1000
499
- }: FormatMetricValueProps): string | null => {
500
- if (isNil(value)) {
501
- return null;
502
- }
503
-
504
- const base1024 = getBase1024({ base, unit });
500
+ const base1024 = base2Units.includes(unit) || Number(base) === 1024;
505
501
 
506
502
  const formatSuffix = cond([
507
503
  [equals('ms'), always(' ms')],
@@ -529,8 +525,6 @@ const formatMetricValueWithUnit = ({
529
525
  return null;
530
526
  }
531
527
 
532
- const base1024 = getBase1024({ base, unit });
533
-
534
528
  if (isRaw) {
535
529
  const unitText = equals('%', unit) ? unit : ` ${unit}`;
536
530
 
@@ -543,9 +537,7 @@ const formatMetricValueWithUnit = ({
543
537
 
544
538
  const formattedMetricValue = formatMetricValue({ base, unit, value });
545
539
 
546
- return base1024 || !unit || equals(unit, 'ms')
547
- ? formattedMetricValue
548
- : `${formattedMetricValue} ${unit}`;
540
+ return formattedMetricValue;
549
541
  };
550
542
 
551
543
  const getStackedYScale = ({
@@ -2,5 +2,4 @@ export { default as LineChart } from './LineChart';
2
2
  export { Gauge } from './Gauge';
3
3
  export { SingleBar } from './SingleBar';
4
4
  export { Text as GraphText } from './Text';
5
-
6
5
  export { HeatMap } from './HeatMap';
@@ -1,4 +1,4 @@
1
- import { includes, map, prop, reject } from 'ramda';
1
+ import { includes, map, prop, reject, sortBy, toLower, compose } from 'ramda';
2
2
  import { makeStyles } from 'tss-react/mui';
3
3
 
4
4
  import { Chip, ChipProps, Tooltip } from '@mui/material';
@@ -85,9 +85,11 @@ const MultiAutocompleteField = ({
85
85
  return includes(id, valueIds);
86
86
  };
87
87
 
88
+ const sortByName = sortBy(compose(toLower, prop('name')));
89
+
88
90
  const autocompleteOptions = disableSortedOptions
89
91
  ? options
90
- : [...values, ...reject(isOptionSelected, options)];
92
+ : sortByName([...values, ...reject(isOptionSelected, options)]);
91
93
 
92
94
  return (
93
95
  <Autocomplete
@@ -1,10 +1,10 @@
1
1
  import { ForwardedRef, forwardRef, ReactElement, ReactNode } from 'react';
2
2
 
3
- import { ListItem as MuiListItem } from '@mui/material';
3
+ import { ListItemProps, ListItem as MuiListItem } from '@mui/material';
4
4
 
5
5
  import { useStyles } from './ListItem.styles';
6
6
 
7
- type ListItemProps = {
7
+ type Props = {
8
8
  action?: ReactElement;
9
9
  children: ReactNode | Array<ReactNode>;
10
10
  className?: string;
@@ -12,7 +12,7 @@ type ListItemProps = {
12
12
 
13
13
  export const ListItem = forwardRef(
14
14
  (
15
- { action, children, className, ...attr }: ListItemProps,
15
+ { action, children, className, ...attr }: Props & ListItemProps,
16
16
  ref?: ForwardedRef<HTMLLIElement>
17
17
  ) => {
18
18
  const { classes, cx } = useStyles();
@@ -1,102 +0,0 @@
1
- import dataLastWeek from '../LineChart/mockedData/lastWeek.json';
2
- import {
3
- criticalThresholds,
4
- rangedThresholds,
5
- successThresholds,
6
- warningThresholds
7
- } from '../common/testUtils';
8
-
9
- import { Props, Gauge } from './Gauge';
10
-
11
- const initialize = (
12
- args: Omit<Props, 'data' | 'labels' | 'baseColor'>
13
- ): void => {
14
- cy.mount({
15
- Component: (
16
- <div style={{ height: '100vh', width: '100vw' }}>
17
- <Gauge
18
- baseColor="#000"
19
- data={dataLastWeek}
20
- labels={{
21
- critical: 'Critical',
22
- warning: 'Warning'
23
- }}
24
- {...args}
25
- />
26
- </div>
27
- )
28
- });
29
- };
30
-
31
- describe('Gauge', () => {
32
- it('does not display the gauge when there is no data', () => {
33
- initialize({ data: undefined, thresholds: successThresholds });
34
-
35
- cy.contains('0.41 s').should('not.exist');
36
- });
37
-
38
- it('displays the gauge as success when corresponding thresholds are set', () => {
39
- initialize({ thresholds: successThresholds });
40
-
41
- cy.contains('0.41 s').should('have.css', 'fill', 'rgb(136, 185, 34)');
42
- cy.findByTestId('1.1500000000000001-arc').should('be.visible');
43
- cy.findByTestId('0.15000000000000013-arc').should('be.visible');
44
-
45
- cy.makeSnapshot();
46
- });
47
-
48
- it('displays the gauge as warning when corresponding thresholds are set', () => {
49
- initialize({ thresholds: warningThresholds });
50
-
51
- cy.contains('0.41 s').should('have.css', 'fill', 'rgb(253, 155, 39)');
52
- cy.findByTestId('1.25-arc').should('be.visible');
53
- cy.findByTestId('0.15000000000000013-arc').should('be.visible');
54
-
55
- cy.makeSnapshot();
56
- });
57
-
58
- it('displays the gauge as critical when corresponding thresholds are set', () => {
59
- initialize({ thresholds: criticalThresholds });
60
-
61
- cy.contains('0.41 s').should('have.css', 'fill', 'rgb(255, 74, 74)');
62
- cy.findByTestId('0.6399999999999999-arc').should('be.visible');
63
- cy.findByTestId('0.54-arc').should('be.visible');
64
-
65
- cy.makeSnapshot();
66
- });
67
-
68
- it('displays ranged thresholds', () => {
69
- initialize({ thresholds: rangedThresholds });
70
-
71
- cy.findByTestId('0.37-arc').should('be.visible');
72
- cy.findByTestId('0.09999999999999998-arc').should('be.visible');
73
-
74
- cy.makeSnapshot();
75
- });
76
-
77
- it('displays the threshold tooltip when a threshold is hovered', () => {
78
- initialize({ thresholds: successThresholds });
79
-
80
- cy.findByTestId('1.1500000000000001-arc').trigger('mouseover', {
81
- force: true
82
- });
83
-
84
- cy.contains('Warning').should('be.visible');
85
-
86
- cy.findByTestId('0.15000000000000013-arc').trigger('mouseover', {
87
- force: true
88
- });
89
-
90
- cy.contains('Critical').should('be.visible');
91
-
92
- cy.makeSnapshot();
93
- });
94
-
95
- it('displays the value as raw when the prop is set', () => {
96
- initialize({ displayAsRaw: true, thresholds: successThresholds });
97
-
98
- cy.contains('0.40663333333 s').should('be.visible');
99
-
100
- cy.makeSnapshot();
101
- });
102
- });
@@ -1,145 +0,0 @@
1
- import { pluck } from 'ramda';
2
-
3
- import { Box, Typography } from '@mui/material';
4
-
5
- import EllipsisTypography from '../../Typography/EllipsisTypography';
6
-
7
- import HeatMap from './HeatMap';
8
- import heatMapData from './HeatMapData.json';
9
- import { HeatMapProps } from './model';
10
-
11
- const dataIds = pluck('id', heatMapData);
12
-
13
- interface Data {
14
- counter: number;
15
- host: string;
16
- service: string;
17
- }
18
-
19
- const TileContent = ({
20
- isSmallestSize,
21
- data
22
- }: {
23
- data: Data;
24
- isSmallestSize: boolean;
25
- }): JSX.Element | false =>
26
- !isSmallestSize && (
27
- <Box
28
- sx={{
29
- alignItems: 'center',
30
- color: 'common.black',
31
- display: 'flex',
32
- flexDirection: 'column',
33
- width: '100%'
34
- }}
35
- >
36
- <EllipsisTypography textAlign="center">{data.host}</EllipsisTypography>
37
- <EllipsisTypography textAlign="center">{data.service}</EllipsisTypography>
38
- <EllipsisTypography textAlign="center">{data.counter}</EllipsisTypography>
39
- </Box>
40
- );
41
-
42
- const initialize = ({
43
- width = '100vw',
44
- height = '100vh',
45
- ...args
46
- }: Omit<HeatMapProps<Data>, 'tiles' | 'children'> & {
47
- height?: string;
48
- width?: string;
49
- }): void => {
50
- cy.mount({
51
- Component: (
52
- <div style={{ height, width }}>
53
- <HeatMap tiles={heatMapData} {...args}>
54
- {TileContent}
55
- </HeatMap>
56
- </div>
57
- )
58
- });
59
- };
60
-
61
- describe('HeatMap', () => {
62
- it('displays tiles', () => {
63
- initialize({});
64
- dataIds.forEach((id) => {
65
- cy.findByTestId(id).should('be.visible');
66
- });
67
- });
68
-
69
- it('does not display the tooltip when the prop is not set and the tile is hovered', () => {
70
- initialize({});
71
-
72
- cy.findByTestId(dataIds[0]).trigger('mouseover');
73
-
74
- cy.findByTestId(`tooltip-${dataIds[0]}`).should('not.exist');
75
- });
76
-
77
- it('displays the tooltip when the prop is set and the tile is hovered', () => {
78
- initialize({
79
- tooltipContent: ({ data }) => (
80
- <Typography>
81
- This is the tooltip for {data.host}-{data.service}-{data.counter}
82
- </Typography>
83
- )
84
- });
85
-
86
- cy.findByTestId(dataIds[0]).trigger('mouseover');
87
-
88
- cy.contains(`This is the tooltip for Server-Service Counter-53`).should(
89
- 'be.visible'
90
- );
91
- });
92
-
93
- it('displays the tooltip conditionally when the prop is set and the tile is hovered', () => {
94
- initialize({
95
- displayTooltipCondition: ({ counter }) => counter > 100,
96
- tooltipContent: ({ data }) => (
97
- <Typography>
98
- This is the tooltip for {data.host}-{data.service}-{data.counter}
99
- </Typography>
100
- )
101
- });
102
-
103
- cy.findByTestId(dataIds[0]).trigger('mouseover');
104
-
105
- cy.contains(`This is the tooltip for Server-Service Counter-53`).should(
106
- 'not.exist'
107
- );
108
-
109
- cy.findByTestId(dataIds[1]).trigger('mouseover');
110
-
111
- cy.contains(`This is the tooltip for Server-Service Counter-779`).should(
112
- 'be.visible'
113
- );
114
- });
115
-
116
- it('displays tiles with fixed size', () => {
117
- initialize({ height: '200px', tileSizeFixed: true, width: '590px' });
118
- dataIds.forEach((id) => {
119
- cy.findByTestId(id).should('be.visible');
120
- });
121
- });
122
-
123
- it('displays tiles as small when the container width is under the breakpoint', () => {
124
- initialize({ height: '200px', width: '590px' });
125
- dataIds.forEach((id) => {
126
- cy.findByTestId(id).should('be.visible');
127
- });
128
-
129
- cy.makeSnapshot();
130
- });
131
-
132
- it('does not display tiles as small when the contains width is 0', () => {
133
- initialize({ height: '200px', width: '0px' });
134
- dataIds.forEach((id) => {
135
- cy.findByTestId(id).should('not.exist');
136
- });
137
-
138
- cy.makeSnapshot();
139
- });
140
-
141
- it('displays a single tile', () => {
142
- initialize({ tiles: [heatMapData[0]] });
143
- cy.findByTestId(dataIds[0]).should('be.visible');
144
- });
145
- });
@@ -1,121 +0,0 @@
1
- import dataLastWeek from '../LineChart/mockedData/lastWeek.json';
2
- import {
3
- criticalThresholds,
4
- rangedThresholds,
5
- successThresholds,
6
- warningThresholds
7
- } from '../common/testUtils';
8
-
9
- import SingleBar from './SingleBar';
10
- import { SingleBarProps } from './models';
11
-
12
- const initialize = (
13
- args: Omit<SingleBarProps, 'data' | 'labels' | 'baseColor'>
14
- ): void => {
15
- cy.mount({
16
- Component: (
17
- <div style={{ height: '100vh', width: '100vw' }}>
18
- <SingleBar
19
- baseColor="#000"
20
- data={dataLastWeek}
21
- labels={{
22
- critical: 'Critical',
23
- warning: 'Warning'
24
- }}
25
- {...args}
26
- />
27
- </div>
28
- )
29
- });
30
- };
31
-
32
- describe('Single bar', () => {
33
- it('displays the single bar as success when corresponding thresholds are set', () => {
34
- initialize({ thresholds: successThresholds });
35
-
36
- cy.contains('0.41 s').should('have.css', 'fill', 'rgb(136, 185, 34)');
37
- cy.findByTestId('warning-line-0.5').should('be.visible');
38
- cy.findByTestId('warning-line-0.5-tooltip').should('be.visible');
39
- cy.findByTestId('critical-line-1.5').should('be.visible');
40
- cy.findByTestId('critical-line-1.5-tooltip').should('be.visible');
41
-
42
- cy.makeSnapshot();
43
- });
44
-
45
- it('displays the single bar as warning when corresponding thresholds are set', () => {
46
- initialize({ thresholds: warningThresholds });
47
-
48
- cy.contains('0.41 s').should('have.css', 'fill', 'rgb(253, 155, 39)');
49
- cy.findByTestId('warning-line-0.4').should('be.visible');
50
- cy.findByTestId('warning-line-0.4-tooltip').should('be.visible');
51
- cy.findByTestId('critical-line-1.5').should('be.visible');
52
- cy.findByTestId('critical-line-1.5-tooltip').should('be.visible');
53
-
54
- cy.makeSnapshot();
55
- });
56
-
57
- it('displays the single bar as critical when corresponding thresholds are set', () => {
58
- initialize({ thresholds: criticalThresholds });
59
-
60
- cy.contains('0.41 s').should('have.css', 'fill', 'rgb(255, 74, 74)');
61
- cy.findByTestId('warning-line-0.2').should('be.visible');
62
- cy.findByTestId('warning-line-0.2-tooltip').should('be.visible');
63
- cy.findByTestId('critical-line-0.3').should('be.visible');
64
- cy.findByTestId('critical-line-0.3-tooltip').should('be.visible');
65
-
66
- cy.makeSnapshot();
67
- });
68
-
69
- it('displays ranged thresholds', () => {
70
- initialize({ thresholds: rangedThresholds });
71
-
72
- cy.findByTestId('warning-line-0.13').should('be.visible');
73
- cy.findByTestId('warning-line-0.13-tooltip').should('be.visible');
74
- cy.findByTestId('warning-line-0.5').should('be.visible');
75
- cy.findByTestId('warning-line-0.5-tooltip').should('be.visible');
76
- cy.findByTestId('critical-line-0.55').should('be.visible');
77
- cy.findByTestId('critical-line-0.55-tooltip').should('be.visible');
78
- cy.findByTestId('critical-line-0.65').should('be.visible');
79
- cy.findByTestId('critical-line-0.65-tooltip').should('be.visible');
80
-
81
- cy.makeSnapshot();
82
- });
83
-
84
- it('displays the threshold tooltip when a threshold is hovered', () => {
85
- initialize({ thresholds: successThresholds });
86
-
87
- cy.findByTestId('warning-line-0.5-tooltip').trigger('mouseover');
88
-
89
- cy.contains('Warning').should('be.visible');
90
-
91
- cy.findByTestId('critical-line-1.5-tooltip').trigger('mouseover');
92
-
93
- cy.contains('Critical').should('be.visible');
94
-
95
- cy.makeSnapshot();
96
- });
97
-
98
- it('displays single bar as small when the props is set', () => {
99
- initialize({ size: 'small', thresholds: successThresholds });
100
-
101
- cy.findByTestId('warning-line-0.5-tooltip').should('be.visible');
102
-
103
- cy.makeSnapshot();
104
- });
105
-
106
- it('displays the value as raw when the prop is set', () => {
107
- initialize({ displayAsRaw: true, thresholds: successThresholds });
108
-
109
- cy.contains('0.40663333333 s').should('be.visible');
110
-
111
- cy.makeSnapshot();
112
- });
113
-
114
- it('does not display the value when the prop is set', () => {
115
- initialize({ showLabels: false, thresholds: successThresholds });
116
-
117
- cy.contains('0.41 s').should('not.exist');
118
-
119
- cy.makeSnapshot();
120
- });
121
- });
@@ -1,101 +0,0 @@
1
- import dataLastWeek from '../LineChart/mockedData/lastWeek.json';
2
- import {
3
- criticalThresholds,
4
- rangedThresholds,
5
- successThresholds,
6
- warningThresholds
7
- } from '../common/testUtils';
8
-
9
- import { Text, Props } from './Text';
10
-
11
- const initialize = (
12
- args: Omit<Props, 'data' | 'labels' | 'baseColor'>
13
- ): void => {
14
- cy.mount({
15
- Component: (
16
- <div style={{ height: '100vh', width: '100vw' }}>
17
- <Text
18
- baseColor="#000"
19
- data={dataLastWeek}
20
- labels={{
21
- critical: 'Critical',
22
- warning: 'Warning'
23
- }}
24
- {...args}
25
- />
26
- </div>
27
- )
28
- });
29
- };
30
-
31
- describe('Text', () => {
32
- it('displays the text as success when corresponding thresholds are set', () => {
33
- initialize({ thresholds: successThresholds });
34
-
35
- cy.contains('0.41 s').should('have.css', 'color', 'rgb(136, 185, 34)');
36
- cy.contains('Warning: 0.5 s').should('be.visible');
37
- cy.contains('Critical: 1.5 s').should('be.visible');
38
-
39
- cy.makeSnapshot();
40
- });
41
-
42
- it('displays the text as warning when corresponding thresholds are set', () => {
43
- initialize({ thresholds: warningThresholds });
44
-
45
- cy.contains('0.41 s').should('have.css', 'color', 'rgb(253, 155, 39)');
46
- cy.contains('Warning: 0.4 s').should('be.visible');
47
- cy.contains('Critical: 1.5 s').should('be.visible');
48
-
49
- cy.makeSnapshot();
50
- });
51
-
52
- it('displays the text as critical when corresponding thresholds are set', () => {
53
- initialize({ thresholds: criticalThresholds });
54
-
55
- cy.contains('0.41 s').should('have.css', 'color', 'rgb(255, 74, 74)');
56
- cy.contains('Warning: 0.2 s').should('be.visible');
57
- cy.contains('Critical: 0.3 s').should('be.visible');
58
-
59
- cy.makeSnapshot();
60
- });
61
-
62
- it('displays ranged thresholds', () => {
63
- initialize({ thresholds: rangedThresholds });
64
-
65
- cy.contains('Warning: 0.13 s - 0.5 s').should('be.visible');
66
- cy.contains('Critical: 0.55 s - 0.65 s').should('be.visible');
67
-
68
- cy.makeSnapshot();
69
- });
70
-
71
- it('displays the value as raw when the prop is set', () => {
72
- initialize({ displayAsRaw: true, thresholds: successThresholds });
73
-
74
- cy.contains('0.40663333333 s').should('be.visible');
75
-
76
- cy.makeSnapshot();
77
- });
78
-
79
- it('does not display the text', () => {
80
- initialize({ data: undefined, thresholds: successThresholds });
81
-
82
- cy.contains('0.41 s').should('not.exist');
83
-
84
- cy.makeSnapshot();
85
- });
86
-
87
- it('displays text with default values when the data is empty', () => {
88
- initialize({
89
- data: {
90
- global: {},
91
- metrics: [],
92
- times: []
93
- },
94
- thresholds: successThresholds
95
- });
96
-
97
- cy.contains('0').should('be.visible');
98
-
99
- cy.makeSnapshot();
100
- });
101
- });
@@ -1,71 +0,0 @@
1
- export const successThresholds = {
2
- critical: [
3
- {
4
- label: 'Critical',
5
- value: 1.5
6
- }
7
- ],
8
- enabled: true,
9
- warning: [
10
- {
11
- label: 'Warning',
12
- value: 0.5
13
- }
14
- ]
15
- };
16
-
17
- export const warningThresholds = {
18
- critical: [
19
- {
20
- label: 'Critical',
21
- value: 1.5
22
- }
23
- ],
24
- enabled: true,
25
- warning: [
26
- {
27
- label: 'Warning',
28
- value: 0.4
29
- }
30
- ]
31
- };
32
-
33
- export const criticalThresholds = {
34
- critical: [
35
- {
36
- label: 'Critical',
37
- value: 0.3
38
- }
39
- ],
40
- enabled: true,
41
- warning: [
42
- {
43
- label: 'Warning',
44
- value: 0.2
45
- }
46
- ]
47
- };
48
-
49
- export const rangedThresholds = {
50
- critical: [
51
- {
52
- label: 'Critical',
53
- value: 0.55
54
- },
55
- {
56
- label: 'Critical',
57
- value: 0.65
58
- }
59
- ],
60
- enabled: true,
61
- warning: [
62
- {
63
- label: 'Warning',
64
- value: 0.13
65
- },
66
- {
67
- label: 'Warning',
68
- value: 0.5
69
- }
70
- ]
71
- };