Commit d286f692 authored by Kushal Pandya's avatar Kushal Pandya

Merge branch '336664-fix-pipeline-status-bug' into 'master'

Fix endless pipeline status loop when no pipeline was triggered

See merge request gitlab-org/gitlab!72821
parents 165e1881 f82a4246
...@@ -21,6 +21,9 @@ export const i18n = { ...@@ -21,6 +21,9 @@ export const i18n = {
`Pipeline|Pipeline %{idStart}#%{idEnd} %{statusStart}%{statusEnd} for %{commitStart}%{commitEnd}`, `Pipeline|Pipeline %{idStart}#%{idEnd} %{statusStart}%{statusEnd} for %{commitStart}%{commitEnd}`,
), ),
viewBtn: s__('Pipeline|View pipeline'), viewBtn: s__('Pipeline|View pipeline'),
pipelineNotTriggeredMsg: s__(
'Pipeline|No pipeline was triggered for the latest changes due to the current CI/CD configuration.',
),
}; };
export default { export default {
...@@ -73,16 +76,22 @@ export default { ...@@ -73,16 +76,22 @@ export default {
result(res) { result(res) {
if (res.data?.project?.pipeline) { if (res.data?.project?.pipeline) {
this.hasError = false; this.hasError = false;
} else {
this.hasError = true;
this.pipelineNotTriggered = true;
} }
}, },
error() { error() {
this.hasError = true; this.hasError = true;
this.networkError = true;
}, },
pollInterval: POLL_INTERVAL, pollInterval: POLL_INTERVAL,
}, },
}, },
data() { data() {
return { return {
networkError: false,
pipelineNotTriggered: false,
hasError: false, hasError: false,
}; };
}, },
...@@ -126,10 +135,16 @@ export default { ...@@ -126,10 +135,16 @@ export default {
</div> </div>
</template> </template>
<template v-else-if="hasError"> <template v-else-if="hasError">
<div> <div v-if="networkError">
<gl-icon class="gl-mr-auto" name="warning-solid" /> <gl-icon class="gl-mr-auto" name="warning-solid" />
<span data-testid="pipeline-error-msg">{{ $options.i18n.fetchError }}</span> <span data-testid="pipeline-error-msg">{{ $options.i18n.fetchError }}</span>
</div> </div>
<div v-else>
<gl-icon class="gl-mr-auto" name="information-o" />
<span data-testid="pipeline-not-triggered-error-msg">
{{ $options.i18n.pipelineNotTriggeredMsg }}
</span>
</div>
</template> </template>
<template v-else> <template v-else>
<div> <div>
......
...@@ -25405,6 +25405,9 @@ msgstr "" ...@@ -25405,6 +25405,9 @@ msgstr ""
msgid "Pipeline|Merged result pipeline" msgid "Pipeline|Merged result pipeline"
msgstr "" msgstr ""
msgid "Pipeline|No pipeline was triggered for the latest changes due to the current CI/CD configuration."
msgstr ""
msgid "Pipeline|Passed" msgid "Pipeline|Passed"
msgstr "" msgstr ""
......
...@@ -40,6 +40,8 @@ describe('Pipeline Status', () => { ...@@ -40,6 +40,8 @@ describe('Pipeline Status', () => {
const findPipelineId = () => wrapper.find('[data-testid="pipeline-id"]'); const findPipelineId = () => wrapper.find('[data-testid="pipeline-id"]');
const findPipelineCommit = () => wrapper.find('[data-testid="pipeline-commit"]'); const findPipelineCommit = () => wrapper.find('[data-testid="pipeline-commit"]');
const findPipelineErrorMsg = () => wrapper.find('[data-testid="pipeline-error-msg"]'); const findPipelineErrorMsg = () => wrapper.find('[data-testid="pipeline-error-msg"]');
const findPipelineNotTriggeredErrorMsg = () =>
wrapper.find('[data-testid="pipeline-not-triggered-error-msg"]');
const findPipelineLoadingMsg = () => wrapper.find('[data-testid="pipeline-loading-msg"]'); const findPipelineLoadingMsg = () => wrapper.find('[data-testid="pipeline-loading-msg"]');
const findPipelineViewBtn = () => wrapper.find('[data-testid="pipeline-view-btn"]'); const findPipelineViewBtn = () => wrapper.find('[data-testid="pipeline-view-btn"]');
const findStatusIcon = () => wrapper.find('[data-testid="pipeline-status-icon"]'); const findStatusIcon = () => wrapper.find('[data-testid="pipeline-status-icon"]');
...@@ -117,7 +119,8 @@ describe('Pipeline Status', () => { ...@@ -117,7 +119,8 @@ describe('Pipeline Status', () => {
await waitForPromises(); await waitForPromises();
}); });
it('renders error', () => { it('renders api error', () => {
expect(findPipelineNotTriggeredErrorMsg().exists()).toBe(false);
expect(findIcon().attributes('name')).toBe('warning-solid'); expect(findIcon().attributes('name')).toBe('warning-solid');
expect(findPipelineErrorMsg().text()).toBe(i18n.fetchError); expect(findPipelineErrorMsg().text()).toBe(i18n.fetchError);
}); });
...@@ -129,6 +132,23 @@ describe('Pipeline Status', () => { ...@@ -129,6 +132,23 @@ describe('Pipeline Status', () => {
expect(findPipelineViewBtn().exists()).toBe(false); expect(findPipelineViewBtn().exists()).toBe(false);
}); });
}); });
describe('when pipeline is null', () => {
beforeEach(() => {
mockPipelineQuery.mockResolvedValue({
data: { project: { pipeline: null } },
});
createComponentWithApollo();
waitForPromises();
});
it('renders pipeline not triggered error', () => {
expect(findPipelineErrorMsg().exists()).toBe(false);
expect(findIcon().attributes('name')).toBe('information-o');
expect(findPipelineNotTriggeredErrorMsg().text()).toBe(i18n.pipelineNotTriggeredMsg);
});
});
}); });
describe('when feature flag for pipeline mini graph is enabled', () => { describe('when feature flag for pipeline mini graph is enabled', () => {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment