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
|
||||
|
|
|
@ -13,6 +13,7 @@ Parameters:
|
|||
- `archived` (optional) - if passed, limit by archived status
|
||||
- `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
|
||||
- `search` (optional) - Return list of authorized projects according to a search criteria
|
||||
|
||||
```json
|
||||
[
|
||||
|
|
|
@ -15,9 +15,6 @@ module API
|
|||
|
||||
# Get a projects list for authenticated user
|
||||
#
|
||||
# Parameters:
|
||||
# archived (optional) - if passed, limit by archived status
|
||||
#
|
||||
# Example Request:
|
||||
# GET /projects
|
||||
get do
|
||||
|
@ -37,6 +34,10 @@ module API
|
|||
@projects = @projects.where(archived: parse_boolean(params[:archived]))
|
||||
end
|
||||
|
||||
if params[:search].present?
|
||||
@projects = @projects.search(params[:search])
|
||||
end
|
||||
|
||||
@projects = paginate @projects
|
||||
present @projects, with: Entities::Project
|
||||
end
|
||||
|
|
|
@ -7,6 +7,8 @@ describe API::API, api: true do
|
|||
let(:user3) { create(:user) }
|
||||
let(:admin) { create(:admin) }
|
||||
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(: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) }
|
||||
|
@ -29,6 +31,29 @@ describe API::API, api: true do
|
|||
json_response.first['name'].should == project.name
|
||||
json_response.first['owner']['username'].should == user.username
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in a new issue