Skip to content

Add QA/FabricateUsage cop

Dan Davison requested to merge dj-1987-4-8-replace-fabricate_via_api into master

What does this MR do and why?

Add QA/FabricateUsage cop

When fabricate_via_api! is called on given resources, raise an issue and recommend using the resource factory

Ref: gitlab-org/quality/quality-engineering/team-tasks#1987 (closed)

Screenshots or screen recordings

Given a spec -

      let(:project) do
        Resource::Project.fabricate_via_api! do |project|
          project.name = 'test'
        end
      end

      let(:user) do
        Resource::User.fabricate_via_api!
      end

      let(:access_token) do
        Resource::ProjectAccessToken.fabricate_via_api!
      end
Inspecting 1 file
C

Offenses:

qa/qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb:12:9: C: QA/FabricateUsage: Prefer create(:project[, ...]) here.
        Resource::Project.fabricate_via_api! do |project|
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
qa/qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb:18:9: C: QA/FabricateUsage: Prefer create(:user[, ...]) here.
        Resource::User.fabricate_via_api!
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
qa/qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb:22:9: C: QA/FabricateUsage: Prefer create(:project_access_token[, ...]) here.
        Resource::ProjectAccessToken.fabricate_via_api!
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1 file inspected, 3 offenses detected

How to set up and validate locally

Numbered steps to set up and validate the change are strongly suggested.

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Dan Davison

Merge request reports