From 34d11a319807481ad9a336914aef86b07f1ba055 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Wed, 6 Jul 2016 10:15:41 +0100 Subject: [PATCH 01/39] implements filter_params --- lib/api/entities.rb | 2 ++ lib/api/helpers.rb | 17 +++++++++++++++++ lib/api/projects.rb | 2 ++ 3 files changed, 21 insertions(+) diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 8cc4368b5c2..757896fd59b 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -331,7 +331,9 @@ module API class ProjectWithAccess < Project expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| + project = Project.find_by(project[:id]) project.project_members.find_by(user_id: options[:user].id) + ] end expose :group_access, using: Entities::GroupAccess do |project, options| diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 77e407b54c5..3a1837effd8 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -287,6 +287,23 @@ module API # Projects helpers + def filter_params(projects) + project_entries = [] + + # Removes the redundant information of the object + projects.each do |project| + entry = { + id: project.id, + http_url_to_repo: project.http_url_to_repo, + name_with_namespace: project.name_with_namespace + } + + project_entries << entry + end + + project_entries + end + def filter_projects(projects) # If the archived parameter is passed, limit results accordingly if params[:archived].present? diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 0cc1edd65c8..deade7cad90 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,6 +25,8 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects + @projects = filter_params(@projects) + puts present @projects, with: Entities::ProjectWithAccess, user: current_user present @projects, with: Entities::ProjectWithAccess, user: current_user end From 54a234b94062d3fb669fcbdd76ed4460a39eb3ca Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Wed, 6 Jul 2016 17:53:40 +0100 Subject: [PATCH 02/39] adds basic functionality to the new endpoint of the api --- lib/api/entities.rb | 16 ++++++++++++++-- lib/api/helpers.rb | 17 ----------------- lib/api/projects.rb | 13 +++++++++++-- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 757896fd59b..0f26a1f00a2 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -79,6 +79,12 @@ module API expose :public_builds end + class SimpleProject < Grape::Entity + expose :id + expose :name, :name_with_namespace + expose :http_url_to_repo + end + class ProjectMember < UserBasic expose :access_level do |user, options| options[:project].project_members.find_by(user_id: user.id).access_level @@ -328,12 +334,18 @@ module API end end + class SimpleProjectWithAccess < SimpleProject + expose :permissions do + expose :project_access, using: Entities::ProjectAccess do |project, options| + project.project_members.find_by(user_id: options[:user].id) + end + end + end + class ProjectWithAccess < Project expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| - project = Project.find_by(project[:id]) project.project_members.find_by(user_id: options[:user].id) - ] end expose :group_access, using: Entities::GroupAccess do |project, options| diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 3a1837effd8..77e407b54c5 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -287,23 +287,6 @@ module API # Projects helpers - def filter_params(projects) - project_entries = [] - - # Removes the redundant information of the object - projects.each do |project| - entry = { - id: project.id, - http_url_to_repo: project.http_url_to_repo, - name_with_namespace: project.name_with_namespace - } - - project_entries << entry - end - - project_entries - end - def filter_projects(projects) # If the archived parameter is passed, limit results accordingly if params[:archived].present? diff --git a/lib/api/projects.rb b/lib/api/projects.rb index deade7cad90..c1e66b239aa 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,11 +25,20 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects - @projects = filter_params(@projects) - puts present @projects, with: Entities::ProjectWithAccess, user: current_user present @projects, with: Entities::ProjectWithAccess, user: current_user end + # Get a simplified project list for authenticated user + # + # Example Request: + # GET /projects/simple + get '/simple' do + @projects = current_user.authorized_projects + @projects = filter_projects(@projects) + @projects = paginate @projects + present @projects, with: Entities::SimpleProjectWithAccess, user: current_user + end + # Get an owned projects list for authenticated user # # Example Request: From e3b5912d634f0b879a1ebc23fa38e6f21ffcae74 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Thu, 7 Jul 2016 11:55:31 +0100 Subject: [PATCH 03/39] gets the new object through /simple endpoint and renders on the dropdown --- app/assets/javascripts/api.js.coffee | 2 +- app/assets/javascripts/gl_dropdown.js.coffee | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/api.js.coffee b/app/assets/javascripts/api.js.coffee index cf46f15a156..45059ae4042 100644 --- a/app/assets/javascripts/api.js.coffee +++ b/app/assets/javascripts/api.js.coffee @@ -3,7 +3,7 @@ groupPath: "/api/:version/groups/:id.json" namespacesPath: "/api/:version/namespaces.json" groupProjectsPath: "/api/:version/groups/:id/projects.json" - projectsPath: "/api/:version/projects.json" + projectsPath: "/api/:version/projects/simple.json" labelsPath: "/api/:version/projects/:id/labels" licensePath: "/api/:version/licenses/:key" gitignorePath: "/api/:version/gitignores/:key" diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index ed9dfcc917e..7c43e523572 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -122,6 +122,7 @@ class GitLabDropdownRemote # Fetch the data by calling the data funcfion @dataEndpoint "", (data) => + console.log(data) if @options.success @options.success(data) From 12791b9edaae24b0b10ff88edef83f64ac413102 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Thu, 7 Jul 2016 11:55:58 +0100 Subject: [PATCH 04/39] removes debugging print --- app/assets/javascripts/gl_dropdown.js.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 7c43e523572..ed9dfcc917e 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -122,7 +122,6 @@ class GitLabDropdownRemote # Fetch the data by calling the data funcfion @dataEndpoint "", (data) => - console.log(data) if @options.success @options.success(data) From 4c43ba8b1924fcb877a52bd622cd93074ae73584 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Thu, 7 Jul 2016 12:20:51 +0100 Subject: [PATCH 05/39] adds entry to changelog --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 4fac555e12a..98bd11af833 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 8.10.0 (unreleased) + - Fix projects dropdown loading performance with a simplified api cal. !5113 (tiagonbotelho) - Fix commit builds API, return all builds for all pipelines for given commit. !4849 - Replace Haml with Hamlit to make view rendering faster. !3666 - Refactor repository paths handling to allow multiple git mount points From 1b111b83bf79a0f2e27c2a445a4757d399b36ca0 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 09:47:09 +0100 Subject: [PATCH 06/39] changes the usage of simpleprojectdetails to already implemented basicprojectsdetails and changes the url to a more reader friendly format --- app/assets/javascripts/api.js.coffee | 2 +- lib/api/entities.rb | 8 +------- lib/api/projects.rb | 17 +++++------------ 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/app/assets/javascripts/api.js.coffee b/app/assets/javascripts/api.js.coffee index 45059ae4042..8028e66f089 100644 --- a/app/assets/javascripts/api.js.coffee +++ b/app/assets/javascripts/api.js.coffee @@ -3,7 +3,7 @@ groupPath: "/api/:version/groups/:id.json" namespacesPath: "/api/:version/namespaces.json" groupProjectsPath: "/api/:version/groups/:id/projects.json" - projectsPath: "/api/:version/projects/simple.json" + projectsPath: "/api/:version/projects.json?format=simple" labelsPath: "/api/:version/projects/:id/labels" licensePath: "/api/:version/licenses/:key" gitignorePath: "/api/:version/gitignores/:key" diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 0f26a1f00a2..aae1840821e 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -79,12 +79,6 @@ module API expose :public_builds end - class SimpleProject < Grape::Entity - expose :id - expose :name, :name_with_namespace - expose :http_url_to_repo - end - class ProjectMember < UserBasic expose :access_level do |user, options| options[:project].project_members.find_by(user_id: user.id).access_level @@ -334,7 +328,7 @@ module API end end - class SimpleProjectWithAccess < SimpleProject + class BasicProjectWithAccess < BasicProjectDetails expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| project.project_members.find_by(user_id: options[:user].id) diff --git a/lib/api/projects.rb b/lib/api/projects.rb index c1e66b239aa..c46764c4897 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,18 +25,11 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects - present @projects, with: Entities::ProjectWithAccess, user: current_user - end - - # Get a simplified project list for authenticated user - # - # Example Request: - # GET /projects/simple - get '/simple' do - @projects = current_user.authorized_projects - @projects = filter_projects(@projects) - @projects = paginate @projects - present @projects, with: Entities::SimpleProjectWithAccess, user: current_user + if params["format"] + present @projects, with: Entities::BasicProjectWithAccess, user: current_user + else + present @projects, with: Entities::ProjectWithAccess, user: current_user + end end # Get an owned projects list for authenticated user From 94d9e168def805afe04084c4206a78e3fa0e9f69 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 11:17:37 +0100 Subject: [PATCH 07/39] changes the project_title_spec accordingly --- spec/javascripts/project_title_spec.js.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/javascripts/project_title_spec.js.coffee b/spec/javascripts/project_title_spec.js.coffee index f0d26fb5446..e49dfbf1ba4 100644 --- a/spec/javascripts/project_title_spec.js.coffee +++ b/spec/javascripts/project_title_spec.js.coffee @@ -22,7 +22,7 @@ describe 'Project Title', -> @projects_data = fixture.load('projects.json')[0] spyOn(jQuery, 'ajax').and.callFake (req) => - expect(req.url).toBe('/api/v3/projects.json') + expect(req.url).toBe('/api/v3/projects.json?format=simple') d = $.Deferred() d.resolve @projects_data d.promise() From 58c76f4be1b6c3ea3db62b771f8df8b71bc57273 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 12:06:39 +0100 Subject: [PATCH 08/39] fixes missing field on basicprojectdetails --- .Gemfile.swm | Bin 0 -> 16384 bytes .Gemfile.swn | Bin 0 -> 16384 bytes app/assets/javascripts/gl_dropdown.js.coffee | 1 + lib/api/entities.rb | 1 + 4 files changed, 2 insertions(+) create mode 100644 .Gemfile.swm create mode 100644 .Gemfile.swn diff --git a/.Gemfile.swm b/.Gemfile.swm new file mode 100644 index 0000000000000000000000000000000000000000..c5905cff7932aba6a13e5bafc60086613e1d4416 GIT binary patch literal 16384 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 O8_b6w!5ou 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 M33d(2?c=Ne087$n)Bpeg literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index ed9dfcc917e..233a3873ce9 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -399,6 +399,7 @@ class GitLabDropdown selected = true # Set URL + console.log(data) if @options.url? url = @options.url(data) else diff --git a/lib/api/entities.rb b/lib/api/entities.rb index aae1840821e..8cba77b148a 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -54,6 +54,7 @@ module API class BasicProjectDetails < Grape::Entity expose :id + expose :http_url_to_repo, :web_url expose :name, :name_with_namespace expose :path, :path_with_namespace end From b0b374b8c9c95eb65e3ff8bf854353cbf2f86a16 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 12:07:17 +0100 Subject: [PATCH 09/39] removes gemfile.lock dotfiles --- .Gemfile.swm | Bin 16384 -> 0 bytes .Gemfile.swn | Bin 16384 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .Gemfile.swm delete mode 100644 .Gemfile.swn diff --git a/.Gemfile.swm b/.Gemfile.swm deleted file mode 100644 index c5905cff7932aba6a13e5bafc60086613e1d4416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 O8_b6w!5ou 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 M33d(2?c=Ne087$n)Bpeg From d85dde198b309ab62847d1f58d9373cb3509d4aa Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Mon, 11 Jul 2016 16:05:06 +0100 Subject: [PATCH 10/39] adds test to check json fields on simple request and changes the url request format --- app/assets/javascripts/api.js.coffee | 2 +- app/assets/javascripts/gl_dropdown.js.coffee | 1 - lib/api/projects.rb | 2 +- spec/javascripts/project_title_spec.js.coffee | 2 +- spec/requests/api/projects_spec.rb | 10 ++++++++++ 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/api.js.coffee b/app/assets/javascripts/api.js.coffee index 8028e66f089..89b0ac697ed 100644 --- a/app/assets/javascripts/api.js.coffee +++ b/app/assets/javascripts/api.js.coffee @@ -3,7 +3,7 @@ groupPath: "/api/:version/groups/:id.json" namespacesPath: "/api/:version/namespaces.json" groupProjectsPath: "/api/:version/groups/:id/projects.json" - projectsPath: "/api/:version/projects.json?format=simple" + projectsPath: "/api/:version/projects.json?simple=true" labelsPath: "/api/:version/projects/:id/labels" licensePath: "/api/:version/licenses/:key" gitignorePath: "/api/:version/gitignores/:key" diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 233a3873ce9..ed9dfcc917e 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -399,7 +399,6 @@ class GitLabDropdown selected = true # Set URL - console.log(data) if @options.url? url = @options.url(data) else diff --git a/lib/api/projects.rb b/lib/api/projects.rb index c46764c4897..7aea553bdca 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,7 +25,7 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects - if params["format"] + if params["simple"] present @projects, with: Entities::BasicProjectWithAccess, user: current_user else present @projects, with: Entities::ProjectWithAccess, user: current_user diff --git a/spec/javascripts/project_title_spec.js.coffee b/spec/javascripts/project_title_spec.js.coffee index e49dfbf1ba4..0244119fa0e 100644 --- a/spec/javascripts/project_title_spec.js.coffee +++ b/spec/javascripts/project_title_spec.js.coffee @@ -22,7 +22,7 @@ describe 'Project Title', -> @projects_data = fixture.load('projects.json')[0] spyOn(jQuery, 'ajax').and.callFake (req) => - expect(req.url).toBe('/api/v3/projects.json?format=simple') + expect(req.url).toBe('/api/v3/projects.json?simple=true') d = $.Deferred() d.resolve @projects_data d.promise() diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 611dd2a2a88..6176ef69d7b 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -81,6 +81,16 @@ describe API::API, api: true do expect(json_response.first.keys).not_to include('open_issues_count') end + context 'GET /projects?simple=true' do + let(:keys) { ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace", "permissions"] } + it 'should return a simplified version of all the projects' do + get api('/projects?simple=true', user) + expect(response).to have_http_status(200) + expect(json_response).to be_an Array + expect(json_response.first.keys).to match_array keys + end + end + context 'and using search' do it 'should return searched project' do get api('/projects', user), { search: project.name } From a5cf953deda76398715abe2654530d0dea9f6a3a Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Mon, 11 Jul 2016 18:42:23 +0100 Subject: [PATCH 11/39] moves let variable to it statement by using a local variable --- spec/requests/api/projects_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 6176ef69d7b..6ded6b40178 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -82,12 +82,12 @@ describe API::API, api: true do end context 'GET /projects?simple=true' do - let(:keys) { ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace", "permissions"] } it 'should return a simplified version of all the projects' do + expected_keys = ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace", "permissions"] get api('/projects?simple=true', user) expect(response).to have_http_status(200) expect(json_response).to be_an Array - expect(json_response.first.keys).to match_array keys + expect(json_response.first.keys).to match_array expected_keys end end From 3ee328dcc3203aeaa2cdf619ac95d7dac07a84eb Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Tue, 12 Jul 2016 10:43:08 +0100 Subject: [PATCH 12/39] changes string to symbol in param --- lib/api/projects.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 7aea553bdca..844547665ef 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,7 +25,7 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects - if params["simple"] + if params[:simple] present @projects, with: Entities::BasicProjectWithAccess, user: current_user else present @projects, with: Entities::ProjectWithAccess, user: current_user From e1c5eb480e10329245760edd0760a5b3cb929240 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Wed, 6 Jul 2016 10:15:41 +0100 Subject: [PATCH 13/39] implements filter_params --- lib/api/entities.rb | 2 ++ lib/api/helpers.rb | 17 +++++++++++++++++ lib/api/projects.rb | 2 ++ 3 files changed, 21 insertions(+) diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 301dbb688a7..f00a4ac2ed6 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -344,7 +344,9 @@ module API class ProjectWithAccess < Project expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| + project = Project.find_by(project[:id]) project.project_members.find_by(user_id: options[:user].id) + ] end expose :group_access, using: Entities::GroupAccess do |project, options| diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 77e407b54c5..3a1837effd8 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -287,6 +287,23 @@ module API # Projects helpers + def filter_params(projects) + project_entries = [] + + # Removes the redundant information of the object + projects.each do |project| + entry = { + id: project.id, + http_url_to_repo: project.http_url_to_repo, + name_with_namespace: project.name_with_namespace + } + + project_entries << entry + end + + project_entries + end + def filter_projects(projects) # If the archived parameter is passed, limit results accordingly if params[:archived].present? diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 0cc1edd65c8..deade7cad90 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,6 +25,8 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects + @projects = filter_params(@projects) + puts present @projects, with: Entities::ProjectWithAccess, user: current_user present @projects, with: Entities::ProjectWithAccess, user: current_user end From a8cf4e13b33da8d71e16874ebf3dce9ca9d40b76 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Wed, 6 Jul 2016 17:53:40 +0100 Subject: [PATCH 14/39] adds basic functionality to the new endpoint of the api --- lib/api/entities.rb | 16 ++++++++++++++-- lib/api/helpers.rb | 17 ----------------- lib/api/projects.rb | 13 +++++++++++-- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/lib/api/entities.rb b/lib/api/entities.rb index f00a4ac2ed6..951cca248a1 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -90,6 +90,12 @@ module API end end + class SimpleProject < Grape::Entity + expose :id + expose :name, :name_with_namespace + expose :http_url_to_repo + end + class ProjectMember < UserBasic expose :access_level do |user, options| options[:project].project_members.find_by(user_id: user.id).access_level @@ -341,12 +347,18 @@ module API end end + class SimpleProjectWithAccess < SimpleProject + expose :permissions do + expose :project_access, using: Entities::ProjectAccess do |project, options| + project.project_members.find_by(user_id: options[:user].id) + end + end + end + class ProjectWithAccess < Project expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| - project = Project.find_by(project[:id]) project.project_members.find_by(user_id: options[:user].id) - ] end expose :group_access, using: Entities::GroupAccess do |project, options| diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 3a1837effd8..77e407b54c5 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -287,23 +287,6 @@ module API # Projects helpers - def filter_params(projects) - project_entries = [] - - # Removes the redundant information of the object - projects.each do |project| - entry = { - id: project.id, - http_url_to_repo: project.http_url_to_repo, - name_with_namespace: project.name_with_namespace - } - - project_entries << entry - end - - project_entries - end - def filter_projects(projects) # If the archived parameter is passed, limit results accordingly if params[:archived].present? diff --git a/lib/api/projects.rb b/lib/api/projects.rb index deade7cad90..c1e66b239aa 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,11 +25,20 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects - @projects = filter_params(@projects) - puts present @projects, with: Entities::ProjectWithAccess, user: current_user present @projects, with: Entities::ProjectWithAccess, user: current_user end + # Get a simplified project list for authenticated user + # + # Example Request: + # GET /projects/simple + get '/simple' do + @projects = current_user.authorized_projects + @projects = filter_projects(@projects) + @projects = paginate @projects + present @projects, with: Entities::SimpleProjectWithAccess, user: current_user + end + # Get an owned projects list for authenticated user # # Example Request: From 331f026acb3515ab64e4e7ec75ea16473b98fc2f Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Thu, 7 Jul 2016 11:55:31 +0100 Subject: [PATCH 15/39] gets the new object through /simple endpoint and renders on the dropdown --- app/assets/javascripts/api.js.coffee | 2 +- app/assets/javascripts/gl_dropdown.js.coffee | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/api.js.coffee b/app/assets/javascripts/api.js.coffee index cf46f15a156..45059ae4042 100644 --- a/app/assets/javascripts/api.js.coffee +++ b/app/assets/javascripts/api.js.coffee @@ -3,7 +3,7 @@ groupPath: "/api/:version/groups/:id.json" namespacesPath: "/api/:version/namespaces.json" groupProjectsPath: "/api/:version/groups/:id/projects.json" - projectsPath: "/api/:version/projects.json" + projectsPath: "/api/:version/projects/simple.json" labelsPath: "/api/:version/projects/:id/labels" licensePath: "/api/:version/licenses/:key" gitignorePath: "/api/:version/gitignores/:key" diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 1c65e833d47..e226943a4c1 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -123,6 +123,7 @@ class GitLabDropdownRemote # Fetch the data by calling the data funcfion @dataEndpoint "", (data) => + console.log(data) if @options.success @options.success(data) From 9840681025463e8187652d825e7ed556a95c4936 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Thu, 7 Jul 2016 11:55:58 +0100 Subject: [PATCH 16/39] removes debugging print --- app/assets/javascripts/gl_dropdown.js.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index e226943a4c1..1c65e833d47 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -123,7 +123,6 @@ class GitLabDropdownRemote # Fetch the data by calling the data funcfion @dataEndpoint "", (data) => - console.log(data) if @options.success @options.success(data) From 6715ea7dc8b92e54e728f155cc4edeb917585168 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Thu, 7 Jul 2016 12:20:51 +0100 Subject: [PATCH 17/39] adds entry to changelog --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index ee3ee4c37d6..3db8fa142df 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 8.10.0 (unreleased) - Expose {should,force}_remove_source_branch (Ben Boeckel) + - Fix projects dropdown loading performance with a simplified api cal. !5113 (tiagonbotelho) - Fix commit builds API, return all builds for all pipelines for given commit. !4849 - Replace Haml with Hamlit to make view rendering faster. !3666 - Expire the branch cache after `git gc` runs From f5d92d120edbd6bc730f10293a5847dd9b0e22fc Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 09:47:09 +0100 Subject: [PATCH 18/39] changes the usage of simpleprojectdetails to already implemented basicprojectsdetails and changes the url to a more reader friendly format --- app/assets/javascripts/api.js.coffee | 2 +- lib/api/entities.rb | 8 +------- lib/api/projects.rb | 17 +++++------------ 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/app/assets/javascripts/api.js.coffee b/app/assets/javascripts/api.js.coffee index 45059ae4042..8028e66f089 100644 --- a/app/assets/javascripts/api.js.coffee +++ b/app/assets/javascripts/api.js.coffee @@ -3,7 +3,7 @@ groupPath: "/api/:version/groups/:id.json" namespacesPath: "/api/:version/namespaces.json" groupProjectsPath: "/api/:version/groups/:id/projects.json" - projectsPath: "/api/:version/projects/simple.json" + projectsPath: "/api/:version/projects.json?format=simple" labelsPath: "/api/:version/projects/:id/labels" licensePath: "/api/:version/licenses/:key" gitignorePath: "/api/:version/gitignores/:key" diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 951cca248a1..0def1ed2823 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -90,12 +90,6 @@ module API end end - class SimpleProject < Grape::Entity - expose :id - expose :name, :name_with_namespace - expose :http_url_to_repo - end - class ProjectMember < UserBasic expose :access_level do |user, options| options[:project].project_members.find_by(user_id: user.id).access_level @@ -347,7 +341,7 @@ module API end end - class SimpleProjectWithAccess < SimpleProject + class BasicProjectWithAccess < BasicProjectDetails expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| project.project_members.find_by(user_id: options[:user].id) diff --git a/lib/api/projects.rb b/lib/api/projects.rb index c1e66b239aa..c46764c4897 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,18 +25,11 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects - present @projects, with: Entities::ProjectWithAccess, user: current_user - end - - # Get a simplified project list for authenticated user - # - # Example Request: - # GET /projects/simple - get '/simple' do - @projects = current_user.authorized_projects - @projects = filter_projects(@projects) - @projects = paginate @projects - present @projects, with: Entities::SimpleProjectWithAccess, user: current_user + if params["format"] + present @projects, with: Entities::BasicProjectWithAccess, user: current_user + else + present @projects, with: Entities::ProjectWithAccess, user: current_user + end end # Get an owned projects list for authenticated user From 8a4f2d4db081575c14550d3adcf1bb7a809da595 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 11:17:37 +0100 Subject: [PATCH 19/39] changes the project_title_spec accordingly --- spec/javascripts/project_title_spec.js.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/javascripts/project_title_spec.js.coffee b/spec/javascripts/project_title_spec.js.coffee index f0d26fb5446..e49dfbf1ba4 100644 --- a/spec/javascripts/project_title_spec.js.coffee +++ b/spec/javascripts/project_title_spec.js.coffee @@ -22,7 +22,7 @@ describe 'Project Title', -> @projects_data = fixture.load('projects.json')[0] spyOn(jQuery, 'ajax').and.callFake (req) => - expect(req.url).toBe('/api/v3/projects.json') + expect(req.url).toBe('/api/v3/projects.json?format=simple') d = $.Deferred() d.resolve @projects_data d.promise() From 87d4d76dc03b54a22cb29c71eaa962b7265f5319 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 12:06:39 +0100 Subject: [PATCH 20/39] fixes missing field on basicprojectdetails --- .Gemfile.swm | Bin 0 -> 16384 bytes .Gemfile.swn | Bin 0 -> 16384 bytes app/assets/javascripts/gl_dropdown.js.coffee | 1 + lib/api/entities.rb | 1 + 4 files changed, 2 insertions(+) create mode 100644 .Gemfile.swm create mode 100644 .Gemfile.swn diff --git a/.Gemfile.swm b/.Gemfile.swm new file mode 100644 index 0000000000000000000000000000000000000000..c5905cff7932aba6a13e5bafc60086613e1d4416 GIT binary patch literal 16384 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 O8_b6w!5ou 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 M33d(2?c=Ne087$n)Bpeg literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 1c65e833d47..4743b484d22 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -401,6 +401,7 @@ class GitLabDropdown selected = true # Set URL + console.log(data) if @options.url? url = @options.url(data) else diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 0def1ed2823..b62afb4bb4c 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -54,6 +54,7 @@ module API class BasicProjectDetails < Grape::Entity expose :id + expose :http_url_to_repo, :web_url expose :name, :name_with_namespace expose :path, :path_with_namespace end From f0c437ca7d5ece265b134d8323f4f01b656f1a90 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 12:07:17 +0100 Subject: [PATCH 21/39] removes gemfile.lock dotfiles --- .Gemfile.swm | Bin 16384 -> 0 bytes .Gemfile.swn | Bin 16384 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .Gemfile.swm delete mode 100644 .Gemfile.swn diff --git a/.Gemfile.swm b/.Gemfile.swm deleted file mode 100644 index c5905cff7932aba6a13e5bafc60086613e1d4416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 O8_b6w!5ou zSN9Hkqo81n3QAA|nh=l&6ZJt79>n+}`hW_G_$U~O=z~{c;;R}z{--{AX7{pz#0L}8 zo%}MhQ>Uv=ojP@@>U8g5;Um|rvwhKWfa}dc@MwO=jZg5$&b<2lX9ShxBb5(SCDO5? z@?Ea=gGa(dgvUudT#Qnlzr5h>+bZnpGVUIdRmun5k@-L+n<7<3Ch{uWkd^zndq`wM znTnUMwEeZUKx=_lX@T>DrN!O?3D0#dV;5dhcn6>BZfTA;N+Yk}4Rtp!>Ov=(SB z&|2XC!2(rrR&WP8a;EFdo$m9D9iRVp*Msi&yLObH<^EoEpO?A{d_C^x_M^2xYk}4R ztp!>Ov=(SB&|09iKx={40<8sF3$zyaA6S4VL2xeGy_^yNc>eFt|1Z8N2!0QK0Uibq zfg0QlZUUEpKfW;teg=LDz70ML?gAQo5Olz0;2iM6`9bgla4#5wE5JqIrSpQ|C*T{P z0EfVN;16#If**qWz!+Qw_JC#ZR`9~>(Jpurd>4EU2(Shs5Q2ArGe7`-{kkCd4)_wd z2Yed52mA(||2lX8+yhp@Mc}uu4T9&vli*(PW$<}02G@a$z=hx(@aJ=a;1qZfJPn=# z-vS2M55V;B4^H*+K9ucno|6+z0Le5{$t|!9lPJ_JE7QJHbC*69mtJ z2f-)7E#Q6NQt&S%V}1vI3?2b@g3o|G;1tIB3GgHEICvO51ik}XtR3YPTSr4{CE#kVA z)mF&!yt}rw?#|EP{ITmjqsH9EH?h-@Gk9 z5cPcRC0h1{q#y*AqP?!^qawL_re&krap__D za-%LFV|%{TXkT%?(NCqGy}t)1ScGgTPSmm#D{Q`z>Xuxll@zY_ah0WEAq$bpoJ?SA z@1X+nh;=lYs7Y>Ilc-) zLgc!Fkn0!9XG*PWH$~pubYrSwp1y1ernGMj>d`zU2cdiT$+{_8Xk5pXOmtJ%0pFtm z)T#^b-ASp6lPVXtYII7bQ~7hmExZxhDeGn&#kB?eIdwY{>KY;E%q1^G2z3xO8l#wCXnmcEZGF=^dkAS{gw-Ry-)>64 zWk)p}-|4y>k*YJTcNziQeV9WS{=*VciFl?TBbBCgh6z3ziKNdHUQ{~*^-PsRo@(K` zV(&}kz;$F9?zgS?R(OsbwX-l`8P98;rdv$rELQnYj=D0JcdCq=2dR+Xq6uu73Y zRjQPwiYH8!38MWR!|QwHXb1)UlzR2Tp3l5ez0a~qn6e&-XvBGPjCIT!q zHT1AlTaUxrpHhpkny7FH{moKGv)ENK$Bs88jNE~yncXfpci|gSXJ(uXLnfF_O-31XKXIgeE;@)PMni{dK z8;DZ5_-FSV*n626V75;yY{kpi0c>uyYfspigp_gX;`Z*r8S(n>R2{4J)MutOn)$m^ zaJn8gg76$MP>R+>b5V`6Uf2l6T$2+vmu(th#SLmBIFQw#jyJY#V4&gYf@X=FcG_5$ z1pQ8_sgXQ|BB{S@(}=G-nw}A{qE>LaH%b)kzC~dIy048sNs!j6*@<;pZ8Kt6eYQ;~ z7fmDrl&PXqj9hHMCSyOkemV0lfJjn}N(j=(cCsyfB3*1`q3YflSyM{0t1b#vB22Kg zgT94C40)Ya{Y{?MqK~kJN@$5TgGb?f%?dChpv}H%^(e~_Qc}P8YudhHq{wH<1lXmL z5q50XjnA2-z`9?E4X}R$Jr-T5buDyv@50^#CJ=~N4!00Eo5~r2zNSM;QVWX05XZ-178I>$iN7!fOmn5!G+-O z=;zOv=(SB@Cp_%2Ryx{L;9CZ zd{!cBcBx3lyCcbFhRo$OP3Q8l$Bg)F*23+8$AYKTxF3&2lkKGRw@DseYs!#NL76|T z@RH|Ba(9Hlo|_I3$JDSwG6QGiX_jx>5tX*l=D6@-It{tHa)B-+bRfxQjy3+2NO=|< z2Ly6}37!`qbFA_{rE;ffR9oj9yV|Aq=0%1aXdgM4bgPe)6Y?(3Knv*7e(c!oNy-Q* zMXlOY<^GPd20aJBzsI_}DA^9J?OnN;l*o0*{j%`t;tYmFb1;2&)3L{%K2jxQp?Rbg zF)H?f3=U99ZPJJIOlIb$d5z3!pE4c(!OnaI%k=pW>4`p)XIZ1rw#Ps76EVneC~JIR z(Tufwieycp3qj8p?CI8=*j%w5s~R~!JRCswX7&uVA1cpea9rBbc7fE|sr*LH3q7Md zQl~MJ=Qw9dI-J1@O*Y8Z6*vtB$Y_n}*+eJ{I>PNHR_6(xe}%kGj2U)_xyptqr>yX9 zg=(~Gp+<%=g_CVUg3N?dIGJ&`x^%2Ho|)v{MKB^X$h(Q-M5tm_gypt@pa(>+a7Uxf zGCBEa!rq8DIU^Z~WO{}SaiYTtr{zMayt&;ZQ~a3k5Y`1Usj+#mWgTSJe|FaFd*D(a zG@;@9+iFImr(d>aGZDPBS2DbnYdkaX^BK8ObakhY>k0BvROm|!m11&?#Ps16wQSom zPeGkx$WCqz5VAszL;~D$to*=H2d1rgx$Rw``f$>xe3Wl^IONF8Ii;Yltpn+Gkt1JS M33d(2?c=Ne087$n)Bpeg From c4dc0f52c3fbb0b195a23645ebdc78991abb332d Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Mon, 11 Jul 2016 16:05:06 +0100 Subject: [PATCH 22/39] adds test to check json fields on simple request and changes the url request format --- app/assets/javascripts/api.js.coffee | 2 +- app/assets/javascripts/gl_dropdown.js.coffee | 1 - lib/api/projects.rb | 2 +- spec/javascripts/project_title_spec.js.coffee | 2 +- spec/requests/api/projects_spec.rb | 10 ++++++++++ 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/api.js.coffee b/app/assets/javascripts/api.js.coffee index 8028e66f089..89b0ac697ed 100644 --- a/app/assets/javascripts/api.js.coffee +++ b/app/assets/javascripts/api.js.coffee @@ -3,7 +3,7 @@ groupPath: "/api/:version/groups/:id.json" namespacesPath: "/api/:version/namespaces.json" groupProjectsPath: "/api/:version/groups/:id/projects.json" - projectsPath: "/api/:version/projects.json?format=simple" + projectsPath: "/api/:version/projects.json?simple=true" labelsPath: "/api/:version/projects/:id/labels" licensePath: "/api/:version/licenses/:key" gitignorePath: "/api/:version/gitignores/:key" diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 4743b484d22..1c65e833d47 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -401,7 +401,6 @@ class GitLabDropdown selected = true # Set URL - console.log(data) if @options.url? url = @options.url(data) else diff --git a/lib/api/projects.rb b/lib/api/projects.rb index c46764c4897..7aea553bdca 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,7 +25,7 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects - if params["format"] + if params["simple"] present @projects, with: Entities::BasicProjectWithAccess, user: current_user else present @projects, with: Entities::ProjectWithAccess, user: current_user diff --git a/spec/javascripts/project_title_spec.js.coffee b/spec/javascripts/project_title_spec.js.coffee index e49dfbf1ba4..0244119fa0e 100644 --- a/spec/javascripts/project_title_spec.js.coffee +++ b/spec/javascripts/project_title_spec.js.coffee @@ -22,7 +22,7 @@ describe 'Project Title', -> @projects_data = fixture.load('projects.json')[0] spyOn(jQuery, 'ajax').and.callFake (req) => - expect(req.url).toBe('/api/v3/projects.json?format=simple') + expect(req.url).toBe('/api/v3/projects.json?simple=true') d = $.Deferred() d.resolve @projects_data d.promise() diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 8a52725a893..2a0b56c5052 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -81,6 +81,16 @@ describe API::API, api: true do expect(json_response.first.keys).not_to include('open_issues_count') end + context 'GET /projects?simple=true' do + let(:keys) { ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace", "permissions"] } + it 'should return a simplified version of all the projects' do + get api('/projects?simple=true', user) + expect(response).to have_http_status(200) + expect(json_response).to be_an Array + expect(json_response.first.keys).to match_array keys + end + end + context 'and using search' do it 'should return searched project' do get api('/projects', user), { search: project.name } From a4678edde4d1b2257b1173a4475ab1ba5bdbc228 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Mon, 11 Jul 2016 18:42:23 +0100 Subject: [PATCH 23/39] moves let variable to it statement by using a local variable --- spec/requests/api/projects_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 2a0b56c5052..23b0a2a8885 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -82,12 +82,12 @@ describe API::API, api: true do end context 'GET /projects?simple=true' do - let(:keys) { ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace", "permissions"] } it 'should return a simplified version of all the projects' do + expected_keys = ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace", "permissions"] get api('/projects?simple=true', user) expect(response).to have_http_status(200) expect(json_response).to be_an Array - expect(json_response.first.keys).to match_array keys + expect(json_response.first.keys).to match_array expected_keys end end From be3409ab7ad3a8bf7b0c9eecb588598869459741 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Tue, 12 Jul 2016 10:43:08 +0100 Subject: [PATCH 24/39] changes string to symbol in param --- lib/api/projects.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 7aea553bdca..844547665ef 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -25,7 +25,7 @@ module API @projects = current_user.authorized_projects @projects = filter_projects(@projects) @projects = paginate @projects - if params["simple"] + if params[:simple] present @projects, with: Entities::BasicProjectWithAccess, user: current_user else present @projects, with: Entities::ProjectWithAccess, user: current_user From ded67d3b68b438a71bb3771865981c3c7d0b3730 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Wed, 6 Jul 2016 10:15:41 +0100 Subject: [PATCH 25/39] implements filter_params --- lib/api/entities.rb | 2 ++ lib/api/helpers.rb | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/api/entities.rb b/lib/api/entities.rb index b62afb4bb4c..8673350b927 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -353,7 +353,9 @@ module API class ProjectWithAccess < Project expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| + project = Project.find_by(project[:id]) project.project_members.find_by(user_id: options[:user].id) + ] end expose :group_access, using: Entities::GroupAccess do |project, options| diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 77e407b54c5..3a1837effd8 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -287,6 +287,23 @@ module API # Projects helpers + def filter_params(projects) + project_entries = [] + + # Removes the redundant information of the object + projects.each do |project| + entry = { + id: project.id, + http_url_to_repo: project.http_url_to_repo, + name_with_namespace: project.name_with_namespace + } + + project_entries << entry + end + + project_entries + end + def filter_projects(projects) # If the archived parameter is passed, limit results accordingly if params[:archived].present? From 2179c4052e034e62867749043d53bae7eaf048d7 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Wed, 6 Jul 2016 17:53:40 +0100 Subject: [PATCH 26/39] adds basic functionality to the new endpoint of the api --- lib/api/entities.rb | 8 ++++++-- lib/api/helpers.rb | 17 ----------------- lib/api/projects.rb | 11 +++++++++++ 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 8673350b927..1ecf50cd595 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -91,6 +91,12 @@ module API end end + class SimpleProject < Grape::Entity + expose :id + expose :name, :name_with_namespace + expose :http_url_to_repo + end + class ProjectMember < UserBasic expose :access_level do |user, options| options[:project].project_members.find_by(user_id: user.id).access_level @@ -353,9 +359,7 @@ module API class ProjectWithAccess < Project expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| - project = Project.find_by(project[:id]) project.project_members.find_by(user_id: options[:user].id) - ] end expose :group_access, using: Entities::GroupAccess do |project, options| diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 3a1837effd8..77e407b54c5 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -287,23 +287,6 @@ module API # Projects helpers - def filter_params(projects) - project_entries = [] - - # Removes the redundant information of the object - projects.each do |project| - entry = { - id: project.id, - http_url_to_repo: project.http_url_to_repo, - name_with_namespace: project.name_with_namespace - } - - project_entries << entry - end - - project_entries - end - def filter_projects(projects) # If the archived parameter is passed, limit results accordingly if params[:archived].present? diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 844547665ef..9448af92a98 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -32,6 +32,17 @@ module API end end + # Get a simplified project list for authenticated user + # + # Example Request: + # GET /projects/simple + get '/simple' do + @projects = current_user.authorized_projects + @projects = filter_projects(@projects) + @projects = paginate @projects + present @projects, with: Entities::SimpleProjectWithAccess, user: current_user + end + # Get an owned projects list for authenticated user # # Example Request: From 10c5eea5029e931efb474b68112840614e52675b Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Thu, 7 Jul 2016 11:55:31 +0100 Subject: [PATCH 27/39] gets the new object through /simple endpoint and renders on the dropdown --- app/assets/javascripts/gl_dropdown.js.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 1c65e833d47..e226943a4c1 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -123,6 +123,7 @@ class GitLabDropdownRemote # Fetch the data by calling the data funcfion @dataEndpoint "", (data) => + console.log(data) if @options.success @options.success(data) From 2a161e7a10574b1678803843585686a93150f686 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Thu, 7 Jul 2016 11:55:58 +0100 Subject: [PATCH 28/39] removes debugging print --- app/assets/javascripts/gl_dropdown.js.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index e226943a4c1..1c65e833d47 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -123,7 +123,6 @@ class GitLabDropdownRemote # Fetch the data by calling the data funcfion @dataEndpoint "", (data) => - console.log(data) if @options.success @options.success(data) From 8d9e649c241be6a62a47201b57863a78c94e6f01 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 09:47:09 +0100 Subject: [PATCH 29/39] changes the usage of simpleprojectdetails to already implemented basicprojectsdetails and changes the url to a more reader friendly format --- lib/api/entities.rb | 6 ------ lib/api/projects.rb | 11 ----------- 2 files changed, 17 deletions(-) diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 1ecf50cd595..b62afb4bb4c 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -91,12 +91,6 @@ module API end end - class SimpleProject < Grape::Entity - expose :id - expose :name, :name_with_namespace - expose :http_url_to_repo - end - class ProjectMember < UserBasic expose :access_level do |user, options| options[:project].project_members.find_by(user_id: user.id).access_level diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 9448af92a98..844547665ef 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -32,17 +32,6 @@ module API end end - # Get a simplified project list for authenticated user - # - # Example Request: - # GET /projects/simple - get '/simple' do - @projects = current_user.authorized_projects - @projects = filter_projects(@projects) - @projects = paginate @projects - present @projects, with: Entities::SimpleProjectWithAccess, user: current_user - end - # Get an owned projects list for authenticated user # # Example Request: From 9018f46b87940375fc2666ba6c5b38876965cc79 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 11:17:37 +0100 Subject: [PATCH 30/39] changes the project_title_spec accordingly --- spec/javascripts/project_title_spec.js.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/javascripts/project_title_spec.js.coffee b/spec/javascripts/project_title_spec.js.coffee index 0244119fa0e..d8fa126ffdd 100644 --- a/spec/javascripts/project_title_spec.js.coffee +++ b/spec/javascripts/project_title_spec.js.coffee @@ -22,6 +22,7 @@ describe 'Project Title', -> @projects_data = fixture.load('projects.json')[0] spyOn(jQuery, 'ajax').and.callFake (req) => + expect(req.url).toBe('/api/v3/projects.json?simple=true') d = $.Deferred() d.resolve @projects_data From 84346da058ff9886bc9b4288de0ccbcdc69c78a9 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 12:06:39 +0100 Subject: [PATCH 31/39] fixes missing field on basicprojectdetails --- .Gemfile.swm | Bin 0 -> 16384 bytes .Gemfile.swn | Bin 0 -> 16384 bytes app/assets/javascripts/gl_dropdown.js.coffee | 1 + 3 files changed, 1 insertion(+) create mode 100644 .Gemfile.swm create mode 100644 .Gemfile.swn diff --git a/.Gemfile.swm b/.Gemfile.swm new file mode 100644 index 0000000000000000000000000000000000000000..c5905cff7932aba6a13e5bafc60086613e1d4416 GIT binary patch literal 16384 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 O8_b6w!5ou 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 M33d(2?c=Ne087$n)Bpeg literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 1c65e833d47..4743b484d22 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -401,6 +401,7 @@ class GitLabDropdown selected = true # Set URL + console.log(data) if @options.url? url = @options.url(data) else From 9102ad1fb5db175238e9ef897c9fa1db0ba4614e Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 8 Jul 2016 12:07:17 +0100 Subject: [PATCH 32/39] removes gemfile.lock dotfiles --- .Gemfile.swm | Bin 16384 -> 0 bytes .Gemfile.swn | Bin 16384 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .Gemfile.swm delete mode 100644 .Gemfile.swn diff --git a/.Gemfile.swm b/.Gemfile.swm deleted file mode 100644 index c5905cff7932aba6a13e5bafc60086613e1d4416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 O8_b6w!5ou zSN9Hkqo81n3QAA|nh=l&6ZJt79>n+}`hW_G_$U~O=z~{c;;R}z{--{AX7{pz#0L}8 zo%}MhQ>Uv=ojP@@>U8g5;Um|rvwhKWfa}dc@MwO=jZg5$&b<2lX9ShxBb5(SCDO5? z@?Ea=gGa(dgvUudT#Qnlzr5h>+bZnpGVUIdRmun5k@-L+n<7<3Ch{uWkd^zndq`wM znTnUMwEeZUKx=_lX@T>DrN!O?3D0#dV;5dhcn6>BZfTA;N+Yk}4Rtp!>Ov=(SB z&|2XC!2(rrR&WP8a;EFdo$m9D9iRVp*Msi&yLObH<^EoEpO?A{d_C^x_M^2xYk}4R ztp!>Ov=(SB&|09iKx={40<8sF3$zyaA6S4VL2xeGy_^yNc>eFt|1Z8N2!0QK0Uibq zfg0QlZUUEpKfW;teg=LDz70ML?gAQo5Olz0;2iM6`9bgla4#5wE5JqIrSpQ|C*T{P z0EfVN;16#If**qWz!+Qw_JC#ZR`9~>(Jpurd>4EU2(Shs5Q2ArGe7`-{kkCd4)_wd z2Yed52mA(||2lX8+yhp@Mc}uu4T9&vli*(PW$<}02G@a$z=hx(@aJ=a;1qZfJPn=# z-vS2M55V;B4^H*+K9ucno|6+z0Le5{$t|!9lPJ_JE7QJHbC*69mtJ z2f-)7E#Q6NQt&S%V}1vI3?2b@g3o|G;1tIB3GgHEICvO51ik}XtR3YPTSr4{CE#kVA z)mF&!yt}rw?#|EP{ITmjqsH9EH?h-@Gk9 z5cPcRC0h1{q#y*AqP?!^qawL_re&krap__D za-%LFV|%{TXkT%?(NCqGy}t)1ScGgTPSmm#D{Q`z>Xuxll@zY_ah0WEAq$bpoJ?SA z@1X+nh;=lYs7Y>Ilc-) zLgc!Fkn0!9XG*PWH$~pubYrSwp1y1ernGMj>d`zU2cdiT$+{_8Xk5pXOmtJ%0pFtm z)T#^b-ASp6lPVXtYII7bQ~7hmExZxhDeGn&#kB?eIdwY{>KY;E%q1^G2z3xO8l#wCXnmcEZGF=^dkAS{gw-Ry-)>64 zWk)p}-|4y>k*YJTcNziQeV9WS{=*VciFl?TBbBCgh6z3ziKNdHUQ{~*^-PsRo@(K` zV(&}kz;$F9?zgS?R(OsbwX-l`8P98;rdv$rELQnYj=D0JcdCq=2dR+Xq6uu73Y zRjQPwiYH8!38MWR!|QwHXb1)UlzR2Tp3l5ez0a~qn6e&-XvBGPjCIT!q zHT1AlTaUxrpHhpkny7FH{moKGv)ENK$Bs88jNE~yncXfpci|gSXJ(uXLnfF_O-31XKXIgeE;@)PMni{dK z8;DZ5_-FSV*n626V75;yY{kpi0c>uyYfspigp_gX;`Z*r8S(n>R2{4J)MutOn)$m^ zaJn8gg76$MP>R+>b5V`6Uf2l6T$2+vmu(th#SLmBIFQw#jyJY#V4&gYf@X=FcG_5$ z1pQ8_sgXQ|BB{S@(}=G-nw}A{qE>LaH%b)kzC~dIy048sNs!j6*@<;pZ8Kt6eYQ;~ z7fmDrl&PXqj9hHMCSyOkemV0lfJjn}N(j=(cCsyfB3*1`q3YflSyM{0t1b#vB22Kg zgT94C40)Ya{Y{?MqK~kJN@$5TgGb?f%?dChpv}H%^(e~_Qc}P8YudhHq{wH<1lXmL z5q50XjnA2-z`9?E4X}R$Jr-T5buDyv@50^#CJ=~N4!00Eo5~r2zNSM;QVWX05XZ-178I>$iN7!fOmn5!G+-O z=;zOv=(SB@Cp_%2Ryx{L;9CZ zd{!cBcBx3lyCcbFhRo$OP3Q8l$Bg)F*23+8$AYKTxF3&2lkKGRw@DseYs!#NL76|T z@RH|Ba(9Hlo|_I3$JDSwG6QGiX_jx>5tX*l=D6@-It{tHa)B-+bRfxQjy3+2NO=|< z2Ly6}37!`qbFA_{rE;ffR9oj9yV|Aq=0%1aXdgM4bgPe)6Y?(3Knv*7e(c!oNy-Q* zMXlOY<^GPd20aJBzsI_}DA^9J?OnN;l*o0*{j%`t;tYmFb1;2&)3L{%K2jxQp?Rbg zF)H?f3=U99ZPJJIOlIb$d5z3!pE4c(!OnaI%k=pW>4`p)XIZ1rw#Ps76EVneC~JIR z(Tufwieycp3qj8p?CI8=*j%w5s~R~!JRCswX7&uVA1cpea9rBbc7fE|sr*LH3q7Md zQl~MJ=Qw9dI-J1@O*Y8Z6*vtB$Y_n}*+eJ{I>PNHR_6(xe}%kGj2U)_xyptqr>yX9 zg=(~Gp+<%=g_CVUg3N?dIGJ&`x^%2Ho|)v{MKB^X$h(Q-M5tm_gypt@pa(>+a7Uxf zGCBEa!rq8DIU^Z~WO{}SaiYTtr{zMayt&;ZQ~a3k5Y`1Usj+#mWgTSJe|FaFd*D(a zG@;@9+iFImr(d>aGZDPBS2DbnYdkaX^BK8ObakhY>k0BvROm|!m11&?#Ps16wQSom zPeGkx$WCqz5VAszL;~D$to*=H2d1rgx$Rw``f$>xe3Wl^IONF8Ii;Yltpn+Gkt1JS M33d(2?c=Ne087$n)Bpeg From da137ec320734632b75ab22dd35073feee694f13 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Mon, 11 Jul 2016 16:05:06 +0100 Subject: [PATCH 33/39] adds test to check json fields on simple request and changes the url request format --- app/assets/javascripts/gl_dropdown.js.coffee | 1 - spec/javascripts/project_title_spec.js.coffee | 1 - 2 files changed, 2 deletions(-) diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 4743b484d22..1c65e833d47 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -401,7 +401,6 @@ class GitLabDropdown selected = true # Set URL - console.log(data) if @options.url? url = @options.url(data) else diff --git a/spec/javascripts/project_title_spec.js.coffee b/spec/javascripts/project_title_spec.js.coffee index d8fa126ffdd..0244119fa0e 100644 --- a/spec/javascripts/project_title_spec.js.coffee +++ b/spec/javascripts/project_title_spec.js.coffee @@ -22,7 +22,6 @@ describe 'Project Title', -> @projects_data = fixture.load('projects.json')[0] spyOn(jQuery, 'ajax').and.callFake (req) => - expect(req.url).toBe('/api/v3/projects.json?simple=true') d = $.Deferred() d.resolve @projects_data From 563b303bde6701fc91351701db651e8da68f9b80 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Tue, 12 Jul 2016 17:32:40 +0100 Subject: [PATCH 34/39] removes basicprojectwithaccess and replaces it with basicprojectdetails --- lib/api/.projects.rb.swn | Bin 0 -> 28672 bytes lib/api/entities.rb | 8 -------- lib/api/projects.rb | 2 +- 3 files changed, 1 insertion(+), 9 deletions(-) create mode 100644 lib/api/.projects.rb.swn diff --git a/lib/api/.projects.rb.swn b/lib/api/.projects.rb.swn new file mode 100644 index 0000000000000000000000000000000000000000..890811564d29fab383059a6165488d4f178b8832 GIT binary patch literal 28672 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 literal 0 HcmV?d00001 diff --git a/lib/api/entities.rb b/lib/api/entities.rb index b62afb4bb4c..8e03c08f47b 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -342,14 +342,6 @@ module API end end - class BasicProjectWithAccess < BasicProjectDetails - expose :permissions do - expose :project_access, using: Entities::ProjectAccess do |project, options| - project.project_members.find_by(user_id: options[:user].id) - end - end - end - class ProjectWithAccess < Project expose :permissions do expose :project_access, using: Entities::ProjectAccess do |project, options| diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 844547665ef..6d2a6f3946c 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -26,7 +26,7 @@ module API @projects = filter_projects(@projects) @projects = paginate @projects if params[:simple] - present @projects, with: Entities::BasicProjectWithAccess, user: current_user + present @projects, with: Entities::BasicProjectDetails, user: current_user else present @projects, with: Entities::ProjectWithAccess, user: current_user end From 3e44aac08dc744915b932a0a7bed0d3f3ab3ab6b Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Tue, 12 Jul 2016 17:36:22 +0100 Subject: [PATCH 35/39] fixes test according to four-phase test pattern --- lib/api/.projects.rb.swn | Bin 28672 -> 28672 bytes spec/requests/api/projects_spec.rb | 1 + 2 files changed, 1 insertion(+) diff --git a/lib/api/.projects.rb.swn b/lib/api/.projects.rb.swn index 890811564d29fab383059a6165488d4f178b8832..6a9e5f146eafe1548d561955a5915b48388486e7 100644 GIT binary patch delta 32 mcmZp8z}WDBQ8dXQ%+puFT+f672m}}y@}*nDUvCtBoeuz+P6?0z delta 32 mcmZp8z}WDBQ8dXQ%+puFT+f672m}}y@}yhCpKla>oeuz+F$s$R diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 23b0a2a8885..d7c0f60048b 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -84,6 +84,7 @@ describe API::API, api: true do context 'GET /projects?simple=true' do it 'should return a simplified version of all the projects' do expected_keys = ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace", "permissions"] + get api('/projects?simple=true', user) expect(response).to have_http_status(200) expect(json_response).to be_an Array From 770d2831f8c69c8f485092fadc37a017acda8fcc Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Tue, 12 Jul 2016 18:45:16 +0100 Subject: [PATCH 36/39] fixes test for simplified version of project --- app/controllers/concerns/filter_branches.rb | 8 ++++++++ spec/requests/api/projects_spec.rb | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 app/controllers/concerns/filter_branches.rb diff --git a/app/controllers/concerns/filter_branches.rb b/app/controllers/concerns/filter_branches.rb new file mode 100644 index 00000000000..5376a514e19 --- /dev/null +++ b/app/controllers/concerns/filter_branches.rb @@ -0,0 +1,8 @@ +module FilterBranches + extend ActiveSupport::Concern + + def filter_branches(branches) + if params[:search].present? && @sort + branches = @repository.find_similar_branches(params[:search], @sort) + end +end diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index d7c0f60048b..4ddab08ef14 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -83,7 +83,7 @@ describe API::API, api: true do context 'GET /projects?simple=true' do it 'should return a simplified version of all the projects' do - expected_keys = ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace", "permissions"] + expected_keys = ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace"] get api('/projects?simple=true', user) expect(response).to have_http_status(200) From 9fa8cf6759c798eee8aeec9016a0abbea87ed275 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Tue, 12 Jul 2016 19:19:48 +0100 Subject: [PATCH 37/39] removes redundant filter_branches file --- app/controllers/concerns/filter_branches.rb | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 app/controllers/concerns/filter_branches.rb diff --git a/app/controllers/concerns/filter_branches.rb b/app/controllers/concerns/filter_branches.rb deleted file mode 100644 index 5376a514e19..00000000000 --- a/app/controllers/concerns/filter_branches.rb +++ /dev/null @@ -1,8 +0,0 @@ -module FilterBranches - extend ActiveSupport::Concern - - def filter_branches(branches) - if params[:search].present? && @sort - branches = @repository.find_similar_branches(params[:search], @sort) - end -end From 02e38466726730edd212411214a92319fe31df60 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Wed, 13 Jul 2016 10:30:13 +0100 Subject: [PATCH 38/39] deletes swn file --- lib/api/.projects.rb.swn | Bin 28672 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 lib/api/.projects.rb.swn diff --git a/lib/api/.projects.rb.swn b/lib/api/.projects.rb.swn deleted file mode 100644 index 6a9e5f146eafe1548d561955a5915b48388486e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 M_V2{EF=R9RAD`a$@c;k- From 228073986bfb900ef324379639e1c5cce6b74fe6 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Wed, 13 Jul 2016 15:55:22 +0100 Subject: [PATCH 39/39] formats my test properly --- spec/requests/api/projects_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 4ddab08ef14..152cd802839 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -82,10 +82,11 @@ describe API::API, api: true do end context 'GET /projects?simple=true' do - it 'should return a simplified version of all the projects' do + it 'returns a simplified version of all the projects' do expected_keys = ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace"] get api('/projects?simple=true', user) + expect(response).to have_http_status(200) expect(json_response).to be_an Array expect(json_response.first.keys).to match_array expected_keys