Optimize factory usage for instance_clusterable_presenter_spec

What does this MR do and why?

This MR replaces create with build_stubbed in ee/spec/presenters/ee/instance_clusterable_presenter_spec.rb to optimize the factory usage as recommended in our handbook. This spec is part of the list .rubocop_todo/rspec/factory_bot/avoid_create.yml. It was verified that database persistence is not needed using the factory doctor command FDOC=1 bin/rspec ee/spec/presenters/ee/instance_clusterable_presenter_spec.rb.

Factory Usage Optimization Results

Before optimization:

  • Factory time: 2.81s (14.5% of total time)

After optimization:

  • Factory time: 0.05s (0.32% of total time)

🚀 Improvement:

  • Factory time reduced by: 2.76s
  • Factory time percentage reduced by: 14.18%
  • Overall factory usage improvement: 98.2%

Factory Doctor Output

[TEST PROF INFO] FactoryDoctor enabled (event: "sql.active_record", threshold: 0.01)
Run options: include {:focus=>true}

All examples were filtered out; ignoring {:focus=>true}
==> Using precompiled Gitaly binaries from cache
==> Go projects set up in 0.754 seconds...

Test environment set up in 2.115037999988999 seconds
..[TEST PROF INFO] FactoryDoctor report

Total (potentially) bad examples: 2
Total wasted time: 00:02.590

InstanceClusterablePresenter (./ee/spec/presenters/ee/instance_clusterable_presenter_spec.rb:5) (40 records created, 00:02.590)
  is expected to eq "/admin/clusters/57/environments" (./ee/spec/presenters/ee/instance_clusterable_presenter_spec.rb:23)  20 records created, 00:01.953
  is expected to be nil (./ee/spec/presenters/ee/instance_clusterable_presenter_spec.rb:29)  20 records created, 00:00.637


Finished in 14.35 seconds (files took 15.44 seconds to load)
2 examples, 0 failures

Randomized with seed 50628

[TEST PROF INFO] Time spent in factories: 00:02.601 (13.93% of total time)

Factory time after update

[TEST PROF INFO] Time spent in factories: 00:00.050 (0.32% of total time)

References

Relates to: #378910.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Marcos Rocha

Merge request reports

Loading