Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-03-29 06:08:22 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-03-29 06:08:22 +0300
commitf26311e23466947e3b57914341866aa440e67267 (patch)
tree5e23f61d79bfb8ef6b8fb745f46d21401b141c04 /spec
parent2c99b3e0f38bd94ace525f35469dae1eda051c16 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/frontend/boards/components/board_form_spec.js2
-rw-r--r--spec/frontend/boards/components/board_top_bar_spec.js88
-rw-r--r--spec/frontend/boards/components/boards_selector_spec.js8
-rw-r--r--spec/frontend/boards/components/issue_board_filtered_search_spec.js3
-rw-r--r--spec/helpers/boards_helper_spec.rb17
-rw-r--r--spec/tasks/dev_rake_spec.rb33
6 files changed, 143 insertions, 8 deletions
diff --git a/spec/frontend/boards/components/board_form_spec.js b/spec/frontend/boards/components/board_form_spec.js
index c976ba7525b..6a659623b53 100644
--- a/spec/frontend/boards/components/board_form_spec.js
+++ b/spec/frontend/boards/components/board_form_spec.js
@@ -62,7 +62,7 @@ describe('BoardForm', () => {
};
},
provide: {
- rootPath: 'root',
+ boardBaseUrl: 'root',
},
mocks: {
$apollo: {
diff --git a/spec/frontend/boards/components/board_top_bar_spec.js b/spec/frontend/boards/components/board_top_bar_spec.js
new file mode 100644
index 00000000000..997768a0cc7
--- /dev/null
+++ b/spec/frontend/boards/components/board_top_bar_spec.js
@@ -0,0 +1,88 @@
+import { shallowMount } from '@vue/test-utils';
+import Vue from 'vue';
+import Vuex from 'vuex';
+
+import BoardTopBar from '~/boards/components/board_top_bar.vue';
+import BoardAddNewColumnTrigger from '~/boards/components/board_add_new_column_trigger.vue';
+import BoardsSelector from '~/boards/components/boards_selector.vue';
+import ConfigToggle from '~/boards/components/config_toggle.vue';
+import IssueBoardFilteredSearch from '~/boards/components/issue_board_filtered_search.vue';
+import NewBoardButton from '~/boards/components/new_board_button.vue';
+import ToggleFocus from '~/boards/components/toggle_focus.vue';
+
+describe('BoardTopBar', () => {
+ let wrapper;
+
+ Vue.use(Vuex);
+
+ const createStore = ({ mockGetters = {} } = {}) => {
+ return new Vuex.Store({
+ state: {},
+ getters: {
+ isEpicBoard: () => false,
+ ...mockGetters,
+ },
+ });
+ };
+
+ const createComponent = ({ provide = {}, mockGetters = {} } = {}) => {
+ const store = createStore({ mockGetters });
+ wrapper = shallowMount(BoardTopBar, {
+ store,
+ provide: {
+ swimlanesFeatureAvailable: false,
+ canAdminList: false,
+ isSignedIn: false,
+ fullPath: 'gitlab-org',
+ boardType: 'group',
+ releasesFetchPath: '/releases',
+ ...provide,
+ },
+ stubs: { IssueBoardFilteredSearch },
+ });
+ };
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ describe('base template', () => {
+ beforeEach(() => {
+ createComponent();
+ });
+
+ it('renders BoardsSelector component', () => {
+ expect(wrapper.findComponent(BoardsSelector).exists()).toBe(true);
+ });
+
+ it('renders IssueBoardFilteredSearch component', () => {
+ expect(wrapper.findComponent(IssueBoardFilteredSearch).exists()).toBe(true);
+ });
+
+ it('renders NewBoardButton component', () => {
+ expect(wrapper.findComponent(NewBoardButton).exists()).toBe(true);
+ });
+
+ it('renders ConfigToggle component', () => {
+ expect(wrapper.findComponent(ConfigToggle).exists()).toBe(true);
+ });
+
+ it('renders ToggleFocus component', () => {
+ expect(wrapper.findComponent(ToggleFocus).exists()).toBe(true);
+ });
+
+ it('does not render BoardAddNewColumnTrigger component', () => {
+ expect(wrapper.findComponent(BoardAddNewColumnTrigger).exists()).toBe(false);
+ });
+ });
+
+ describe('when user can admin list', () => {
+ beforeEach(() => {
+ createComponent({ provide: { canAdminList: true } });
+ });
+
+ it('renders BoardAddNewColumnTrigger component', () => {
+ expect(wrapper.findComponent(BoardAddNewColumnTrigger).exists()).toBe(true);
+ });
+ });
+});
diff --git a/spec/frontend/boards/components/boards_selector_spec.js b/spec/frontend/boards/components/boards_selector_spec.js
index 0c044deb78c..717216a9882 100644
--- a/spec/frontend/boards/components/boards_selector_spec.js
+++ b/spec/frontend/boards/components/boards_selector_spec.js
@@ -105,6 +105,10 @@ describe('BoardsSelector', () => {
apolloProvider: fakeApollo,
propsData: {
throttleDuration,
+ },
+ attachTo: document.body,
+ provide: {
+ fullPath: '',
boardBaseUrl: `${TEST_HOST}/board/base/url`,
hasMissingBoards: false,
canAdminBoard: true,
@@ -112,10 +116,6 @@ describe('BoardsSelector', () => {
scopedIssueBoardFeatureEnabled: true,
weights: [],
},
- attachTo: document.body,
- provide: {
- fullPath: '',
- },
});
};
diff --git a/spec/frontend/boards/components/issue_board_filtered_search_spec.js b/spec/frontend/boards/components/issue_board_filtered_search_spec.js
index 76e8b84d8ef..e4a6a2b8b76 100644
--- a/spec/frontend/boards/components/issue_board_filtered_search_spec.js
+++ b/spec/frontend/boards/components/issue_board_filtered_search_spec.js
@@ -14,10 +14,11 @@ describe('IssueBoardFilter', () => {
const createComponent = ({ isSignedIn = false } = {}) => {
wrapper = shallowMount(IssueBoardFilteredSpec, {
- propsData: { fullPath: 'gitlab-org', boardType: 'group' },
provide: {
isSignedIn,
releasesFetchPath: '/releases',
+ fullPath: 'gitlab-org',
+ boardType: 'group',
},
});
};
diff --git a/spec/helpers/boards_helper_spec.rb b/spec/helpers/boards_helper_spec.rb
index ec949fde30e..8d5dc3fb4be 100644
--- a/spec/helpers/boards_helper_spec.rb
+++ b/spec/helpers/boards_helper_spec.rb
@@ -102,6 +102,7 @@ RSpec.describe BoardsHelper do
allow(helper).to receive(:can?).with(user, :create_non_backlog_issues, project_board).and_return(true)
allow(helper).to receive(:can?).with(user, :admin_issue, project_board).and_return(true)
allow(helper).to receive(:can?).with(user, :admin_issue_board_list, project).and_return(false)
+ allow(helper).to receive(:can?).with(user, :admin_issue_board, project).and_return(false)
end
it 'returns a board_lists_path as lists_endpoint' do
@@ -129,12 +130,23 @@ RSpec.describe BoardsHelper do
it 'returns can_admin_list as false by default' do
expect(helper.board_data[:can_admin_list]).to eq('false')
end
- it 'returns can_admin_list as true when user can admin the board' do
+ it 'returns can_admin_list as true when user can admin the board lists' do
allow(helper).to receive(:can?).with(user, :admin_issue_board_list, project).and_return(true)
expect(helper.board_data[:can_admin_list]).to eq('true')
end
end
+
+ context 'can_admin_board' do
+ it 'returns can_admin_board as false by default' do
+ expect(helper.board_data[:can_admin_board]).to eq('false')
+ end
+ it 'returns can_admin_board as true when user can admin the board' do
+ allow(helper).to receive(:can?).with(user, :admin_issue_board, project).and_return(true)
+
+ expect(helper.board_data[:can_admin_board]).to eq('true')
+ end
+ end
end
context 'group board' do
@@ -146,6 +158,7 @@ RSpec.describe BoardsHelper do
allow(helper).to receive(:can?).with(user, :create_non_backlog_issues, group_board).and_return(true)
allow(helper).to receive(:can?).with(user, :admin_issue, group_board).and_return(true)
allow(helper).to receive(:can?).with(user, :admin_issue_board_list, base_group).and_return(false)
+ allow(helper).to receive(:can?).with(user, :admin_issue_board, base_group).and_return(false)
end
it 'returns correct path for base group' do
@@ -165,7 +178,7 @@ RSpec.describe BoardsHelper do
it 'returns can_admin_list as false by default' do
expect(helper.board_data[:can_admin_list]).to eq('false')
end
- it 'returns can_admin_list as true when user can admin the board' do
+ it 'returns can_admin_list as true when user can admin the board lists' do
allow(helper).to receive(:can?).with(user, :admin_issue_board_list, base_group).and_return(true)
expect(helper.board_data[:can_admin_list]).to eq('true')
diff --git a/spec/tasks/dev_rake_spec.rb b/spec/tasks/dev_rake_spec.rb
index ebcea338291..7c03b4f417c 100644
--- a/spec/tasks/dev_rake_spec.rb
+++ b/spec/tasks/dev_rake_spec.rb
@@ -7,6 +7,8 @@ RSpec.describe 'dev rake tasks' do
Rake.application.rake_require 'tasks/gitlab/setup'
Rake.application.rake_require 'tasks/gitlab/shell'
Rake.application.rake_require 'tasks/dev'
+ Rake.application.rake_require 'active_record/railties/databases'
+ Rake.application.rake_require 'tasks/gitlab/db'
end
describe 'setup' do
@@ -37,4 +39,35 @@ RSpec.describe 'dev rake tasks' do
load_task
end
end
+
+ describe 'copy_db:ci' do
+ before do
+ skip_if_multiple_databases_not_setup
+
+ configurations = instance_double(ActiveRecord::DatabaseConfigurations)
+ allow(ActiveRecord::Base).to receive(:configurations).and_return(configurations)
+ allow(configurations).to receive(:configs_for).with(env_name: Rails.env, name: 'ci').and_return(ci_configuration)
+ end
+
+ subject(:load_task) { run_rake_task('dev:setup_ci_db') }
+
+ let(:ci_configuration) { instance_double(ActiveRecord::DatabaseConfigurations::HashConfig, name: 'ci', database: '__test_db_ci') }
+
+ it 'creates the database from main' do
+ expect(ApplicationRecord.connection).to receive(:create_database).with(
+ ci_configuration.database,
+ template: ApplicationRecord.connection_db_config.database
+ )
+
+ run_rake_task('dev:copy_db:ci')
+ end
+
+ context 'when the database already exists' do
+ it 'prints out a warning' do
+ expect(ApplicationRecord.connection).to receive(:create_database).and_raise(ActiveRecord::DatabaseAlreadyExists)
+
+ expect { run_rake_task('dev:copy_db:ci') }.to output(/Database '#{ci_configuration.database}' already exists/).to_stderr
+ end
+ end
+ end
end