gitlab-org--gitlab-foss/spec/support/shared_examples
Toon Claes d3e028b85f Load all projects, namespaces, routes in 1 query
Avoid doing sequential database queries to load the namespaces and the
routes of projects and namespaces.

This results in the following query:

```sql
SELECT "projects"."id" AS t0_r0,
       "projects"."name" AS t0_r1,
       "projects"."path" AS t0_r2,
       "projects"."description" AS t0_r3,
       "projects"."created_at" AS t0_r4,
       "projects"."updated_at" AS t0_r5,
       "projects"."creator_id" AS t0_r6,
       "projects"."namespace_id" AS t0_r7,
       "projects"."last_activity_at" AS t0_r8,
       "projects"."import_url" AS t0_r9,
       "projects"."visibility_level" AS t0_r10,
       "projects"."archived" AS t0_r11,
       "projects"."avatar" AS t0_r12,
       "projects"."import_status" AS t0_r13,
       "projects"."star_count" AS t0_r14,
       "projects"."import_type" AS t0_r15,
       "projects"."import_source" AS t0_r16,
       "projects"."import_error" AS t0_r17,
       "projects"."ci_id" AS t0_r18,
       "projects"."shared_runners_enabled" AS t0_r19,
       "projects"."runners_token" AS t0_r20,
       "projects"."build_coverage_regex" AS t0_r21,
       "projects"."build_allow_git_fetch" AS t0_r22,
       "projects"."build_timeout" AS t0_r23,
       "projects"."pending_delete" AS t0_r24,
       "projects"."public_builds" AS t0_r25,
       "projects"."last_repository_check_failed" AS t0_r26,
       "projects"."last_repository_check_at" AS t0_r27,
       "projects"."container_registry_enabled" AS t0_r28,
       "projects"."only_allow_merge_if_pipeline_succeeds" AS t0_r29,
       "projects"."has_external_issue_tracker" AS t0_r30,
       "projects"."repository_storage" AS t0_r31,
       "projects"."request_access_enabled" AS t0_r32,
       "projects"."has_external_wiki" AS t0_r33,
       "projects"."ci_config_path" AS t0_r34,
       "projects"."lfs_enabled" AS t0_r35,
       "projects"."description_html" AS t0_r36,
       "projects"."only_allow_merge_if_all_discussions_are_resolved" AS t0_r37,
       "projects"."printing_merge_request_link_enabled" AS t0_r38,
       "projects"."auto_cancel_pending_pipelines" AS t0_r39,
       "projects"."import_jid" AS t0_r40,
       "projects"."cached_markdown_version" AS t0_r41,
       "projects"."delete_error" AS t0_r42,
       "projects"."last_repository_updated_at" AS t0_r43,
       "projects"."storage_version" AS t0_r44,
       "projects"."resolve_outdated_diff_discussions" AS t0_r45,
       "projects"."repository_read_only" AS t0_r46,
       "projects"."merge_requests_ff_only_enabled" AS t0_r47,
       "projects"."merge_requests_rebase_enabled" AS t0_r48,
       "projects"."jobs_cache_index" AS t0_r49,
       "projects"."pages_https_only" AS t0_r50,
       "projects"."remote_mirror_available_overridden" AS t0_r51,
       "projects"."pool_repository_id" AS t0_r52,
       "projects"."runners_token_encrypted" AS t0_r53,
       "projects"."bfg_object_map" AS t0_r54,
       "namespaces"."id" AS t1_r0,
       "namespaces"."name" AS t1_r1,
       "namespaces"."path" AS t1_r2,
       "namespaces"."owner_id" AS t1_r3,
       "namespaces"."created_at" AS t1_r4,
       "namespaces"."updated_at" AS t1_r5,
       "namespaces"."type" AS t1_r6,
       "namespaces"."description" AS t1_r7,
       "namespaces"."avatar" AS t1_r8,
       "namespaces"."share_with_group_lock" AS t1_r9,
       "namespaces"."visibility_level" AS t1_r10,
       "namespaces"."request_access_enabled" AS t1_r11,
       "namespaces"."description_html" AS t1_r12,
       "namespaces"."lfs_enabled" AS t1_r13,
       "namespaces"."parent_id" AS t1_r14,
       "namespaces"."require_two_factor_authentication" AS t1_r15,
       "namespaces"."two_factor_grace_period" AS t1_r16,
       "namespaces"."cached_markdown_version" AS t1_r17,
       "namespaces"."runners_token" AS t1_r18,
       "namespaces"."runners_token_encrypted" AS t1_r19,
       "routes"."id" AS t2_r0,
       "routes"."source_id" AS t2_r1,
       "routes"."source_type" AS t2_r2,
       "routes"."path" AS t2_r3,
       "routes"."created_at" AS t2_r4,
       "routes"."updated_at" AS t2_r5,
       "routes"."name" AS t2_r6,
       "routes_projects"."id" AS t3_r0,
       "routes_projects"."source_id" AS t3_r1,
       "routes_projects"."source_type" AS t3_r2,
       "routes_projects"."path" AS t3_r3,
       "routes_projects"."created_at" AS t3_r4,
       "routes_projects"."updated_at" AS t3_r5,
       "routes_projects"."name" AS t3_r6
FROM "projects"
LEFT OUTER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id"
LEFT OUTER JOIN "routes" ON "routes"."source_id" = "namespaces"."id"
AND "routes"."source_type" = $1
LEFT OUTER JOIN "routes" "routes_projects" ON "routes_projects"."source_id" = "projects"."id"
AND "routes_projects"."source_type" = $2
LEFT OUTER JOIN "project_repositories" ON "projects"."id" = "project_repositories"."project_id"
WHERE ("projects"."storage_version" IS NULL
       OR "projects"."storage_version" = 0)
  AND "project_repositories"."project_id" IS NULL
  AND ("projects"."id" BETWEEN $3 AND $4);
  -- [["source_type", "Namespace"],
  --  ["source_type", "Project"],
  --  ["id", 1],
  --  ["id", 4]]
```
2019-01-11 15:36:57 +01:00
..
controllers convert specs in javascripts/ and support/ to new syntax 2018-12-21 10:10:26 +01:00
features Revert "Merge branch 'blackst0ne-update-push-new-merge-request-url' into 'master'" 2018-11-07 13:32:20 +00:00
lib/gitlab/background_migration Load all projects, namespaces, routes in 1 query 2019-01-11 15:36:57 +01:00
models Enabled feature flag for fast deletions 2018-12-06 22:00:19 +01:00
policies Allow users to add cluster with ancestors 2018-12-24 10:28:40 -06:00
requests Fix deprecation: Using positional arguments in integration tests 2018-12-22 14:42:41 +01:00
serializers Add tests and move empty file message into own component 2018-12-13 01:49:32 -05:00
services Expose external_ip to knative cluster application 2018-11-26 12:46:00 -08:00
uploaders Backport of "Use Geo log to remove files when migrated to object storage" 2018-10-03 15:09:16 +00:00
chat_slash_commands_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
ci_trace_shared_examples.rb Merge branch 'master' into fix/gb/encrypt-runners-tokens 2018-11-28 13:14:04 +01:00
common_system_notes_examples.rb Run CommonSystemNotesService on issuable create 2018-12-18 08:36:56 +08:00
diff_file_collections.rb Avoid 500's when serializing legacy diff notes 2018-12-04 13:13:22 -02:00
dirty_submit_form_shared_examples.rb Prioritize group settings, improve panel titles, disable submit without changes 2018-10-15 13:36:19 +00:00
email_format_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
fast_destroy_all.rb Whitelist existing destroy_all offenses 2018-08-16 17:29:37 +02:00
file_finder.rb Optimized file search to work without limits 2018-12-06 09:25:09 +01:00
gitlab_verify.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
group_members_shared_example.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
helm_generated_script.rb Improve Debugging Capabilities For Helm Application Installs 2018-11-09 15:03:24 +00:00
instance_statistics_controllers_shared_examples.rb Explicitly enable usage ping for instance statistics spec 2018-09-09 14:02:27 -07:00
issuable_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
issuables_list_metadata_shared_examples.rb Update specs to rails5 format 2018-12-19 10:04:31 +11:00
issue_tracker_service_shared_example.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
ldap_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
legacy_path_redirect_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
malicious_regexp_shared_examples.rb Simplify untrusted regexp factory method 2018-05-18 10:14:10 +02:00
mentionable_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
milestone_tabs_examples.rb convert specs in javascripts/ and support/ to new syntax 2018-12-21 10:10:26 +01:00
notify_shared_examples.rb Add List-Id to notification emails 2018-12-13 11:15:48 +00:00
position_formatters.rb Commenting on image diffs 2017-10-07 04:25:17 +00:00
project_list_shared_examples.rb Port GitLab.com gold trial callout changes to CE 2019-01-03 10:39:36 -08:00
reference_parser_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
showing_user_status_shared_examples.rb Show the status of a user in interactions 2018-07-30 15:01:26 +02:00
slack_mattermost_notifications_shared_examples.rb Updates from `rubocop -a` 2018-07-09 21:13:08 +08:00
snippet_visibility.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
snippets_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
taskable_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
throttled_touch.rb Rails5 fix MySQL milliseconds problem in specs 2018-06-27 18:49:22 +02:00
time_tracking_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
unique_ip_check_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
update_invalid_issuable.rb Update specs to rails5 format 2018-12-19 10:04:31 +11:00
updating_mentions_shared_examples.rb Move spec helpers/matchers/shared examples/contexts to their relevant folder 2018-04-23 12:20:30 +02:00
url_validator_examples.rb Add validation to webhook and service URLs to ensure they are not blocked because of SSRF 2018-06-01 11:43:53 +00:00
wiki_file_attachments_examples.rb Uploads to wiki stored inside the wiki git repository 2018-09-04 10:39:08 +00:00