Flag missing use of `before_all` for member access in specs
Problem
In https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#common-test-setup we suggest to use let_it_be + before_all for the following setups:
let_it_be(:project) { create(:project) }
let_it_be(:guest) { create(:user) }
let_it_be(:maintainer) { create(:user) }
before_all do
project.add_guest(guest)
project.add_maintainer(maintainer)
end
Using before_all above instead of before improves spec runtime by reducing the amount SQL queries.
Currently, we are not enforcing this technique by a
Proposed solution
Flag the use of let_it_be + before:
# bad
let_it_be(:project) { create(:project) }
let_it_be(:guest) { create(:user) }
before do
project.add_guest(guest)
end
# good
let_it_be(:project) { create(:project) }
let_it_be(:guest) { create(:user) }
before_all do
project.add_guest(guest)
end
Real world example
-
!98192 (merged) - saved 20 seconds by using
before_all
Refs
Inspired by #373184 (comment 1101123605).
Edited by Peter Leitzen