Skip to content

Commit cdae503

Browse files
committed
Merge branch 'main' into KFLUXUI-125
2 parents 5659e95 + 91c7627 commit cdae503

18 files changed

+178
-116
lines changed

src/components/ApplicationDetails/tabs/overview/visualization/hooks/useAppApplicationTestNodes.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { useIntegrationTestScenarios } from '../../../../../../hooks/useIntegrat
44
import { useLatestIntegrationTestPipelines } from '../../../../../../hooks/useLatestIntegrationTestPipelines';
55
import { IntegrationTestScenarioKind } from '../../../../../../types/coreBuildService';
66
import { pipelineRunStatus, runStatus } from '../../../../../../utils/pipeline-utils';
7-
import { useWorkspaceInfo } from '../../../../../Workspace/useWorkspaceInfo';
87
import { WorkflowNodeModel, WorkflowNodeModelData, WorkflowNodeType } from '../types';
98
import { emptyPipelineNode, resourceToPipelineNode } from '../utils/node-utils';
109
import { updateParallelNodeWidths } from '../utils/visualization-utils';
@@ -21,10 +20,8 @@ export const useAppApplicationTestNodes = (
2120
loaded: boolean,
2221
errors: unknown[],
2322
] => {
24-
const { workspace } = useWorkspaceInfo();
2523
const [integrationTests, testsLoaded, testsError] = useIntegrationTestScenarios(
2624
namespace,
27-
workspace,
2825
applicationName,
2926
);
3027

@@ -34,7 +31,7 @@ export const useAppApplicationTestNodes = (
3431
);
3532

3633
const [testPipelines, testPipelinesLoaded, testPipelinesError] =
37-
useLatestIntegrationTestPipelines(namespace, workspace, applicationName, integrationTestNames);
34+
useLatestIntegrationTestPipelines(namespace, applicationName, integrationTestNames);
3835

3936
const allLoaded = testsLoaded && testPipelinesLoaded;
4037
const allErrors = [testsError, testPipelinesError].filter((e) => !!e);

src/components/Commits/CommitDetails/sidepanels/IntegrationTestSidePanel.tsx

+24-11
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,19 @@ import { ElementModel, GraphElement } from '@patternfly/react-topology';
1717
import PipelineIcon from '../../../../assets/pipelineIcon.svg';
1818
import { PipelineRunLabel } from '../../../../consts/pipelinerun';
1919
import { useTaskRuns } from '../../../../hooks/useTaskRuns';
20+
import {
21+
COMPONENT_DETAILS_PATH,
22+
INTEGRATION_TEST_DETAILS_PATH,
23+
PIPELINE_RUNS_LOG_PATH,
24+
} from '../../../../routes/paths';
2025
import { ErrorDetailsWithStaticLog } from '../../../../shared/components/pipeline-run-logs/logs/log-snippet-types';
2126
import { getPLRLogSnippet } from '../../../../shared/components/pipeline-run-logs/logs/pipelineRunLogSnippet';
2227
import { Timestamp } from '../../../../shared/components/timestamp/Timestamp';
28+
import { useNamespace } from '../../../../shared/providers/Namespace';
2329
import { PipelineRunKind } from '../../../../types';
2430
import { calculateDuration } from '../../../../utils/pipeline-utils';
2531
import ScanDescriptionListGroup from '../../../PipelineRun/PipelineRunDetailsView/tabs/ScanDescriptionListGroup';
2632
import { StatusIconWithTextLabel } from '../../../topology/StatusIcon';
27-
import { useWorkspaceInfo } from '../../../Workspace/useWorkspaceInfo';
2833
import { CommitWorkflowNodeModelData } from '../visualization/commit-visualization-types';
2934

3035
export interface IntegrationTestSidePanelBodyProps {
@@ -35,7 +40,7 @@ export interface IntegrationTestSidePanelBodyProps {
3540
const IntegrationTestSidePanel: React.FC<
3641
React.PropsWithChildren<IntegrationTestSidePanelBodyProps>
3742
> = ({ workflowNode, onClose }) => {
38-
const { workspace, namespace } = useWorkspaceInfo();
43+
const namespace = useNamespace();
3944
const workflowData = workflowNode.getData();
4045
const integrationTestPipeline = workflowData.resource as PipelineRunKind;
4146
const [taskRuns] = useTaskRuns(namespace, integrationTestPipeline?.metadata.name);
@@ -61,9 +66,11 @@ const IntegrationTestSidePanel: React.FC<
6166
<span className="commit-side-panel__head-title">
6267
{integrationTestPipeline ? (
6368
<Link
64-
to={`/workspaces/${workspace}/applications/${
65-
workflowData.application
66-
}/integrationtests/${workflowNode.getLabel()}`}
69+
to={INTEGRATION_TEST_DETAILS_PATH.createPath({
70+
applicationName: workflowData.application,
71+
workspaceName: namespace,
72+
integrationTestName: workflowNode.getLabel(),
73+
})}
6774
>
6875
{workflowNode.getLabel()}
6976
</Link>
@@ -122,11 +129,13 @@ const IntegrationTestSidePanel: React.FC<
122129
{integrationTestPipeline?.metadata?.labels?.[PipelineRunLabel.COMPONENT] ? (
123130
integrationTestPipeline?.metadata?.labels?.[PipelineRunLabel.APPLICATION] ? (
124131
<Link
125-
to={`/workspaces/${workspace}/applications/${
126-
integrationTestPipeline.metadata.labels[PipelineRunLabel.APPLICATION]
127-
}/components/${
128-
integrationTestPipeline.metadata.labels[PipelineRunLabel.COMPONENT]
129-
}`}
132+
to={COMPONENT_DETAILS_PATH.createPath({
133+
applicationName:
134+
integrationTestPipeline.metadata.labels[PipelineRunLabel.APPLICATION],
135+
componentName:
136+
integrationTestPipeline.metadata.labels[PipelineRunLabel.COMPONENT],
137+
workspaceName: namespace,
138+
})}
130139
>
131140
{integrationTestPipeline.metadata.labels[PipelineRunLabel.COMPONENT]}
132141
</Link>
@@ -171,7 +180,11 @@ const IntegrationTestSidePanel: React.FC<
171180
component={(props) => (
172181
<Link
173182
{...props}
174-
to={`/workspaces/${workspace}/applications/${workflowData.application}/pipelineruns/${integrationTestPipeline.metadata?.name}/logs`}
183+
to={PIPELINE_RUNS_LOG_PATH.createPath({
184+
applicationName: workflowData.application,
185+
pipelineRunName: integrationTestPipeline.metadata?.name,
186+
workspaceName: namespace,
187+
})}
175188
/>
176189
)}
177190
>

src/components/Commits/CommitDetails/visualization/useCommitWorkflowData.ts

-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ export const useCommitWorkflowData = (
3434
const [components, componentsLoaded] = useComponents(namespace, applicationName);
3535
const [integrationTests, integrationTestsLoaded] = useIntegrationTestScenarios(
3636
namespace,
37-
workspace,
3837
applicationName,
3938
);
4039
const [pipelines, pipelinesLoaded, pipelinesError] = usePipelineRunsForCommit(

src/components/IntegrationTests/IntegrationTestDetails/IntegrationTestDetailsView.tsx

+25-7
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,22 @@ import { Bullseye, Spinner, Text, TextVariants } from '@patternfly/react-core';
44
import { useIntegrationTestScenario } from '../../../hooks/useIntegrationTestScenarios';
55
import { HttpError } from '../../../k8s/error';
66
import { IntegrationTestScenarioModel } from '../../../models';
7+
import {
8+
INTEGRATION_TEST_DETAILS_PATH,
9+
INTEGRATION_TEST_EDIT_PATH,
10+
INTEGRATION_TEST_LIST_PATH,
11+
} from '../../../routes/paths';
712
import { RouterParams } from '../../../routes/utils';
813
import ErrorEmptyState from '../../../shared/components/empty-state/ErrorEmptyState';
14+
import { useNamespace } from '../../../shared/providers/Namespace';
915
import { useApplicationBreadcrumbs } from '../../../utils/breadcrumb-utils';
1016
import { useAccessReviewForModel } from '../../../utils/rbac';
1117
import { DetailsPage } from '../../DetailsPage';
1218
import { useModalLauncher } from '../../modal/ModalProvider';
13-
import { useWorkspaceInfo } from '../../Workspace/useWorkspaceInfo';
1419
import { integrationTestDeleteModalAndNavigate } from '../IntegrationTestsListView/useIntegrationTestActions';
1520

1621
const IntegrationTestDetailsView: React.FC<React.PropsWithChildren> = () => {
17-
const { namespace, workspace } = useWorkspaceInfo();
22+
const namespace = useNamespace();
1823
const { integrationTestName, applicationName } = useParams<RouterParams>();
1924

2025
const showModal = useModalLauncher();
@@ -31,7 +36,6 @@ const IntegrationTestDetailsView: React.FC<React.PropsWithChildren> = () => {
3136

3237
const [integrationTest, loaded, loadErr] = useIntegrationTestScenario(
3338
namespace,
34-
workspace,
3539
applicationName,
3640
integrationTestName,
3741
);
@@ -53,11 +57,18 @@ const IntegrationTestDetailsView: React.FC<React.PropsWithChildren> = () => {
5357
breadcrumbs={[
5458
...applicationBreadcrumbs,
5559
{
56-
path: `/workspaces/${workspace}/applications/${applicationName}/integrationtests`,
60+
path: INTEGRATION_TEST_LIST_PATH.createPath({
61+
applicationName,
62+
workspaceName: namespace,
63+
}),
5764
name: 'Integration tests',
5865
},
5966
{
60-
path: `/workspaces/${workspace}/applications/${applicationName}/integrationtests/${integrationTestName}`,
67+
path: INTEGRATION_TEST_DETAILS_PATH.createPath({
68+
applicationName,
69+
integrationTestName,
70+
workspaceName: namespace,
71+
}),
6172
name: integrationTest.metadata.name,
6273
},
6374
]}
@@ -72,7 +83,11 @@ const IntegrationTestDetailsView: React.FC<React.PropsWithChildren> = () => {
7283
label: 'Edit',
7384
component: (
7485
<Link
75-
to={`/workspaces/${workspace}/applications/${applicationName}/integrationtests/${integrationTestName}/edit`}
86+
to={INTEGRATION_TEST_EDIT_PATH.createPath({
87+
applicationName,
88+
integrationTestName,
89+
workspaceName: namespace,
90+
})}
7691
>
7792
Edit
7893
</Link>
@@ -87,7 +102,10 @@ const IntegrationTestDetailsView: React.FC<React.PropsWithChildren> = () => {
87102
).closed.then(({ submitClicked }) => {
88103
if (submitClicked)
89104
navigate(
90-
`/workspaces/${workspace}/applications/${applicationName}/integrationtests`,
105+
INTEGRATION_TEST_LIST_PATH.createPath({
106+
applicationName,
107+
workspaceName: namespace,
108+
}),
91109
);
92110
}),
93111
key: `delete-${integrationTest.metadata.name.toLowerCase()}`,

src/components/IntegrationTests/IntegrationTestDetails/tabs/IntegrationTestOverviewTab.tsx

+7-4
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ import {
1515
} from '@patternfly/react-core';
1616
import { OutlinedQuestionCircleIcon } from '@patternfly/react-icons/dist/esm/icons/outlined-question-circle-icon';
1717
import { useIntegrationTestScenario } from '../../../../hooks/useIntegrationTestScenarios';
18+
import { APPLICATION_DETAILS_PATH } from '../../../../routes/paths';
1819
import { RouterParams } from '../../../../routes/utils';
1920
import { Timestamp } from '../../../../shared';
2021
import ExternalLink from '../../../../shared/components/links/ExternalLink';
22+
import { useNamespace } from '../../../../shared/providers/Namespace';
2123
import MetadataList from '../../../MetadataList';
2224
import { useModalLauncher } from '../../../modal/ModalProvider';
23-
import { useWorkspaceInfo } from '../../../Workspace/useWorkspaceInfo';
2425
import { createEditContextsModal } from '../../EditContextsModal';
2526
import { createEditParamsModal } from '../../EditParamsModal';
2627
import { IntegrationTestLabels } from '../../IntegrationTestForm/types';
@@ -31,12 +32,11 @@ import {
3132
} from '../../IntegrationTestForm/utils/create-utils';
3233

3334
const IntegrationTestOverviewTab: React.FC<React.PropsWithChildren> = () => {
34-
const { workspace, namespace } = useWorkspaceInfo();
35+
const namespace = useNamespace();
3536
const { integrationTestName, applicationName } = useParams<RouterParams>();
3637

3738
const [integrationTest] = useIntegrationTestScenario(
3839
namespace,
39-
workspace,
4040
applicationName,
4141
integrationTestName,
4242
);
@@ -214,7 +214,10 @@ const IntegrationTestOverviewTab: React.FC<React.PropsWithChildren> = () => {
214214
<DescriptionListTerm>Application</DescriptionListTerm>
215215
<DescriptionListDescription>
216216
<Link
217-
to={`/workspaces/${workspace}/applications/${integrationTest.spec.application}`}
217+
to={APPLICATION_DETAILS_PATH.createPath({
218+
workspaceName: namespace,
219+
applicationName: integrationTest.spec.application,
220+
})}
218221
>
219222
{integrationTest.spec.application}
220223
</Link>

src/components/IntegrationTests/IntegrationTestDetails/tabs/IntegrationTestPipelineRunTab.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,21 @@ import { HttpError } from '../../../../k8s/error';
77
import { RouterParams } from '../../../../routes/utils';
88
import { Table } from '../../../../shared';
99
import ErrorEmptyState from '../../../../shared/components/empty-state/ErrorEmptyState';
10+
import { useNamespace } from '../../../../shared/providers/Namespace';
1011
import { PipelineRunKind } from '../../../../types';
1112
import PipelineRunEmptyState from '../../../PipelineRun/PipelineRunEmptyState';
1213
import { PipelineRunListHeader } from '../../../PipelineRun/PipelineRunListView/PipelineRunListHeader';
1314
import { PipelineRunListRow } from '../../../PipelineRun/PipelineRunListView/PipelineRunListRow';
14-
import { useWorkspaceInfo } from '../../../Workspace/useWorkspaceInfo';
1515
import { IntegrationTestLabels } from '../../IntegrationTestForm/types';
1616

1717
const IntegrationTestPipelineRunTab: React.FC<React.PropsWithChildren> = () => {
1818
const { applicationName, integrationTestName } = useParams<RouterParams>();
19-
const { namespace, workspace } = useWorkspaceInfo();
19+
const namespace = useNamespace();
2020

2121
// Todo add errors here
2222
const [pipelineRuns, loaded, error, getNextPage] = usePipelineRuns(
2323
namespace,
24-
workspace,
24+
null,
2525
React.useMemo(
2626
() => ({
2727
selector: {

src/components/IntegrationTests/IntegrationTestForm/IntegrationTestEditForm.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@ import { useIntegrationTestScenario } from '../../../hooks/useIntegrationTestSce
55
import { HttpError } from '../../../k8s/error';
66
import { RouterParams } from '../../../routes/utils';
77
import ErrorEmptyState from '../../../shared/components/empty-state/ErrorEmptyState';
8-
import { useWorkspaceInfo } from '../../Workspace/useWorkspaceInfo';
8+
import { useNamespace } from '../../../shared/providers/Namespace';
99
import IntegrationTestView from './IntegrationTestView';
1010

1111
export const IntegrationTestEditForm: React.FC = () => {
1212
const { applicationName, integrationTestName } = useParams<RouterParams>();
13-
const { workspace, namespace } = useWorkspaceInfo();
13+
const namespace = useNamespace();
1414
const [integrationTest, loaded, error] = useIntegrationTestScenario(
1515
namespace,
16-
workspace,
1716
applicationName,
1817
integrationTestName,
1918
);

src/components/IntegrationTests/IntegrationTestForm/IntegrationTestView.tsx

+12-11
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import React from 'react';
22
import { useNavigate } from 'react-router-dom';
33
import { Formik } from 'formik';
4+
import { INTEGRATION_TEST_DETAILS_PATH, INTEGRATION_TEST_LIST_PATH } from '../../../routes/paths';
5+
import { useNamespace } from '../../../shared/providers/Namespace';
46
import { IntegrationTestScenarioKind } from '../../../types/coreBuildService';
57
import { useTrackEvent, TrackEvents } from '../../../utils/analytics';
6-
import { useWorkspaceInfo } from '../../Workspace/useWorkspaceInfo';
78
import { defaultSelectedContextOption } from '../utils/creation-utils';
89
import IntegrationTestForm from './IntegrationTestForm';
910
import { IntegrationTestFormValues, IntegrationTestLabels } from './types';
@@ -47,7 +48,7 @@ const IntegrationTestView: React.FunctionComponent<
4748
> = ({ applicationName, integrationTest }) => {
4849
const track = useTrackEvent();
4950
const navigate = useNavigate();
50-
const { namespace, workspace } = useWorkspaceInfo();
51+
const namespace = useNamespace();
5152

5253
const url = integrationTest?.spec.resolverRef?.params?.find(
5354
(param) => param.name === ResolverRefParams.URL,
@@ -84,8 +85,7 @@ const IntegrationTestView: React.FunctionComponent<
8485
path: path?.value ?? '',
8586
params: getFormParamValues(integrationTest?.spec?.params),
8687
contexts: getFormContextValues(integrationTest),
87-
optional:
88-
integrationTest?.metadata.labels?.[IntegrationTestLabels.OPTIONAL] === 'true' ?? false,
88+
optional: integrationTest?.metadata.labels?.[IntegrationTestLabels.OPTIONAL] === 'true',
8989
},
9090
isDetected: true,
9191
};
@@ -96,13 +96,11 @@ const IntegrationTestView: React.FunctionComponent<
9696
link_name: 'edit-integration-test-submit',
9797
app_name: integrationTest.spec.application,
9898
integration_test_name: integrationTest.metadata.name,
99-
workspace,
10099
});
101100
} else {
102101
track(TrackEvents.ButtonClicked, {
103102
link_name: 'add-integration-test-submit',
104103
app_name: applicationName,
105-
workspace,
106104
});
107105
}
108106
return (
@@ -120,19 +118,24 @@ const IntegrationTestView: React.FunctionComponent<
120118
integration_test_name: newIntegrationTest.metadata.name,
121119
bundle: newIntegrationTest.spec.bundle,
122120
pipeline: newIntegrationTest.spec.pipeline,
123-
workspace,
124121
});
125122
if (integrationTest) {
126123
if (window.history.state && window.history.state.idx > 0) {
127124
// go back to the page where the edit was launched
128125
navigate(-1);
129126
} else {
130127
navigate(
131-
`/workspaces/${workspace}/applications/${applicationName}/integrationtests/${integrationTest.metadata.name}`,
128+
INTEGRATION_TEST_DETAILS_PATH.createPath({
129+
applicationName,
130+
integrationTestName: integrationTest.metadata?.name,
131+
workspaceName: namespace,
132+
}),
132133
);
133134
}
134135
} else {
135-
navigate(`/workspaces/${workspace}/applications/${applicationName}/integrationtests`);
136+
navigate(
137+
INTEGRATION_TEST_LIST_PATH.createPath({ applicationName, workspaceName: namespace }),
138+
);
136139
}
137140
})
138141
.catch((error) => {
@@ -152,13 +155,11 @@ const IntegrationTestView: React.FunctionComponent<
152155
link_name: 'edit-integration-test-leave',
153156
app_name: integrationTest.spec.application,
154157
integration_test_name: integrationTest.metadata.name,
155-
workspace,
156158
});
157159
} else {
158160
track(TrackEvents.ButtonClicked, {
159161
link_name: 'add-integration-test-leave',
160162
app_name: applicationName,
161-
workspace,
162163
});
163164
}
164165
navigate(-1);

src/components/IntegrationTests/IntegrationTestsListView/IntegrationTestListRow.tsx

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import * as React from 'react';
22
import { Link } from 'react-router-dom';
33
import { Truncate } from '@patternfly/react-core';
4+
import { INTEGRATION_TEST_DETAILS_PATH } from '../../../routes/paths';
45
import { RowFunctionArgs, TableData } from '../../../shared';
56
import ActionMenu from '../../../shared/components/action-menu/ActionMenu';
67
import ExternalLink from '../../../shared/components/links/ExternalLink';
8+
import { useNamespace } from '../../../shared/providers/Namespace';
79
import { IntegrationTestScenarioKind } from '../../../types/coreBuildService';
8-
import { useWorkspaceInfo } from '../../Workspace/useWorkspaceInfo';
910
import { IntegrationTestLabels } from '../IntegrationTestForm/types';
1011
import { ResolverRefParams, getURLForParam } from '../IntegrationTestForm/utils/create-utils';
1112
import { integrationListTableColumnClasses } from './IntegrationTestListHeader';
@@ -15,15 +16,19 @@ const IntegrationTestListRow: React.FC<
1516
React.PropsWithChildren<RowFunctionArgs<IntegrationTestScenarioKind>>
1617
> = ({ obj }) => {
1718
const actions = useIntegrationTestActions(obj);
18-
const { workspace } = useWorkspaceInfo();
19+
const namespace = useNamespace();
1920
return (
2021
<>
2122
<TableData
2223
className={integrationListTableColumnClasses.name}
2324
data-test="integration-tests__row-name"
2425
>
2526
<Link
26-
to={`/workspaces/${workspace}/applications/${obj.spec.application}/integrationtests/${obj.metadata.name}`}
27+
to={INTEGRATION_TEST_DETAILS_PATH.createPath({
28+
applicationName: obj.spec?.application,
29+
integrationTestName: obj.metadata?.name,
30+
workspaceName: namespace,
31+
})}
2732
>
2833
{obj.metadata.name}
2934
</Link>

0 commit comments

Comments
 (0)