summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-09-11 00:08:51 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-11 00:08:51 +0000
commited32a44fcb161cbc82cbbe5b78a0631c2c837e07 (patch)
tree3e71a32eda2a060ef4623f24f927ff81e471aa5a /spec
parent5ec9ab0e8cc7293a364235d6cc57f6a77dce2c38 (diff)
downloadgitlab-ce-ed32a44fcb161cbc82cbbe5b78a0631c2c837e07.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/graphql/types/release_asset_link_type_spec.rb2
-rw-r--r--spec/models/concerns/id_in_ordered_spec.rb2
-rw-r--r--spec/models/group_spec.rb1
-rw-r--r--spec/models/service_spec.rb53
-rw-r--r--spec/requests/api/graphql/project/release_spec.rb10
5 files changed, 46 insertions, 22 deletions
diff --git a/spec/graphql/types/release_asset_link_type_spec.rb b/spec/graphql/types/release_asset_link_type_spec.rb
index 679431012cf..6800d5459c4 100644
--- a/spec/graphql/types/release_asset_link_type_spec.rb
+++ b/spec/graphql/types/release_asset_link_type_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe GitlabSchema.types['ReleaseAssetLink'] do
it 'has the expected fields' do
expected_fields = %w[
- id name url external link_type
+ id name url external link_type direct_asset_url
]
expect(described_class).to include_graphql_fields(*expected_fields)
diff --git a/spec/models/concerns/id_in_ordered_spec.rb b/spec/models/concerns/id_in_ordered_spec.rb
index 6c507c242ea..a3b434caac6 100644
--- a/spec/models/concerns/id_in_ordered_spec.rb
+++ b/spec/models/concerns/id_in_ordered_spec.rb
@@ -14,7 +14,7 @@ RSpec.describe IdInOrdered do
expect(Issue.id_in_ordered([issue3.id, issue1.id, issue4.id, issue5.id, issue2.id])).to eq([
issue3, issue1, issue4, issue5, issue2
-])
+ ])
end
context 'when the ids are not an array of integers' do
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb
index 568d5480613..3a3b5e4bdf6 100644
--- a/spec/models/group_spec.rb
+++ b/spec/models/group_spec.rb
@@ -27,6 +27,7 @@ RSpec.describe Group do
it { is_expected.to have_many(:milestones) }
it { is_expected.to have_many(:iterations) }
it { is_expected.to have_many(:group_deploy_keys) }
+ it { is_expected.to have_many(:services) }
describe '#members & #requesters' do
let(:requester) { create(:user) }
diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb
index f50c8bd908e..32e2012e284 100644
--- a/spec/models/service_spec.rb
+++ b/spec/models/service_spec.rb
@@ -8,6 +8,7 @@ RSpec.describe Service do
describe "Associations" do
it { is_expected.to belong_to :project }
+ it { is_expected.to belong_to :group }
it { is_expected.to have_one :service_hook }
it { is_expected.to have_one :jira_tracker_data }
it { is_expected.to have_one :issue_tracker_data }
@@ -419,29 +420,49 @@ RSpec.describe Service do
end
end
- describe 'instance' do
- describe '.instance_for' do
- let_it_be(:jira_service) { create(:jira_service, :instance) }
- let_it_be(:slack_service) { create(:slack_service, :instance) }
+ describe '.default_integration' do
+ context 'with an instance-level service' do
+ let_it_be(:instance_service) { create(:jira_service, :instance) }
- subject { described_class.instance_for(type) }
-
- context 'Hipchat serivce' do
- let(:type) { 'HipchatService' }
+ it 'returns the instance service' do
+ expect(described_class.default_integration('JiraService', project)).to eq(instance_service)
+ end
- it { is_expected.to eq(nil) }
+ it 'returns nil for nonexistent service type' do
+ expect(described_class.default_integration('HipchatService', project)).to eq(nil)
end
- context 'Jira serivce' do
- let(:type) { 'JiraService' }
+ context 'with a group service' do
+ let_it_be(:group_service) { create(:jira_service, group_id: group.id, project_id: nil) }
- it { is_expected.to eq(jira_service) }
- end
+ it 'returns the group service for a project' do
+ expect(described_class.default_integration('JiraService', project)).to eq(group_service)
+ end
+
+ it 'returns the instance service for a group' do
+ expect(described_class.default_integration('JiraService', group)).to eq(instance_service)
+ end
- context 'Slack serivce' do
- let(:type) { 'SlackService' }
+ context 'with a subgroup' do
+ let_it_be(:subgroup) { create(:group, parent: group) }
+ let!(:project) { create(:project, group: subgroup) }
- it { is_expected.to eq(slack_service) }
+ it 'returns the closest group service for a project' do
+ expect(described_class.default_integration('JiraService', project)).to eq(group_service)
+ end
+
+ it 'returns the closest group service for a subgroup' do
+ expect(described_class.default_integration('JiraService', subgroup)).to eq(group_service)
+ end
+
+ context 'having a service' do
+ let!(:subgroup_service) { create(:jira_service, group_id: subgroup.id, project_id: nil) }
+
+ it 'returns the closest group service for a project' do
+ expect(described_class.default_integration('JiraService', project)).to eq(subgroup_service)
+ end
+ end
+ end
end
end
end
diff --git a/spec/requests/api/graphql/project/release_spec.rb b/spec/requests/api/graphql/project/release_spec.rb
index f9c19d9747d..38497246e8e 100644
--- a/spec/requests/api/graphql/project/release_spec.rb
+++ b/spec/requests/api/graphql/project/release_spec.rb
@@ -10,6 +10,7 @@ RSpec.describe 'Query.project(fullPath).release(tagName)' do
let_it_be(:guest) { create(:user) }
let_it_be(:reporter) { create(:user) }
let_it_be(:stranger) { create(:user) }
+ let_it_be(:link_filepath) { '/direct/asset/link/path' }
let(:params_for_issues_and_mrs) { { scope: 'all', state: 'opened', release_tag: release.tag } }
let(:post_query) { post_graphql(query, current_user: current_user) }
@@ -127,7 +128,7 @@ RSpec.describe 'Query.project(fullPath).release(tagName)' do
let(:release_fields) do
query_graphql_field(:assets, nil,
- query_graphql_field(:links, nil, 'nodes { id name url external }'))
+ query_graphql_field(:links, nil, 'nodes { id name url external, directAssetUrl }'))
end
it 'finds all release links' do
@@ -138,7 +139,8 @@ RSpec.describe 'Query.project(fullPath).release(tagName)' do
'id' => global_id_of(link),
'name' => link.name,
'url' => link.url,
- 'external' => link.external?
+ 'external' => link.external?,
+ 'directAssetUrl' => link.filepath ? Gitlab::Routing.url_helpers.project_release_url(project, release) << link.filepath : link.url
}
end
@@ -270,7 +272,7 @@ RSpec.describe 'Query.project(fullPath).release(tagName)' do
let_it_be(:milestone_2) { create(:milestone, project: project) }
let_it_be(:release) { create(:release, :with_evidence, project: project, milestones: [milestone_1, milestone_2]) }
let_it_be(:release_link_1) { create(:release_link, release: release) }
- let_it_be(:release_link_2) { create(:release_link, release: release) }
+ let_it_be(:release_link_2) { create(:release_link, release: release, filepath: link_filepath) }
before_all do
project.add_developer(developer)
@@ -311,7 +313,7 @@ RSpec.describe 'Query.project(fullPath).release(tagName)' do
let_it_be(:milestone_2) { create(:milestone, project: project) }
let_it_be(:release) { create(:release, :with_evidence, project: project, milestones: [milestone_1, milestone_2]) }
let_it_be(:release_link_1) { create(:release_link, release: release) }
- let_it_be(:release_link_2) { create(:release_link, release: release) }
+ let_it_be(:release_link_2) { create(:release_link, release: release, filepath: link_filepath) }
before_all do
project.add_developer(developer)