Simplify export unicity check and use create_or_find_by

This commit is contained in:
Paul Chavard 2021-03-31 18:19:28 +02:00
parent b0e38f366e
commit fd48b86b7f
6 changed files with 29 additions and 33 deletions

View file

@ -441,7 +441,7 @@ describe Instructeurs::ProceduresController, type: :controller do
context 'when the export is not ready' do
before do
Export.create(format: :csv, groupe_instructeurs: [gi_1])
create(:export, groupe_instructeurs: [gi_1])
end
it 'displays an notice' do
@ -451,9 +451,7 @@ describe Instructeurs::ProceduresController, type: :controller do
end
context 'when the export is ready' do
let!(:export) do
Export.create(format: :csv, groupe_instructeurs: [gi_1])
end
let!(:export) { create(:export, groupe_instructeurs: [gi_1]) }
before do
export.file.attach(io: StringIO.new('export'), filename: 'file.csv')
@ -466,9 +464,7 @@ describe Instructeurs::ProceduresController, type: :controller do
end
context 'when another export is ready' do
let!(:export) do
Export.create(format: :csv, groupe_instructeurs: [gi_0, gi_1])
end
let!(:export) { create(:export, groupe_instructeurs: [gi_0, gi_1]) }
before do
export.file.attach(io: StringIO.new('export'), filename: 'file.csv')

View file

@ -2,5 +2,9 @@ FactoryBot.define do
factory :export do
format { :csv }
groupe_instructeurs { [association(:groupe_instructeur)] }
after(:build) do |export, _evaluator|
export.key = Export.generate_cache_key(export.groupe_instructeurs)
end
end
end

View file

@ -3,7 +3,7 @@ RSpec.describe Export, type: :model do
let(:groupe_instructeur) { create(:groupe_instructeur) }
context 'when everything is ok' do
let(:export) { build(:export) }
let(:export) { build(:export, groupe_instructeurs: [groupe_instructeur]) }
it { expect(export.save).to be true }
end
@ -15,7 +15,7 @@ RSpec.describe Export, type: :model do
end
context 'when format is missing' do
let(:export) { build(:export, format: nil) }
let(:export) { build(:export, format: nil, groupe_instructeurs: [groupe_instructeur]) }
it { expect(export.save).to be false }
end
@ -46,7 +46,7 @@ RSpec.describe Export, type: :model do
let!(:gi_3) { create(:groupe_instructeur, procedure: procedure) }
context 'when an export is made for one groupe instructeur' do
let!(:export) { Export.create(format: :csv, groupe_instructeurs: [gi_1, gi_2]) }
let!(:export) { create(:export, groupe_instructeurs: [gi_1, gi_2]) }
it { expect(Export.find_for_format_and_groupe_instructeurs(:csv, [gi_1])).to eq(nil) }
it { expect(Export.find_for_format_and_groupe_instructeurs(:csv, [gi_2, gi_1])).to eq(export) }