|
3 | 3 | describe API::Issues do
|
4 | 4 | include EmailHelpers
|
5 | 5 |
|
6 |
| - let(:user) { create(:user) } |
| 6 | + set(:user) { create(:user) } |
| 7 | + set(:project) do |
| 8 | + create(:empty_project, :public, creator_id: user.id, namespace: user.namespace) |
| 9 | + end |
| 10 | + |
7 | 11 | let(:user2) { create(:user) }
|
8 | 12 | let(:non_member) { create(:user) }
|
9 |
| - let(:guest) { create(:user) } |
10 |
| - let(:author) { create(:author) } |
11 |
| - let(:assignee) { create(:assignee) } |
| 13 | + set(:guest) { create(:user) } |
| 14 | + set(:author) { create(:author) } |
| 15 | + set(:assignee) { create(:assignee) } |
12 | 16 | let(:admin) { create(:user, :admin) }
|
13 |
| - let!(:project) { create(:empty_project, :public, creator_id: user.id, namespace: user.namespace ) } |
14 | 17 | let(:issue_title) { 'foo' }
|
15 | 18 | let(:issue_description) { 'closed' }
|
16 | 19 | let!(:closed_issue) do
|
|
43 | 46 | title: issue_title,
|
44 | 47 | description: issue_description
|
45 | 48 | end
|
46 |
| - let!(:label) do |
| 49 | + set(:label) do |
47 | 50 | create(:label, title: 'label', color: '#FFAABB', project: project)
|
48 | 51 | end
|
49 | 52 | let!(:label_link) { create(:label_link, label: label, target: issue) }
|
50 |
| - let!(:milestone) { create(:milestone, title: '1.0.0', project: project) } |
51 |
| - let!(:empty_milestone) do |
| 53 | + set(:milestone) { create(:milestone, title: '1.0.0', project: project) } |
| 54 | + set(:empty_milestone) do |
52 | 55 | create(:milestone, title: '2.0.0', project: project)
|
53 | 56 | end
|
54 | 57 | let!(:note) { create(:note_on_issue, author: user, project: project, noteable: issue) }
|
55 | 58 |
|
56 | 59 | let(:no_milestone_title) { URI.escape(Milestone::None.title) }
|
57 | 60 |
|
58 |
| - before do |
| 61 | + before(:all) do |
59 | 62 | project.team << [user, :reporter]
|
60 | 63 | project.team << [guest, :guest]
|
61 | 64 | end
|
|
70 | 73 | end
|
71 | 74 |
|
72 | 75 | context "when authenticated" do
|
| 76 | + let(:first_issue) { json_response.first } |
| 77 | + |
73 | 78 | it "returns an array of issues" do
|
74 | 79 | get api("/issues", user)
|
75 | 80 |
|
|
79 | 84 | end
|
80 | 85 |
|
81 | 86 | it 'returns an array of closed issues' do
|
82 |
| - get api('/issues?state=closed', user) |
| 87 | + get api('/issues', user), state: :closed |
83 | 88 |
|
84 | 89 | expect_paginated_array_response(size: 1)
|
85 |
| - expect(json_response.first['id']).to eq(closed_issue.id) |
| 90 | + expect(first_issue['id']).to eq(closed_issue.id) |
86 | 91 | end
|
87 | 92 |
|
88 | 93 | it 'returns an array of opened issues' do
|
89 |
| - get api('/issues?state=opened', user) |
| 94 | + get api('/issues', user), state: :opened |
90 | 95 |
|
91 | 96 | expect_paginated_array_response(size: 1)
|
92 |
| - expect(json_response.first['id']).to eq(issue.id) |
| 97 | + expect(first_issue['id']).to eq(issue.id) |
93 | 98 | end
|
94 | 99 |
|
95 | 100 | it 'returns an array of all issues' do
|
96 |
| - get api('/issues?state=all', user) |
| 101 | + get api('/issues', user), state: :all |
97 | 102 |
|
98 | 103 | expect_paginated_array_response(size: 2)
|
99 |
| - expect(json_response.first['id']).to eq(issue.id) |
| 104 | + expect(first_issue['id']).to eq(issue.id) |
100 | 105 | expect(json_response.second['id']).to eq(closed_issue.id)
|
101 | 106 | end
|
102 | 107 |
|
103 | 108 | it 'returns issues matching given search string for title' do
|
104 |
| - get api("/issues?search=#{issue.title}", user) |
| 109 | + get api("/issues", user), search: issue.title |
105 | 110 |
|
106 | 111 | expect_paginated_array_response(size: 1)
|
107 | 112 | expect(json_response.first['id']).to eq(issue.id)
|
108 | 113 | end
|
109 | 114 |
|
110 | 115 | it 'returns issues matching given search string for description' do
|
111 |
| - get api("/issues?search=#{issue.description}", user) |
| 116 | + get api("/issues", user), search: issue.description |
112 | 117 |
|
113 | 118 | expect_paginated_array_response(size: 1)
|
114 |
| - expect(json_response.first['id']).to eq(issue.id) |
| 119 | + expect(first_issue['id']).to eq(issue.id) |
115 | 120 | end
|
116 | 121 |
|
117 | 122 | it 'returns an array of labeled issues' do
|
118 |
| - get api("/issues?labels=#{label.title}", user) |
| 123 | + get api("/issues", user), labels: label.title |
119 | 124 |
|
120 | 125 | expect_paginated_array_response(size: 1)
|
121 |
| - expect(json_response.first['labels']).to eq([label.title]) |
| 126 | + expect(first_issue['labels']).to eq([label.title]) |
122 | 127 | end
|
123 | 128 |
|
124 | 129 | it 'returns an array of labeled issues when all labels matches' do
|
|
135 | 140 | end
|
136 | 141 |
|
137 | 142 | it 'returns an empty array if no issue matches labels' do
|
138 |
| - get api('/issues?labels=foo,bar', user) |
| 143 | + get api('/issues', user), labels: 'foo,bar' |
139 | 144 |
|
140 | 145 | expect_paginated_array_response(size: 0)
|
141 | 146 | end
|
142 | 147 |
|
143 | 148 | it 'returns an array of labeled issues matching given state' do
|
144 |
| - get api("/issues?labels=#{label.title}&state=opened", user) |
| 149 | + get api("/issues", user), labels: label.title, state: :opened |
145 | 150 |
|
146 | 151 | expect_paginated_array_response(size: 1)
|
147 | 152 | expect(json_response.first['labels']).to eq([label.title])
|
|
0 commit comments