diff options
Diffstat (limited to 'spec/requests/api/todos_spec.rb')
-rw-r--r-- | spec/requests/api/todos_spec.rb | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/spec/requests/api/todos_spec.rb b/spec/requests/api/todos_spec.rb index 5a342f79926..8c3bdd5a9f0 100644 --- a/spec/requests/api/todos_spec.rb +++ b/spec/requests/api/todos_spec.rb @@ -6,6 +6,7 @@ RSpec.describe API::Todos, feature_category: :source_code_management do include DesignManagementTestHelpers let_it_be(:group) { create(:group) } + let_it_be(:group_2) { create(:group) } let_it_be(:project_1) { create(:project, :repository, group: group) } let_it_be(:project_2) { create(:project) } let_it_be(:author_1) { create(:user) } @@ -15,7 +16,8 @@ RSpec.describe API::Todos, feature_category: :source_code_management do let_it_be(:work_item) { create(:work_item, :task, project: project_1) } let_it_be(:merge_request) { create(:merge_request, source_project: project_1) } let_it_be(:alert) { create(:alert_management_alert, project: project_1) } - let_it_be(:group_request_todo) { create(:todo, author: author_1, user: john_doe, target: group, action: Todo::MEMBER_ACCESS_REQUESTED) } + let_it_be(:project_request_todo) { create(:todo, author: author_1, user: john_doe, target: project_2, action: Todo::MEMBER_ACCESS_REQUESTED) } + let_it_be(:group_request_todo) { create(:todo, author: author_1, user: john_doe, target: group_2, action: Todo::MEMBER_ACCESS_REQUESTED) } let_it_be(:alert_todo) { create(:todo, project: project_1, author: john_doe, user: john_doe, target: alert) } let_it_be(:merge_request_todo) { create(:todo, project: project_1, author: author_2, user: john_doe, target: merge_request) } let_it_be(:pending_1) { create(:todo, :mentioned, project: project_1, author: author_1, user: john_doe, target: issue) } @@ -72,7 +74,7 @@ RSpec.describe API::Todos, feature_category: :source_code_management do expect(response).to have_gitlab_http_status(:ok) expect(response).to include_pagination_headers expect(json_response).to be_an Array - expect(json_response.length).to eq(7) + expect(json_response.length).to eq(8) expect(json_response[0]).to include( 'id' => pending_5.id, @@ -133,11 +135,23 @@ RSpec.describe API::Todos, feature_category: :source_code_management do 'target_type' => 'Namespace', 'action_name' => 'member_access_requested', 'target' => hash_including( - 'id' => group.id, - 'name' => group.name, - 'full_path' => group.full_path + 'id' => group_2.id, + 'name' => group_2.name, + 'full_path' => group_2.full_path ), - 'target_url' => Gitlab::Routing.url_helpers.group_group_members_url(group, tab: 'access_requests') + 'target_url' => Gitlab::Routing.url_helpers.group_group_members_url(group_2, tab: 'access_requests') + ) + + expect(json_response[7]).to include( + 'target_type' => 'Project', + 'action_name' => 'member_access_requested', + 'target' => hash_including( + 'id' => project_2.id, + 'name' => project_2.name, + 'path' => project_2.path + ), + 'target_url' => Gitlab::Routing.url_helpers.project_project_members_url(project_2, tab: 'access_requests'), + 'body' => project_2.full_path ) end @@ -149,7 +163,7 @@ RSpec.describe API::Todos, feature_category: :source_code_management do get api('/todos', john_doe) - expect(json_response.count).to eq(7) + expect(json_response.count).to eq(8) expect(json_response.map { |t| t['id'] }).not_to include(no_access_todo.id, pending_4.id) end end @@ -242,8 +256,10 @@ RSpec.describe API::Todos, feature_category: :source_code_management do merge_request_3 = create(:merge_request, :jira_branch, source_project: new_todo.project) create(:on_commit_todo, project: new_todo.project, author: author_1, user: john_doe, target: merge_request_3) create(:todo, project: new_todo.project, author: author_2, user: john_doe, target: merge_request_3) + create(:todo, author: author_2, user: john_doe, target: project_2, action: Todo::MEMBER_ACCESS_REQUESTED) + create(:todo, author: author_2, user: john_doe, target: group_2, action: Todo::MEMBER_ACCESS_REQUESTED) - expect { get api('/todos', john_doe) }.not_to exceed_query_limit(control1).with_threshold(6) + expect { get api('/todos', john_doe) }.not_to exceed_query_limit(control1).with_threshold(5) control2 = ActiveRecord::QueryRecorder.new { get api('/todos', john_doe) } create_issue_todo_for(john_doe) |