Commit 38d50bae authored by Ezekiel Kigbo's avatar Ezekiel Kigbo

Merge branch '300550-fixture-pipelines-pipelines-json-does-not-contain-any-stage' into 'master'

Add stages to mock pipeline in fixture

See merge request gitlab-org/gitlab!54467
parents b4ad8f3d 42748aba
...@@ -5,16 +5,22 @@ require 'spec_helper' ...@@ -5,16 +5,22 @@ require 'spec_helper'
RSpec.describe Projects::PipelinesController, '(JavaScript fixtures)', type: :controller do RSpec.describe Projects::PipelinesController, '(JavaScript fixtures)', type: :controller do
include JavaScriptFixturesHelpers include JavaScriptFixturesHelpers
let(:namespace) { create(:namespace, name: 'frontend-fixtures' )} let_it_be(:namespace) { create(:namespace, name: 'frontend-fixtures' )}
let(:project) { create(:project, :repository, namespace: namespace, path: 'pipelines-project') } let_it_be(:project) { create(:project, :repository, namespace: namespace, path: 'pipelines-project') }
let(:commit) { create(:commit, project: project) }
let(:commit_without_author) { RepoHelpers.another_sample_commit } let_it_be(:commit_without_author) { RepoHelpers.another_sample_commit }
let!(:user) { create(:user, developer_projects: [project], email: commit.author_email) }
let!(:pipeline) { create(:ci_pipeline, project: project, sha: commit.id, user: user) }
let!(:pipeline_without_author) { create(:ci_pipeline, project: project, sha: commit_without_author.id) } let!(:pipeline_without_author) { create(:ci_pipeline, project: project, sha: commit_without_author.id) }
let!(:pipeline_without_commit) { create(:ci_pipeline, status: :success, project: project, sha: '0000') } let!(:build_pipeline_without_author) { create(:ci_build, pipeline: pipeline_without_author, stage: 'test') }
render_views let_it_be(:pipeline_without_commit) { create(:ci_pipeline, status: :success, project: project, sha: '0000') }
let!(:build_pipeline_without_commit) { create(:ci_build, pipeline: pipeline_without_commit, stage: 'test') }
let(:commit) { create(:commit, project: project) }
let(:user) { create(:user, developer_projects: [project], email: commit.author_email) }
let!(:pipeline) { create(:ci_pipeline, :with_test_reports, project: project, sha: commit.id, user: user) }
let!(:build_success) { create(:ci_build, pipeline: pipeline, stage: 'build') }
let!(:build_test) { create(:ci_build, pipeline: pipeline, stage: 'test') }
let!(:build_deploy_failed) { create(:ci_build, status: :failed, pipeline: pipeline, stage: 'deploy') }
before(:all) do before(:all) do
clean_frontend_fixtures('pipelines/') clean_frontend_fixtures('pipelines/')
...@@ -32,4 +38,14 @@ RSpec.describe Projects::PipelinesController, '(JavaScript fixtures)', type: :co ...@@ -32,4 +38,14 @@ RSpec.describe Projects::PipelinesController, '(JavaScript fixtures)', type: :co
expect(response).to be_successful expect(response).to be_successful
end end
it "pipelines/test_report.json" do
get :test_report, params: {
namespace_id: namespace,
project_id: project,
id: pipeline.id
}, format: :json
expect(response).to be_successful
end
end end
# frozen_string_literal: true
require "spec_helper"
RSpec.describe Projects::PipelinesController, "(JavaScript fixtures)", type: :controller do
include JavaScriptFixturesHelpers
let(:namespace) { create(:namespace, name: "frontend-fixtures") }
let(:project) { create(:project, :repository, namespace: namespace, path: "pipelines-project") }
let(:commit) { create(:commit, project: project) }
let(:user) { create(:user, developer_projects: [project], email: commit.author_email) }
let(:pipeline) { create(:ci_pipeline, :with_test_reports, project: project, user: user) }
render_views
before do
sign_in(user)
end
it "pipelines/test_report.json" do
get :test_report, params: {
namespace_id: project.namespace,
project_id: project,
id: pipeline.id
}, format: :json
expect(response).to be_successful
end
end
This diff is collapsed.
...@@ -18,7 +18,7 @@ import Store from '~/pipelines/stores/pipelines_store'; ...@@ -18,7 +18,7 @@ import Store from '~/pipelines/stores/pipelines_store';
import NavigationTabs from '~/vue_shared/components/navigation_tabs.vue'; import NavigationTabs from '~/vue_shared/components/navigation_tabs.vue';
import TablePagination from '~/vue_shared/components/pagination/table_pagination.vue'; import TablePagination from '~/vue_shared/components/pagination/table_pagination.vue';
import { pipelineWithStages, stageReply, users, mockSearch, branches } from './mock_data'; import { stageReply, users, mockSearch, branches } from './mock_data';
jest.mock('~/flash'); jest.mock('~/flash');
...@@ -27,6 +27,9 @@ const mockProjectId = '21'; ...@@ -27,6 +27,9 @@ const mockProjectId = '21';
const mockPipelinesEndpoint = `/${mockProjectPath}/pipelines.json`; const mockPipelinesEndpoint = `/${mockProjectPath}/pipelines.json`;
const mockPipelinesResponse = getJSONFixture('pipelines/pipelines.json'); const mockPipelinesResponse = getJSONFixture('pipelines/pipelines.json');
const mockPipelinesIds = mockPipelinesResponse.pipelines.map(({ id }) => id); const mockPipelinesIds = mockPipelinesResponse.pipelines.map(({ id }) => id);
const mockPipelineWithStages = mockPipelinesResponse.pipelines.find(
(p) => p.details.stages && p.details.stages.length,
);
describe('Pipelines', () => { describe('Pipelines', () => {
let wrapper; let wrapper;
...@@ -611,14 +614,15 @@ describe('Pipelines', () => { ...@@ -611,14 +614,15 @@ describe('Pipelines', () => {
mock.onGet(mockPipelinesEndpoint, { scope: 'all', page: '1' }).reply( mock.onGet(mockPipelinesEndpoint, { scope: 'all', page: '1' }).reply(
200, 200,
{ {
pipelines: [pipelineWithStages], pipelines: [mockPipelineWithStages],
count: { all: '1' }, count: { all: '1' },
}, },
{ {
'POLL-INTERVAL': 100, 'POLL-INTERVAL': 100,
}, },
); );
mock.onGet(pipelineWithStages.details.stages[0].dropdown_path).reply(200, stageReply);
mock.onGet(mockPipelineWithStages.details.stages[0].dropdown_path).reply(200, stageReply);
createComponent(); createComponent();
......
...@@ -155,7 +155,7 @@ describe('Pipelines Table Row', () => { ...@@ -155,7 +155,7 @@ describe('Pipelines Table Row', () => {
it('should render an icon for each stage', () => { it('should render an icon for each stage', () => {
expect( expect(
wrapper.findAll( wrapper.findAll(
'.table-section:nth-child(4) [data-testid="mini-pipeline-graph-dropdown-toggle"]', '.table-section:nth-child(5) [data-testid="mini-pipeline-graph-dropdown-toggle"]',
).length, ).length,
).toEqual(pipeline.details.stages.length); ).toEqual(pipeline.details.stages.length);
}); });
...@@ -182,9 +182,10 @@ describe('Pipelines Table Row', () => { ...@@ -182,9 +182,10 @@ describe('Pipelines Table Row', () => {
expect(wrapper.find('.js-pipelines-retry-button').attributes('title')).toMatch('Retry'); expect(wrapper.find('.js-pipelines-retry-button').attributes('title')).toMatch('Retry');
expect(wrapper.find('.js-pipelines-cancel-button').exists()).toBe(true); expect(wrapper.find('.js-pipelines-cancel-button').exists()).toBe(true);
expect(wrapper.find('.js-pipelines-cancel-button').attributes('title')).toMatch('Cancel'); expect(wrapper.find('.js-pipelines-cancel-button').attributes('title')).toMatch('Cancel');
const dropdownMenu = wrapper.find('.dropdown-menu');
expect(dropdownMenu.text()).toContain(scheduledJobAction.name); const actionsMenu = wrapper.find('[data-testid="pipelines-manual-actions-dropdown"]');
expect(actionsMenu.text()).toContain(scheduledJobAction.name);
}); });
it('emits `retryPipeline` event when retry button is clicked and toggles loading', () => { it('emits `retryPipeline` event when retry button is clicked and toggles loading', () => {
......
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