Add search filter option on project api for authorized projects.
This commit is contained in:
parent
31bcd04711
commit
8689ce1efe
4 changed files with 31 additions and 4 deletions
|
@ -25,7 +25,7 @@ v 7.7.0
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
- Add API project search filter option for authorized projects
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Fix File blame not respecting branch selection
|
- Fix File blame not respecting branch selection
|
||||||
|
|
|
@ -13,6 +13,7 @@ Parameters:
|
||||||
- `archived` (optional) - if passed, limit by archived status
|
- `archived` (optional) - if passed, limit by archived status
|
||||||
- `order_by` (optional) - Return requests ordered by `id`, `name`, `created_at` or `last_activity_at` fields
|
- `order_by` (optional) - Return requests ordered by `id`, `name`, `created_at` or `last_activity_at` fields
|
||||||
- `sort` (optional) - Return requests sorted in `asc` or `desc` order
|
- `sort` (optional) - Return requests sorted in `asc` or `desc` order
|
||||||
|
- `search` (optional) - Return list of authorized projects according to a search criteria
|
||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
|
|
|
@ -15,9 +15,6 @@ module API
|
||||||
|
|
||||||
# Get a projects list for authenticated user
|
# Get a projects list for authenticated user
|
||||||
#
|
#
|
||||||
# Parameters:
|
|
||||||
# archived (optional) - if passed, limit by archived status
|
|
||||||
#
|
|
||||||
# Example Request:
|
# Example Request:
|
||||||
# GET /projects
|
# GET /projects
|
||||||
get do
|
get do
|
||||||
|
@ -37,6 +34,10 @@ module API
|
||||||
@projects = @projects.where(archived: parse_boolean(params[:archived]))
|
@projects = @projects.where(archived: parse_boolean(params[:archived]))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if params[:search].present?
|
||||||
|
@projects = @projects.search(params[:search])
|
||||||
|
end
|
||||||
|
|
||||||
@projects = paginate @projects
|
@projects = paginate @projects
|
||||||
present @projects, with: Entities::Project
|
present @projects, with: Entities::Project
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,6 +7,8 @@ describe API::API, api: true do
|
||||||
let(:user3) { create(:user) }
|
let(:user3) { create(:user) }
|
||||||
let(:admin) { create(:admin) }
|
let(:admin) { create(:admin) }
|
||||||
let(:project) { create(:project, creator_id: user.id, namespace: user.namespace) }
|
let(:project) { create(:project, creator_id: user.id, namespace: user.namespace) }
|
||||||
|
let(:project2) { create(:project, path: 'project2', creator_id: user.id, namespace: user.namespace) }
|
||||||
|
let(:project3) { create(:project, path: 'project3', creator_id: user.id, namespace: user.namespace) }
|
||||||
let(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
|
let(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
|
||||||
let(:project_member) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
|
let(:project_member) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
|
||||||
let(:project_member2) { create(:project_member, user: user3, project: project, access_level: ProjectMember::DEVELOPER) }
|
let(:project_member2) { create(:project_member, user: user3, project: project, access_level: ProjectMember::DEVELOPER) }
|
||||||
|
@ -29,6 +31,29 @@ describe API::API, api: true do
|
||||||
json_response.first['name'].should == project.name
|
json_response.first['name'].should == project.name
|
||||||
json_response.first['owner']['username'].should == user.username
|
json_response.first['owner']['username'].should == user.username
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "and using search" do
|
||||||
|
it "should return searched project" do
|
||||||
|
get api("/projects", user), { search: project.name }
|
||||||
|
response.status.should eq(200)
|
||||||
|
json_response.should be_an Array
|
||||||
|
json_response.length.should eq(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "and using sorting" do
|
||||||
|
before do
|
||||||
|
project2
|
||||||
|
project3
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should return the correct order when sorted by id" do
|
||||||
|
get api("/projects", user), { order_by: 'id', sort: 'desc'}
|
||||||
|
response.status.should eq(200)
|
||||||
|
json_response.should be_an Array
|
||||||
|
json_response.first['id'].should eq(3)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue