Transition from controller specs to request specs
Since Rspec 3.5 http://rspec.info/blog/2016/07/rspec-3-5-has-been-released/, they started to recommend not to use controller specs, but to write [request specs](https://www.relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec). ### Benefits > Request specs allow you to focus on a single controller action, but unlike controller tests involve the router, the middleware stack, and both rack requests and responses. This adds realism to the test that you are writing, and helps avoid many of the issues that are common in controller specs. In Rails 5, request specs are significantly faster than either request or controller specs were in rails 4, thanks to the work by Eileen Uchitelle1 of the Rails Committer Team. from http://rspec.info/blog/2016/07/rspec-3-5-has-been-released/ > Request specs (or Rails integration tests) goes through the routing system, rack system, etc. Controller specs does not. from https://gitlab.com/gitlab-org/gitlab/-/merge_requests/50065#note_467650824 By achieving this, gitlab#16260 and gitlab#292679 would be addressed. ### Stats ``` $ git show commit c9f1648cb0d216d1f28ed87969b83e0129420ab1 (HEAD -> master, origin/master, origin/HEAD) [...] Date: Tue Dec 15 06:39:14 2020 +0000 $ find spec/controllers -type f |wc -l 260 $ find ee/spec/controllers -type f |wc -l 168 ``` ### TODO `find spec/controllers -type f -size -2k` - [ ] spec/controllers/oauth/tokens_controller_spec.rb - [ ] spec/controllers/admin/instance_statistics_controller_spec.rb - [ ] spec/controllers/admin/dashboard_controller_spec.rb - [ ] spec/controllers/admin/dev_ops_report_controller_spec.rb - [ ] spec/controllers/admin/gitaly_servers_controller_spec.rb - [ ] spec/controllers/admin/health_check_controller_spec.rb - [ ] spec/controllers/admin/hooks_controller_spec.rb - [ ] spec/controllers/admin/jobs_controller_spec.rb - [ ] spec/controllers/admin/cohorts_controller_spec.rb - [ ] spec/controllers/explore/snippets_controller_spec.rb - [ ] spec/controllers/explore/groups_controller_spec.rb - [x] spec/controllers/ide_controller_spec.rb - [ ] spec/controllers/jira_connect/app_descriptor_controller_spec.rb - [ ] spec/controllers/dashboard/snippets_controller_spec.rb - [ ] spec/controllers/groups/avatars_controller_spec.rb - [ ] spec/controllers/profiles/keys_controller_spec.rb - [ ] spec/controllers/profiles/webauthn_registrations_controller_spec.rb - [ ] spec/controllers/profiles/avatars_controller_spec.rb - [ ] spec/controllers/profiles/active_sessions_controller_spec.rb - [ ] spec/controllers/concerns/boards_responses_spec.rb - [ ] spec/controllers/concerns/graceful_timeout_handling_spec.rb - [ ] spec/controllers/import/available_namespaces_controller_spec.rb - [ ] spec/controllers/projects/cycle_analytics_controller_spec.rb - [ ] spec/controllers/projects/terraform_controller_spec.rb - [ ] spec/controllers/projects/pipelines_settings_controller_spec.rb - [ ] spec/controllers/projects/wikis_controller_spec.rb - [ ] spec/controllers/projects/protected_tags_controller_spec.rb - [ ] spec/controllers/projects/settings/integrations_controller_spec.rb - [x] spec/controllers/runner_setup_controller_spec.rb gitlab!50600 ### Refs. - http://rspec.info/blog/2016/07/rspec-3-5-has-been-released/ - https://relishapp.com/rspec/rspec-rails/v/3-9/docs/request-specs/request-spec - https://everydayrails.com/2016/08/29/replace-rspec-controller-tests.html
epic