I'm quite new with Rspec and factory_bot. I have the following factories:
FactoryBot.define do
factory :user do
email { "test@gmail.com" }
password { "azerty" }
username { "test" }
city { "Paris"}
end
factory :game do
title { "Mega Man X" }
nostalgia_point { 9 }
platform { "Super Nintendo" }
developer { "Capcom" }
release_date { Date.new(1994,1,1) }
game_mode { "Single player" }
genre { ["Adventure", "Platform", "Shooter"] }
association :owner, factory: :user
end
factory :favorite do
user
game
end
end
When I run this test:
require 'rails_helper'
RSpec.describe Game, type: :model do
let!(:favorite) { create(:favorite) }
describe '::create' do
context 'persistence' do
it 'persists the favorite' do
expect(Favorite.count).to eq(1)
end
end
end
end
I get the following error: ActiveRecord::RecordInvalid: Validation failed: Email has already been taken, Username has already been taken
I guess it's because my user factory (devise model) is not cleaned from my other tests but I'm absolutely not sure... And I don't know if I should use something different from what I did to clean all my database. Here what I wrote in factory_bot.rb:
RSpec.configure do |config|
config.include Warden::Test::Helpers
config.after :each do
Warden.test_reset!
end
config.include FactoryBot::Syntax::Methods
end
If there is a better practice or just tell me what I'm missing, I'll be very grateful. Thanks!