Ver código fonte

Lint FactoryBot factories

Andrew Swistak 6 anos atrás
pai
commit
899ee2bcc8
3 arquivos alterados com 17 adições e 0 exclusões
  1. 1 0
      Gemfile
  2. 2 0
      Gemfile.lock
  3. 14 0
      lib/tasks/factory_bot.rake

+ 1 - 0
Gemfile

@@ -26,6 +26,7 @@ group :development, :test do
   gem 'rails-controller-testing'
   gem 'factory_bot_rails'
   gem 'faker'
+  gem 'database_cleaner'
 
   # Using unreleased rspec version (since we're using Rails v6.0.0.beta3)
   # The following refs were the latest commits on their respective master

+ 2 - 0
Gemfile.lock

@@ -126,6 +126,7 @@ GEM
     coderay (1.1.2)
     concurrent-ruby (1.1.5)
     crass (1.0.4)
+    database_cleaner (1.7.0)
     diff-lcs (1.3)
     domain_name (0.5.20180417)
       unf (>= 0.0.5, < 1.0.0)
@@ -290,6 +291,7 @@ DEPENDENCIES
   bootsnap (>= 1.4.1)
   capybara (>= 2.15)
   chromedriver-helper
+  database_cleaner
   dotenv-rails
   factory_bot_rails
   faker

+ 14 - 0
lib/tasks/factory_bot.rake

@@ -0,0 +1,14 @@
+namespace :factory_bot do
+  desc "Verify that all FactoryBot factories are valid"
+  task lint: :environment do
+    if Rails.env.test?
+      DatabaseCleaner.clean_with(:deletion)
+      DatabaseCleaner.cleaning do
+        FactoryBot.lint traits: true
+      end
+    else
+      system("bundle exec rake factory_bot:lint RAILS_ENV='test'")
+      fail if $?.exitstatus.nonzero?
+    end
+  end
+end