summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/frontend/jira_import/components/jira_import_form_spec.js55
-rw-r--r--spec/frontend/jira_import/mock_data.js3
-rw-r--r--spec/lib/gitlab/current_settings_spec.rb10
-rw-r--r--spec/models/application_setting_spec.rb10
-rw-r--r--spec/services/git/process_ref_changes_service_spec.rb22
5 files changed, 93 insertions, 7 deletions
diff --git a/spec/frontend/jira_import/components/jira_import_form_spec.js b/spec/frontend/jira_import/components/jira_import_form_spec.js
index 7cc7b40f4c8..6ef28a71f48 100644
--- a/spec/frontend/jira_import/components/jira_import_form_spec.js
+++ b/spec/frontend/jira_import/components/jira_import_form_spec.js
@@ -10,6 +10,7 @@ import {
imports,
issuesPath,
jiraProjects,
+ jiraUsersResponse,
projectId,
projectPath,
userMappings as defaultUserMappings,
@@ -38,7 +39,10 @@ describe('JiraImportForm', () => {
const getHeader = name => getByRole(wrapper.element, 'columnheader', { name });
+ const findLoadMoreUsersButton = () => wrapper.find('[data-testid="load-more-users-button"]');
+
const mountComponent = ({
+ hasMoreUsers = false,
isSubmitting = false,
loading = false,
mutate = mutateSpy,
@@ -55,6 +59,7 @@ describe('JiraImportForm', () => {
projectPath,
},
data: () => ({
+ hasMoreUsers,
isFetching: false,
isSubmitting,
searchTerm: '',
@@ -300,6 +305,7 @@ describe('JiraImportForm', () => {
variables: {
input: {
projectPath,
+ startAt: 0,
},
},
};
@@ -318,4 +324,53 @@ describe('JiraImportForm', () => {
});
});
});
+
+ describe('load more users button', () => {
+ describe('when all users have been loaded', () => {
+ it('is not shown', () => {
+ wrapper = mountComponent();
+
+ expect(findLoadMoreUsersButton().exists()).toBe(false);
+ });
+ });
+
+ describe('when all users have not been loaded', () => {
+ it('is shown', () => {
+ wrapper = mountComponent({ hasMoreUsers: true });
+
+ expect(findLoadMoreUsersButton().exists()).toBe(true);
+ });
+ });
+
+ describe('when clicked', () => {
+ beforeEach(() => {
+ mutateSpy = jest.fn(() =>
+ Promise.resolve({
+ data: {
+ jiraImportStart: { errors: [] },
+ jiraImportUsers: { jiraUsers: jiraUsersResponse, errors: [] },
+ },
+ }),
+ );
+
+ wrapper = mountComponent({ hasMoreUsers: true });
+ });
+
+ it('calls the GraphQL user mapping mutation', async () => {
+ const mutationArguments = {
+ mutation: getJiraUserMappingMutation,
+ variables: {
+ input: {
+ projectPath,
+ startAt: 0,
+ },
+ },
+ };
+
+ findLoadMoreUsersButton().vm.$emit('click');
+
+ expect(mutateSpy).toHaveBeenCalledWith(expect.objectContaining(mutationArguments));
+ });
+ });
+ });
});
diff --git a/spec/frontend/jira_import/mock_data.js b/spec/frontend/jira_import/mock_data.js
index 8ea40080f32..51dd939283e 100644
--- a/spec/frontend/jira_import/mock_data.js
+++ b/spec/frontend/jira_import/mock_data.js
@@ -1,5 +1,6 @@
import getJiraImportDetailsQuery from '~/jira_import/queries/get_jira_import_details.query.graphql';
import { IMPORT_STATE } from '~/jira_import/utils/jira_import_utils';
+import { userMappingsPageSize } from '~/jira_import/utils/constants';
export const fullPath = 'gitlab-org/gitlab-test';
@@ -87,6 +88,8 @@ export const jiraProjects = [
{ text: 'Migrate to GitLab (MTG)', value: 'MTG' },
];
+export const jiraUsersResponse = new Array(userMappingsPageSize);
+
export const imports = [
{
jiraProjectKey: 'MTG',
diff --git a/spec/lib/gitlab/current_settings_spec.rb b/spec/lib/gitlab/current_settings_spec.rb
index fd4e8bc1cd0..786db23ffc4 100644
--- a/spec/lib/gitlab/current_settings_spec.rb
+++ b/spec/lib/gitlab/current_settings_spec.rb
@@ -115,6 +115,16 @@ RSpec.describe Gitlab::CurrentSettings do
expect(settings).to have_attributes(settings_from_defaults)
end
+ context 'when ApplicationSettings does not have a primary key' do
+ before do
+ allow(ActiveRecord::Base.connection).to receive(:primary_key).with('application_settings').and_return(nil)
+ end
+
+ it 'raises an exception if ApplicationSettings does not have a primary key' do
+ expect { described_class.current_application_settings }.to raise_error(/table is missing a primary key constraint/)
+ end
+ end
+
context 'with pending migrations' do
let(:current_settings) { described_class.current_application_settings }
diff --git a/spec/models/application_setting_spec.rb b/spec/models/application_setting_spec.rb
index bcd8eccd68f..ab25608e2f0 100644
--- a/spec/models/application_setting_spec.rb
+++ b/spec/models/application_setting_spec.rb
@@ -650,6 +650,16 @@ RSpec.describe ApplicationSetting do
end
end
+ context 'when ApplicationSettings does not have a primary key' do
+ before do
+ allow(ActiveRecord::Base.connection).to receive(:primary_key).with(described_class.table_name).and_return(nil)
+ end
+
+ it 'raises an exception' do
+ expect { described_class.create_from_defaults }.to raise_error(/table is missing a primary key constraint/)
+ end
+ end
+
describe '#disabled_oauth_sign_in_sources=' do
before do
allow(Devise).to receive(:omniauth_providers).and_return([:github])
diff --git a/spec/services/git/process_ref_changes_service_spec.rb b/spec/services/git/process_ref_changes_service_spec.rb
index fc313bf6eb9..087f4ba372b 100644
--- a/spec/services/git/process_ref_changes_service_spec.rb
+++ b/spec/services/git/process_ref_changes_service_spec.rb
@@ -172,23 +172,31 @@ RSpec.describe Git::ProcessRefChangesService do
[
{ index: 0, oldrev: Gitlab::Git::BLANK_SHA, newrev: '789012', ref: "#{ref_prefix}/create1" },
{ index: 1, oldrev: Gitlab::Git::BLANK_SHA, newrev: '789013', ref: "#{ref_prefix}/create2" },
- { index: 2, oldrev: Gitlab::Git::BLANK_SHA, newrev: '789014', ref: "#{ref_prefix}/create3" }
+ { index: 2, oldrev: Gitlab::Git::BLANK_SHA, newrev: '789014', ref: "#{ref_prefix}/create3" },
+ { index: 3, oldrev: '789015', newrev: '789016', ref: "#{ref_prefix}/changed1" },
+ { index: 4, oldrev: '789017', newrev: '789018', ref: "#{ref_prefix}/changed2" },
+ { index: 5, oldrev: '789019', newrev: Gitlab::Git::BLANK_SHA, ref: "#{ref_prefix}/removed1" },
+ { index: 6, oldrev: '789020', newrev: Gitlab::Git::BLANK_SHA, ref: "#{ref_prefix}/removed2" }
]
end
let(:git_changes) { double(branch_changes: branch_changes, tag_changes: tag_changes) }
- it 'schedules job for existing merge requests' do
- expect_next_instance_of(MergeRequests::PushedBranchesService) do |service|
- expect(service).to receive(:execute).and_return(%w(create1 create2))
- end
+ before do
+ allow(MergeRequests::PushedBranchesService).to receive(:new).and_return(
+ double(execute: %w(create1 create2)), double(execute: %w(changed1)), double(execute: %w(removed2))
+ )
+ end
+ it 'schedules job for existing merge requests' do
expect(UpdateMergeRequestsWorker).to receive(:perform_async)
.with(project.id, user.id, Gitlab::Git::BLANK_SHA, '789012', "#{ref_prefix}/create1").ordered
expect(UpdateMergeRequestsWorker).to receive(:perform_async)
.with(project.id, user.id, Gitlab::Git::BLANK_SHA, '789013', "#{ref_prefix}/create2").ordered
- expect(UpdateMergeRequestsWorker).not_to receive(:perform_async)
- .with(project.id, user.id, Gitlab::Git::BLANK_SHA, '789014', "#{ref_prefix}/create3").ordered
+ expect(UpdateMergeRequestsWorker).to receive(:perform_async)
+ .with(project.id, user.id, '789015', '789016', "#{ref_prefix}/changed1").ordered
+ expect(UpdateMergeRequestsWorker).to receive(:perform_async)
+ .with(project.id, user.id, '789020', Gitlab::Git::BLANK_SHA, "#{ref_prefix}/removed2").ordered
subject.execute
end