Skip to content
代码片段 群组 项目
提交 fde3ebb9 编辑于 作者: Justin Ho Tuan Duong's avatar Justin Ho Tuan Duong 提交者: Denys Mishunov
浏览文件

Refactor import_details_app translations

Avoid using $options for i18n translations
上级 303b741c
无相关合并请求
显示
145 个添加6 个删除
<script>
import ImportDetailsTable from '~/import/details/components/import_details_table.vue';
export default {
name: 'BulkImportDetailsApp',
components: { ImportDetailsTable },
};
</script>
<template>
<div>
<h1>{{ s__('Import|GitLab Migration details') }}</h1>
<import-details-table />
</div>
</template>
<script> <script>
import { s__ } from '~/locale';
import ImportDetailsTable from './import_details_table.vue'; import ImportDetailsTable from './import_details_table.vue';
export default { export default {
components: { ImportDetailsTable }, components: { ImportDetailsTable },
i18n: {
pageTitle: s__('Import|GitHub import details'),
},
}; };
</script> </script>
<template> <template>
<div> <div>
<h1>{{ $options.i18n.pageTitle }}</h1> <h1>{{ s__('Import|GitHub import details') }}</h1>
<import-details-table /> <import-details-table />
</div> </div>
</template> </template>
import Vue from 'vue';
import BulkImportDetailsApp from '~/import/details/components/bulk_import_details_app.vue';
export const initBulkImportDetails = () => {
const el = document.querySelector('.js-bulk-import-details');
if (!el) {
return null;
}
const { failuresPath } = el.dataset;
return new Vue({
el,
name: 'BulkImportDetailsRoot',
provide: {
failuresPath,
},
render(createElement) {
return createElement(BulkImportDetailsApp);
},
});
};
initBulkImportDetails();
...@@ -49,6 +49,10 @@ def status ...@@ -49,6 +49,10 @@ def status
end end
end end
def details
render_404 unless Feature.enabled?(:bulk_import_details_page)
end
def create def create
return render json: { success: false }, status: :too_many_requests if throttled_request? return render json: { success: false }, status: :too_many_requests if throttled_request?
return render json: { success: false }, status: :unprocessable_entity unless valid_create_params? return render json: { success: false }, status: :unprocessable_entity unless valid_create_params?
......
- add_to_breadcrumbs _('New group'), new_group_path
- add_to_breadcrumbs _('Import group'), new_group_path(anchor: 'import-group-pane')
- page_title s_('Import|GitLab Migration details')
.js-bulk-import-details{ data: { failures_path: '' } }
---
name: bulk_import_details_page
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135004
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/429109
milestone: '16.6'
type: development
group: group::import and integrate
default_enabled: false
...@@ -74,6 +74,7 @@ ...@@ -74,6 +74,7 @@
get :status get :status
get :realtime_changes get :realtime_changes
get :history get :history
get :details
end end
resource :manifest, only: [:create, :new], controller: :manifest do resource :manifest, only: [:create, :new], controller: :manifest do
......
...@@ -24703,6 +24703,9 @@ msgstr "" ...@@ -24703,6 +24703,9 @@ msgstr ""
msgid "Import|GitHub import details" msgid "Import|GitHub import details"
msgstr "" msgstr ""
   
msgid "Import|GitLab Migration details"
msgstr ""
msgid "Import|Maximum decompressed file size for archives from imports (MiB)" msgid "Import|Maximum decompressed file size for archives from imports (MiB)"
msgstr "" msgstr ""
   
...@@ -300,6 +300,33 @@ def get_status(params_override = {}, format = :json) ...@@ -300,6 +300,33 @@ def get_status(params_override = {}, format = :json)
end end
end end
describe 'GET details' do
subject(:request) { get :details }
context 'when bulk_import_details_page feature flag is enabled' do
before do
stub_feature_flags(bulk_import_details_page: true)
request
end
it 'responds with a 200 and shows the template', :aggregate_failures do
expect(response).to have_gitlab_http_status(:ok)
expect(response).to render_template(:details)
end
end
context 'when bulk_import_details_page feature flag is disabled' do
before do
stub_feature_flags(bulk_import_details_page: false)
request
end
it 'responds with a 404' do
expect(response).to have_gitlab_http_status(:not_found)
end
end
end
describe 'GET realtime_changes' do describe 'GET realtime_changes' do
let_it_be(:bulk_import) { create(:bulk_import, :created, user: user) } let_it_be(:bulk_import) { create(:bulk_import, :created, user: user) }
......
import { shallowMount } from '@vue/test-utils';
import BulkImportDetailsApp from '~/import/details/components/bulk_import_details_app.vue';
describe('Bulk import details app', () => {
let wrapper;
const createComponent = () => {
wrapper = shallowMount(BulkImportDetailsApp);
};
describe('template', () => {
it('renders heading', () => {
createComponent();
expect(wrapper.find('h1').text()).toBe('GitLab Migration details');
});
});
});
...@@ -12,7 +12,7 @@ describe('Import details app', () => { ...@@ -12,7 +12,7 @@ describe('Import details app', () => {
it('renders heading', () => { it('renders heading', () => {
createComponent(); createComponent();
expect(wrapper.find('h1').text()).toBe(ImportDetailsApp.i18n.pageTitle); expect(wrapper.find('h1').text()).toBe('GitHub import details');
}); });
}); });
}); });
import Vue from 'vue';
import { initBulkImportDetails } from '~/pages/import/bulk_imports/details/index';
jest.mock('~/import/details/components/bulk_import_details_app.vue');
describe('initBulkImportDetails', () => {
let appRoot;
const createAppRoot = () => {
appRoot = document.createElement('div');
appRoot.setAttribute('class', 'js-bulk-import-details');
document.body.appendChild(appRoot);
};
afterEach(() => {
if (appRoot) {
appRoot.remove();
appRoot = null;
}
});
describe('when there is no app root', () => {
it('returns null', () => {
expect(initBulkImportDetails()).toBeNull();
});
});
describe('when there is an app root', () => {
beforeEach(() => {
createAppRoot();
});
it('returns a Vue instance', () => {
expect(initBulkImportDetails()).toBeInstanceOf(Vue);
});
});
});
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册