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/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-28 18:06:57 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-28 18:06:57 +0300
commit7cdd70dcec27402e89e65451b4b1feb75b5eb267 (patch)
tree1691c8e1afd469fa426ecf5bc127de8df16d4855 /spec/lib
parent79348faced5e7e62103ad27f6a6594dfdca463e2 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/gitlab/etag_caching/router_spec.rb9
-rw-r--r--spec/lib/gitlab/import_export/all_models.yml2
-rw-r--r--spec/lib/gitlab/import_export/project_tree_restorer_spec.rb48
-rw-r--r--spec/lib/gitlab/url_builder_spec.rb20
-rw-r--r--spec/lib/gitlab/visibility_level_spec.rb24
5 files changed, 100 insertions, 3 deletions
diff --git a/spec/lib/gitlab/etag_caching/router_spec.rb b/spec/lib/gitlab/etag_caching/router_spec.rb
index 8fcd4eb3c21..e25ce4df4aa 100644
--- a/spec/lib/gitlab/etag_caching/router_spec.rb
+++ b/spec/lib/gitlab/etag_caching/router_spec.rb
@@ -12,6 +12,15 @@ describe Gitlab::EtagCaching::Router do
expect(result.name).to eq 'issue_notes'
end
+ it 'matches MR notes endpoint' do
+ result = described_class.match(
+ '/my-group/and-subgroup/here-comes-the-project/noteable/merge_request/1/notes'
+ )
+
+ expect(result).to be_present
+ expect(result.name).to eq 'merge_request_notes'
+ end
+
it 'matches issue title endpoint' do
result = described_class.match(
'/my-group/my-project/issues/123/realtime_changes'
diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml
index 5612b0dc270..64d1a98ae71 100644
--- a/spec/lib/gitlab/import_export/all_models.yml
+++ b/spec/lib/gitlab/import_export/all_models.yml
@@ -365,6 +365,7 @@ project:
- root_of_fork_network
- fork_network_member
- fork_network
+- fork_network_projects
- custom_attributes
- lfs_file_locks
- project_badges
@@ -434,6 +435,7 @@ project:
- upstream_project_subscriptions
- downstream_project_subscriptions
- service_desk_setting
+- import_failures
award_emoji:
- awardable
- user
diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
index 2d8a603172d..d0e5ca2dde3 100644
--- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
+++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
@@ -362,7 +362,7 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
expect(restored_project_json).to eq(true)
end
- it_behaves_like 'restores project correctly',
+ it_behaves_like 'restores project successfully',
issues: 1,
labels: 2,
label_with_priorities: 'A project label',
@@ -375,7 +375,7 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
create(:ci_build, token: 'abcd')
end
- it_behaves_like 'restores project correctly',
+ it_behaves_like 'restores project successfully',
issues: 1,
labels: 2,
label_with_priorities: 'A project label',
@@ -452,7 +452,7 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
expect(restored_project_json).to eq(true)
end
- it_behaves_like 'restores project correctly',
+ it_behaves_like 'restores project successfully',
issues: 2,
labels: 2,
label_with_priorities: 'A project label',
@@ -633,4 +633,46 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
end
end
end
+
+ context 'JSON with invalid records' do
+ let(:user) { create(:user) }
+ let!(:project) { create(:project, :builds_disabled, :issues_disabled, name: 'project', path: 'project') }
+ let(:project_tree_restorer) { described_class.new(user: user, shared: shared, project: project) }
+ let(:restored_project_json) { project_tree_restorer.restore }
+
+ context 'when some failures occur' do
+ context 'because a relation fails to be processed' do
+ let(:correlation_id) { 'my-correlation-id' }
+
+ before do
+ setup_import_export_config('with_invalid_records')
+
+ Labkit::Correlation::CorrelationId.use_id(correlation_id) do
+ expect(restored_project_json).to eq(true)
+ end
+ end
+
+ it_behaves_like 'restores project successfully',
+ issues: 0,
+ labels: 0,
+ label_with_priorities: nil,
+ milestones: 1,
+ first_issue_labels: 0,
+ services: 0,
+ import_failures: 1
+
+ it 'records the failures in the database' do
+ import_failure = ImportFailure.last
+
+ expect(import_failure.project_id).to eq(project.id)
+ expect(import_failure.relation_key).to eq('milestones')
+ expect(import_failure.relation_index).to be_present
+ expect(import_failure.exception_class).to eq('ActiveRecord::RecordInvalid')
+ expect(import_failure.exception_message).to be_present
+ expect(import_failure.correlation_id_value).to eq('my-correlation-id')
+ expect(import_failure.created_at).to be_present
+ end
+ end
+ end
+ end
end
diff --git a/spec/lib/gitlab/url_builder_spec.rb b/spec/lib/gitlab/url_builder_spec.rb
index 08d3c638f9e..0aab02b6c4c 100644
--- a/spec/lib/gitlab/url_builder_spec.rb
+++ b/spec/lib/gitlab/url_builder_spec.rb
@@ -59,6 +59,26 @@ describe Gitlab::UrlBuilder do
end
end
+ context 'when passing a ProjectSnippet' do
+ it 'returns a proper URL' do
+ project_snippet = create(:project_snippet)
+
+ url = described_class.build(project_snippet)
+
+ expect(url).to eq "#{Settings.gitlab['url']}/#{project_snippet.project.full_path}/snippets/#{project_snippet.id}"
+ end
+ end
+
+ context 'when passing a PersonalSnippet' do
+ it 'returns a proper URL' do
+ personal_snippet = create(:personal_snippet)
+
+ url = described_class.build(personal_snippet)
+
+ expect(url).to eq "#{Settings.gitlab['url']}/snippets/#{personal_snippet.id}"
+ end
+ end
+
context 'when passing a Note' do
context 'on a Commit' do
it 'returns a proper URL' do
diff --git a/spec/lib/gitlab/visibility_level_spec.rb b/spec/lib/gitlab/visibility_level_spec.rb
index 75dc7d8e6d1..16a05af2216 100644
--- a/spec/lib/gitlab/visibility_level_spec.rb
+++ b/spec/lib/gitlab/visibility_level_spec.rb
@@ -95,4 +95,28 @@ describe Gitlab::VisibilityLevel do
expect(described_class.valid_level?(described_class::PUBLIC)).to be_truthy
end
end
+
+ describe '#visibility_level_decreased?' do
+ let(:project) { create(:project, :internal) }
+
+ context 'when visibility level decreases' do
+ before do
+ project.update!(visibility_level: described_class::PRIVATE)
+ end
+
+ it 'returns true' do
+ expect(project.visibility_level_decreased?).to be(true)
+ end
+ end
+
+ context 'when visibility level does not decrease' do
+ before do
+ project.update!(visibility_level: described_class::PUBLIC)
+ end
+
+ it 'returns false' do
+ expect(project.visibility_level_decreased?).to be(false)
+ end
+ end
+ end
end