Skip to content
代码片段 群组 项目
未验证 提交 6dfdcaa8 编辑于 作者: Payton Burdette's avatar Payton Burdette 提交者: GitLab
浏览文件

Add new merge trains route

上级 df201a2d
No related branches found
No related tags found
无相关合并请求
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createDefaultClient from '~/lib/graphql';
import MergeTrainsApp from './merge_trains_app.vue';
Vue.use(VueApollo);
const apolloProvider = new VueApollo({
defaultClient: createDefaultClient(),
});
export const initMergeTrainsApp = () => {
const el = document.querySelector('#js-merge-trains');
if (!el) {
return false;
}
const { fullPath } = el.dataset;
return new Vue({
el,
name: 'MergeTrainsRoot',
apolloProvider,
provide: {
fullPath,
},
render(createElement) {
return createElement(MergeTrainsApp);
},
});
};
<script>
export default {
name: 'MergeTrainsApp',
inject: {
fullPath: {
default: '',
},
},
};
</script>
<template>
<div></div>
</template>
import { initMergeTrainsApp } from 'ee/ci/merge_trains/index';
initMergeTrainsApp();
# frozen_string_literal: true
module Projects
class MergeTrainsController < Projects::ApplicationController
feature_category :merge_trains
before_action :authorize_read_merge_train!
before_action :check_enabled!
def index; end
private
def check_enabled!
render_404 unless Feature.enabled?(:merge_trains_viz, project)
end
end
end
- page_title _('Merge trains')
#js-merge-trains{ data: { full_path: @project.full_path } }
---
name: merge_trains_viz
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/454179
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/149025
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/455342
milestone: '16.11'
group: group::pipeline execution
type: wip
default_enabled: false
......@@ -159,6 +159,8 @@
end
resources :compliance_frameworks, only: [:create]
resources :merge_trains, only: [:index]
end
# End of the /-/ scope.
......
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
import MergeTrainsApp from 'ee/ci/merge_trains/merge_trains_app.vue';
describe('MergeTrainsApp', () => {
let wrapper;
const createComponent = () => {
wrapper = shallowMountExtended(MergeTrainsApp, { provide: { fullPath: 'namespace/project' } });
};
it('renders the merge trains app', () => {
createComponent();
expect(wrapper.findComponent(MergeTrainsApp).exists()).toBe(true);
});
});
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Projects::MergeTrainsController, type: :request, feature_category: :merge_trains do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project) }
describe 'GET /:namespace/:project/-/merge_trains' do
subject(:request) { get project_merge_trains_url(project) }
before_all do
project.add_maintainer(user)
end
before do
sign_in(user)
end
context 'when feature flag "merge_trains_viz" is enabled' do
it 'renders the merge trains index template' do
request
expect(response).to have_gitlab_http_status(:ok)
expect(response).to render_template('projects/merge_trains/index')
end
end
context 'when feature flag "merge_trains_viz" is disabled' do
before do
stub_feature_flags(merge_trains_viz: false)
end
it 'returns "not found response"' do
request
expect(response).to have_gitlab_http_status(:not_found)
end
end
end
end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册