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
diff options
context:
space:
mode:
Diffstat (limited to 'spec/graphql/resolvers/group_issues_resolver_spec.rb')
-rw-r--r--spec/graphql/resolvers/group_issues_resolver_spec.rb65
1 files changed, 61 insertions, 4 deletions
diff --git a/spec/graphql/resolvers/group_issues_resolver_spec.rb b/spec/graphql/resolvers/group_issues_resolver_spec.rb
index 463cdca699b..e17429560ac 100644
--- a/spec/graphql/resolvers/group_issues_resolver_spec.rb
+++ b/spec/graphql/resolvers/group_issues_resolver_spec.rb
@@ -29,15 +29,72 @@ RSpec.describe Resolvers::GroupIssuesResolver do
describe '#resolve' do
it 'finds all group issues' do
- result = resolve(described_class, obj: group, ctx: { current_user: current_user })
-
- expect(result).to contain_exactly(issue1, issue2, issue3)
+ expect(resolve_issues).to contain_exactly(issue1, issue2, issue3)
end
it 'finds all group and subgroup issues' do
- result = resolve(described_class, obj: group, args: { include_subgroups: true }, ctx: { current_user: current_user })
+ result = resolve_issues(include_subgroups: true)
expect(result).to contain_exactly(issue1, issue2, issue3, subissue1, subissue2, subissue3)
end
+
+ it 'returns issues without the specified issue_type' do
+ result = resolve_issues(not: { types: ['issue'] })
+
+ expect(result).to contain_exactly(issue1)
+ end
+
+ context 'confidential issues' do
+ let_it_be(:confidential_issue1) { create(:issue, project: project, confidential: true) }
+ let_it_be(:confidential_issue2) { create(:issue, project: other_project, confidential: true) }
+
+ context "when user is allowed to view confidential issues" do
+ it 'returns all viewable issues by default' do
+ expect(resolve_issues).to contain_exactly(issue1, issue2, issue3, confidential_issue1, confidential_issue2)
+ end
+
+ context 'filtering for confidential issues' do
+ it 'returns only the non-confidential issues for the group when filter is set to false' do
+ expect(resolve_issues({ confidential: false })).to contain_exactly(issue1, issue2, issue3)
+ end
+
+ it "returns only the confidential issues for the group when filter is set to true" do
+ expect(resolve_issues({ confidential: true })).to contain_exactly(confidential_issue1, confidential_issue2)
+ end
+ end
+ end
+
+ context "when user is not allowed to see confidential issues" do
+ before do
+ group.add_guest(current_user)
+ end
+
+ it 'returns all viewable issues by default' do
+ expect(resolve_issues).to contain_exactly(issue1, issue2, issue3)
+ end
+
+ context 'filtering for confidential issues' do
+ it 'does not return the confidential issues when filter is set to false' do
+ expect(resolve_issues({ confidential: false })).to contain_exactly(issue1, issue2, issue3)
+ end
+
+ it 'does not return the confidential issues when filter is set to true' do
+ expect(resolve_issues({ confidential: true })).to be_empty
+ end
+ end
+ end
+ end
+
+ context 'release_tag filter' do
+ it 'returns an error when trying to filter by negated release_tag' do
+ expect do
+ resolve_issues(not: { release_tag: ['v1.0'] })
+ end.to raise_error(Gitlab::Graphql::Errors::ArgumentError, 'releaseTag filter is not allowed when parent is a group.')
+ end
+ end
+ end
+
+ def resolve_issues(args = {}, context = { current_user: current_user })
+ resolve(described_class, obj: group, args: args, ctx: context)
end
end