Commit e8be72d3 authored by Eugenia Grieff's avatar Eugenia Grieff

Add specs for single board list request

Update GraphQL Schema

Update field description

- Update GraphQL schema

Add tests for ListService when passing list_id
parent 7234bb6b
......@@ -8,7 +8,7 @@ module Resolvers
argument :id, GraphQL::ID_TYPE,
required: false,
description: 'Find a list by its ID'
description: 'Find a list by its global ID'
alias_method :board, :object
......@@ -27,7 +27,12 @@ module Resolvers
private
def board_lists(id)
service = Boards::Lists::ListService.new(board.resource_parent, context[:current_user], list_id: extract_list_id(id))
service = Boards::Lists::ListService.new(
board.resource_parent,
context[:current_user],
list_id: extract_list_id(id)
)
service.execute(board, create_default_lists: false)
end
......
---
title: Add option to query a single board list with GraphQL API
merge_request: 38216
author:
type: added
......@@ -956,6 +956,11 @@ type Board {
"""
first: Int
"""
Find a list by its global ID
"""
id: ID
"""
Returns the last _n_ elements from the list.
"""
......
......@@ -2508,6 +2508,16 @@
"name": "lists",
"description": "Lists of the board",
"args": [
{
"name": "id",
"description": "Find a list by its global ID",
"type": {
"kind": "SCALAR",
"name": "ID",
"ofType": null
},
"defaultValue": null
},
{
"name": "after",
"description": "Returns the elements in the list that come after the specified cursor.",
......@@ -65,7 +65,7 @@ RSpec.describe Resolvers::BoardListsResolver do
expect(list).to eq [label_list]
end
it 'returns empty result if list is not accessible found' do
it 'returns empty result if list is not found' do
external_group = create(:group, :private)
external_board = create(:board, resource_parent: external_group )
external_label = create(:group_label, group: group)
......@@ -75,6 +75,11 @@ RSpec.describe Resolvers::BoardListsResolver do
expect(list).to eq List.none
end
it 'raises an argument error if list ID is not valid' do
expect { resolve_board_lists(args: { id: 'test' }).items }
.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
end
end
end
end
......
......@@ -105,6 +105,20 @@ RSpec.describe 'get board lists' do
end
end
end
context 'when querying for a single list' do
before do
board_parent.add_reporter(user)
end
it 'finds the correct list' do
label_list = create(:list, board: board, label: label, position: 10)
post_graphql(query("id: \"#{global_id_of(label_list)}\""), current_user: user)
expect(lists_data[0]['node']['title']).to eq label_list.title
end
end
end
describe 'for a project' do
......
......@@ -6,12 +6,14 @@ RSpec.describe Boards::Lists::ListService do
let(:user) { create(:user) }
describe '#execute' do
let(:service) { described_class.new(parent, user) }
context 'when board parent is a project' do
let(:project) { create(:project) }
let(:board) { create(:board, project: project) }
let(:label) { create(:label, project: project) }
let!(:list) { create(:list, board: board, label: label) }
let(:service) { described_class.new(project, user) }
let(:parent) { project }
it_behaves_like 'lists list service'
end
......@@ -21,7 +23,7 @@ RSpec.describe Boards::Lists::ListService do
let(:board) { create(:board, group: group) }
let(:label) { create(:group_label, group: group) }
let!(:list) { create(:list, board: board, label: label) }
let(:service) { described_class.new(group, user) }
let(:parent) { group }
it_behaves_like 'lists list service'
end
......
......@@ -26,4 +26,22 @@ RSpec.shared_examples 'lists list service' do
expect(service.execute(board)).to eq [board.backlog_list, list, board.closed_list]
end
end
context 'when wanting a specific list' do
let!(:list1) { create(:list, board: board) }
it 'returns list specified by id' do
service = described_class.new(parent, user, list_id: list1.id)
expect(service.execute(board, create_default_lists: false)).to eq [list1]
end
it 'returns empty result when list is not found' do
external_board = create(:board, resource_parent: create(:project))
external_list = create(:list, board: external_board)
service = described_class.new(parent, user, list_id: external_list.id)
expect(service.execute(board, create_default_lists: false)).to eq(List.none)
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment