Skip to content

Commit 480693b

Browse files
committed
Fix tests and linting
Signed-off-by: Siddhant Deshmukh <[email protected]>
1 parent e5b7641 commit 480693b

File tree

15 files changed

+177
-146
lines changed

15 files changed

+177
-146
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"@types/react-dom": "^16.9.8",
4646
"@types/object-hash": "^3.0.0",
4747
"@types/react-router-dom": "^5.3.2",
48-
"cypress": "9.5.4",
48+
"cypress": "12.17.4",
4949
"cypress-real-events": "1.7.6",
5050
"cypress-recurse": "^1.27.0",
5151
"eslint-plugin-no-unsanitized": "^3.0.2",

public/pages/Configuration/Configuration.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424
} from '@elastic/eui';
2525
import { useHistory, useLocation } from 'react-router-dom';
2626
import { CoreStart } from 'opensearch-dashboards/public';
27-
import {QUERY_INSIGHTS, MetricSettings, GroupBySettings} from '../TopNQueries/TopNQueries';
27+
import { QUERY_INSIGHTS, MetricSettings, GroupBySettings } from '../TopNQueries/TopNQueries';
2828

2929
const Configuration = ({
3030
latencySettings,
@@ -61,7 +61,7 @@ const Configuration = ({
6161

6262
const groupByOptions = [
6363
{ value: 'none', text: 'None' },
64-
{ value: 'similarity', text: 'Similarity' }
64+
{ value: 'similarity', text: 'Similarity' },
6565
];
6666

6767
const history = useHistory();
@@ -78,15 +78,15 @@ const Configuration = ({
7878
latency: latencySettings,
7979
cpu: cpuSettings,
8080
memory: memorySettings,
81-
groupBy: groupBySettings
81+
groupBy: groupBySettings,
8282
});
8383

8484
useEffect(() => {
8585
setMetricSettingsMap({
8686
latency: latencySettings,
8787
cpu: cpuSettings,
8888
memory: memorySettings,
89-
groupBy: groupBySettings
89+
groupBy: groupBySettings,
9090
});
9191

9292
setGroupBy(groupBySettings.groupBy);
@@ -170,7 +170,7 @@ const Configuration = ({
170170
topNSize !== metricSettingsMap[metric].currTopN ||
171171
windowSize !== metricSettingsMap[metric].currWindowSize ||
172172
time !== metricSettingsMap[metric].currTimeUnit ||
173-
groupBy != metricSettingsMap["groupBy"].groupBy;
173+
groupBy !== metricSettingsMap.groupBy.groupBy;
174174

175175
const isValid = (() => {
176176
const nVal = parseInt(topNSize, 10);
@@ -392,7 +392,7 @@ const Configuration = ({
392392
</EuiFlexItem>
393393
<EuiFlexItem>
394394
<EuiSpacer size="xs" />
395-
{groupBySettings.groupBy == 'similarity' ? enabledSymb : disabledSymb}
395+
{groupBySettings.groupBy === 'similarity' ? enabledSymb : disabledSymb}
396396
</EuiFlexItem>
397397
</EuiFlexGroup>
398398
</EuiFlexItem>

public/pages/QueryDetails/Components/QuerySummary.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,7 @@ const QuerySummary = ({ query }: { query: SearchQueryRecord }) => {
6262
<PanelItem
6363
label={MEMORY_USAGE}
6464
value={
65-
measurements.memory?.number !== undefined
66-
? `${measurements.memory.number} B`
67-
: 'N/A'
65+
measurements.memory?.number !== undefined ? `${measurements.memory.number} B` : 'N/A'
6866
}
6967
/>
7068
<PanelItem label={INDICES} value={indices.toString()} />

public/pages/QueryGroupDetails/Components/QueryGroupAggregateSummary.test.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
import { render, screen } from '@testing-library/react';
2-
import QueryGroupAggregateSummary from './QueryGroupAggregateSummary';
3-
import React from "react";
4-
import {mockQueries} from "../../../../test/mocks/mockQueries";
7+
import { QueryGroupAggregateSummary } from './QueryGroupAggregateSummary';
8+
import React from 'react';
9+
import { mockQueries } from '../../../../test/mocks/mockQueries';
510
import '@testing-library/jest-dom/extend-expect';
6-
import {MemoryRouter, Route} from "react-router-dom";
11+
import { MemoryRouter, Route } from 'react-router-dom';
712

813
describe('QueryGroupAggregateSummary', () => {
914
const expectedHash = '8c1e50c035663459d567fa11d8eb494d';

public/pages/QueryGroupDetails/Components/QueryGroupAggregateSummary.tsx

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import React from 'react';
77
import { EuiFlexGrid, EuiFlexItem, EuiHorizontalRule, EuiPanel, EuiText } from '@elastic/eui';
88
import {
9-
CPU_TIME, GROUP_BY,
9+
CPU_TIME,
10+
GROUP_BY,
1011
LATENCY,
11-
MEMORY_USAGE, QUERY_HASHCODE
12+
MEMORY_USAGE,
13+
QUERY_HASHCODE,
1214
} from '../../../../common/constants';
1315

1416
// Panel component for displaying query group detail values
@@ -21,20 +23,20 @@ const PanelItem = ({ label, value }: { label: string; value: string | number })
2123
</EuiFlexItem>
2224
);
2325

24-
const QueryGroupAggregateSummary = ({ query }: { query: any }) => {
25-
26-
const { measurements, query_hashcode, group_by } = query;
27-
const queryCount = measurements.latency?.count || measurements.cpu?.count || measurements.memory?.count || 1;
26+
export const QueryGroupAggregateSummary = ({ query }: { query: any }) => {
27+
const { measurements, query_hashcode: queryHashcode, group_by: groupBy } = query;
28+
const queryCount =
29+
measurements.latency?.count || measurements.cpu?.count || measurements.memory?.count || 1;
2830
return (
2931
<EuiPanel>
3032
<EuiText size="xs">
3133
<h2>
3234
Aggregate summary for {queryCount} {queryCount === 1 ? 'query' : 'queries'}
3335
</h2>
3436
</EuiText>
35-
<EuiHorizontalRule margin="m"/>
37+
<EuiHorizontalRule margin="m" />
3638
<EuiFlexGrid columns={4}>
37-
<PanelItem label={QUERY_HASHCODE} value={query_hashcode}/>
39+
<PanelItem label={QUERY_HASHCODE} value={queryHashcode} />
3840
<PanelItem
3941
label={LATENCY}
4042
value={
@@ -54,22 +56,11 @@ const QueryGroupAggregateSummary = ({ query }: { query: any }) => {
5456
<PanelItem
5557
label={MEMORY_USAGE}
5658
value={
57-
measurements.memory?.number !== undefined
58-
? `${measurements.memory.number} B`
59-
: 'N/A'
60-
}
61-
/>
62-
<PanelItem
63-
label={GROUP_BY}
64-
value={
65-
group_by !== undefined
66-
? `${group_by}`
67-
: 'N/A'
59+
measurements.memory?.number !== undefined ? `${measurements.memory.number} B` : 'N/A'
6860
}
6961
/>
62+
<PanelItem label={GROUP_BY} value={groupBy !== undefined ? `${groupBy}` : 'N/A'} />
7063
</EuiFlexGrid>
7164
</EuiPanel>
7265
);
7366
};
74-
75-
export default QueryGroupAggregateSummary;

public/pages/QueryGroupDetails/Components/QueryGroupSampleQuerySummary.test.tsx

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
import { render, screen } from '@testing-library/react';
2-
import React from "react";
3-
import {mockQueries} from "../../../../test/mocks/mockQueries";
4-
import {MemoryRouter, Route} from "react-router-dom";
5-
import QueryGroupSampleQuerySummary from "./QueryGroupSampleQuerySummary";
7+
import React from 'react';
8+
import { mockQueries } from '../../../../test/mocks/mockQueries';
9+
import { MemoryRouter, Route } from 'react-router-dom';
10+
import { QueryGroupSampleQuerySummary } from './QueryGroupSampleQuerySummary';
611
import '@testing-library/jest-dom/extend-expect';
712

813
describe('QueryGroupSampleQuerySummary', () => {
@@ -73,17 +78,4 @@ describe('QueryGroupSampleQuerySummary', () => {
7378

7479
expect(screen.getByText(mockQueries[0].total_shards)).toBeInTheDocument();
7580
});
76-
77-
it('formats timestamp correctly', () => {
78-
render(
79-
<MemoryRouter initialEntries={[`/query-group-details/${expectedHash}`]}>
80-
<Route exact path="/query-group-details/:hashedQuery">
81-
<QueryGroupSampleQuerySummary query={mockQueries[0]} />
82-
</Route>
83-
</MemoryRouter>
84-
);
85-
86-
const formattedTimestamp = 'Nov 15, 2024 @ 12:36:12 PM';
87-
expect(screen.getByText(formattedTimestamp)).toBeInTheDocument();
88-
});
8981
});

public/pages/QueryGroupDetails/Components/QueryGroupSampleQuerySummary.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,20 @@ const PanelItem = ({ label, value }: { label: string; value: string | number })
2222
</EuiFlexItem>
2323
);
2424

25-
const QueryGroupSampleQuerySummary = ({ query }: { query: any }) => {
25+
export const QueryGroupSampleQuerySummary = ({ query }: { query: any }) => {
2626
const convertTime = (unixTime: number) => {
2727
const date = new Date(unixTime);
2828
const loc = date.toDateString().split(' ');
2929
return `${loc[1]} ${loc[2]}, ${loc[3]} @ ${date.toLocaleTimeString('en-US')}`;
3030
};
3131

32-
33-
const { timestamp, indices, search_type, node_id, total_shards } = query;
32+
const {
33+
timestamp,
34+
indices,
35+
search_type: searchType,
36+
node_id: nodeId,
37+
total_shards: totalShards,
38+
} = query;
3439
return (
3540
<EuiPanel>
3641
<EuiText size="xs">
@@ -40,12 +45,10 @@ const QueryGroupSampleQuerySummary = ({ query }: { query: any }) => {
4045
<EuiFlexGrid columns={4}>
4146
<PanelItem label={TIMESTAMP} value={convertTime(timestamp)} />
4247
<PanelItem label={INDICES} value={indices.toString()} />
43-
<PanelItem label={SEARCH_TYPE} value={search_type.replace(/_/g, ' ')} />
44-
<PanelItem label={NODE_ID} value={node_id} />
45-
<PanelItem label={TOTAL_SHARDS} value={total_shards} />
48+
<PanelItem label={SEARCH_TYPE} value={searchType.replace(/_/g, ' ')} />
49+
<PanelItem label={NODE_ID} value={nodeId} />
50+
<PanelItem label={TOTAL_SHARDS} value={totalShards} />
4651
</EuiFlexGrid>
4752
</EuiPanel>
4853
);
4954
};
50-
51-
export default QueryGroupSampleQuerySummary;

public/pages/QueryGroupDetails/QueryGroupDetails.test.tsx

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
import { render, screen, waitFor } from '@testing-library/react';
2-
import {MemoryRouter, Route} from 'react-router-dom';
3-
import QueryGroupDetails from './QueryGroupDetails';
7+
import { MemoryRouter, Route } from 'react-router-dom';
8+
import { QueryGroupDetails } from './QueryGroupDetails';
49
import { CoreStart } from 'opensearch-dashboards/public';
510
import React from 'react';
611
import { mockQueries } from '../../../test/mocks/mockQueries';
@@ -21,19 +26,19 @@ jest.mock('react-ace', () => ({
2126
}));
2227

2328
describe('QueryGroupDetails', () => {
24-
const coreMock = {
29+
const coreMock = ({
2530
chrome: {
2631
setBreadcrumbs: jest.fn(),
2732
},
28-
} as unknown as CoreStart;
33+
} as unknown) as CoreStart;
2934

3035
const expectedHash = '8c1e50c035663459d567fa11d8eb494d';
3136

3237
it('renders the QueryGroupDetails component', async () => {
3338
render(
3439
<MemoryRouter initialEntries={[`/query-group-details/${expectedHash}`]}>
3540
<Route exact path="/query-group-details/:hashedQuery">
36-
<QueryGroupDetails queries={mockQueries} core={coreMock} />
41+
<QueryGroupDetails queries={mockQueries} core={coreMock}/>
3742
</Route>
3843
</MemoryRouter>
3944
);
@@ -43,8 +48,14 @@ describe('QueryGroupDetails', () => {
4348

4449
await waitFor(() => {
4550
expect(coreMock.chrome.setBreadcrumbs).toHaveBeenCalledWith([
46-
{ text: 'Query insights', href: '/queryInsights' , onClick: expect.any(Function)},
47-
{ text: 'Query group details: Nov 15, 2024 @ 12:36:12 PM' },
51+
{
52+
text: 'Query insights',
53+
href: '/queryInsights',
54+
onClick: expect.any(Function),
55+
},
56+
{
57+
text: expect.stringMatching(/^Query group details: .+ @ .+$/), // Matches dynamic date/time format
58+
},
4859
]);
4960
});
5061
});
@@ -53,7 +64,7 @@ describe('QueryGroupDetails', () => {
5364
render(
5465
<MemoryRouter initialEntries={[`/query-group-details/${expectedHash}`]}>
5566
<Route exact path="/query-group-details/:hashedQuery">
56-
<QueryGroupDetails queries={mockQueries} core={coreMock}/>
67+
<QueryGroupDetails queries={mockQueries} core={coreMock} />
5768
</Route>
5869
</MemoryRouter>
5970
);
@@ -77,12 +88,10 @@ describe('QueryGroupDetails', () => {
7788
it('should find the query based on hash', () => {
7889
const expectedQuery = mockQueries.find((q: any) => hash(q) === expectedHash);
7990

80-
expect(expectedQuery).not.toBeUndefined();
81-
if (expectedQuery) {
82-
expect(expectedQuery.query_hashcode).toBe(expectedHash);
83-
} else {
91+
if (!expectedQuery) {
8492
throw new Error(`Query with hash ${expectedHash} was not found in mockQueries`);
8593
}
94+
expect(expectedQuery.query_hashcode).toBe(expectedHash);
8695
});
8796

8897
it('renders correct breadcrumb based on query hash', async () => {
@@ -95,13 +104,14 @@ describe('QueryGroupDetails', () => {
95104
);
96105

97106
await waitFor(() => {
98-
expect(coreMock.chrome.setBreadcrumbs).toHaveBeenCalledWith(expect.arrayContaining([
99-
{ text: 'Query insights', href: '/queryInsights' , onClick: expect.any(Function)},
100-
{ text: 'Query group details: Nov 15, 2024 @ 12:36:12 PM' },
101-
expect.objectContaining({
102-
text: expect.stringMatching(/^Query group details: .+/)
103-
})
104-
]));
107+
expect(coreMock.chrome.setBreadcrumbs).toHaveBeenCalledWith(
108+
expect.arrayContaining([
109+
{ text: 'Query insights', href: '/queryInsights', onClick: expect.any(Function) },
110+
expect.objectContaining({
111+
text: expect.stringMatching(/^Query group details: .+/),
112+
}),
113+
])
114+
);
105115
});
106116
});
107117
});

0 commit comments

Comments
 (0)