Merge pull request #8717 from demarches-simplifiees/8715-falsify-opendata

passe le flag opendata à false pour certaines procédures
This commit is contained in:
krichtof 2023-03-01 10:56:38 +00:00 committed by GitHub
commit 5659ca2b92
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 81 additions and 0 deletions

View file

@ -0,0 +1,15 @@
class FalsifyOpendataService
def self.call(lines)
errors = []
lines.each do |line|
id = line["id"]
procedure = Procedure.find_by(id: id)
if procedure
procedure.update(opendata: false)
else
errors << "Procedure #{id} introuvable"
end
end
errors
end
end

View file

@ -0,0 +1,23 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :procedures do
desc <<~EOD
falsify opendata flag for some procedures
rails procedures:falsify_opendata_procedures\[csv_path\]
EOD
task :falsify_opendata_procedures, [:csv] => :environment do |_t, args|
csv = args[:csv]
lines = CSV.readlines(csv, headers: true)
rake_puts "Passage du flag opendata à false pour certaines procédures en cours..."
errors =
FalsifyOpendataService.call(lines)
if errors.present?
errors.each { |error| rake_puts error }
end
rake_puts "Mise à jour terminée"
end
end

View file

@ -0,0 +1,43 @@
describe FalsifyOpendataService do
before(:each) do
end
after(:each) do
end
describe '#call' do
let(:procedure1) { create(:procedure, opendata: true) }
let(:procedure2) { create(:procedure, opendata: true) }
subject { described_class.call(lines) }
context 'nominal case' do
let(:lines) do
[
{ "id" => procedure1.id },
{ "id" => procedure2.id }
]
end
it 'falsifies opendatas' do
errors = subject
expect(errors).to eq []
expect(procedure1.reload.opendata).to be_falsey
expect(procedure2.reload.opendata).to be_falsey
end
end
context 'with unknown procedure' do
let(:lines) do
[
{ "id" => procedure1.id + procedure2.id }
]
end
it 'returns errors' do
errors = subject
expect(errors).to eq ["Procedure #{procedure1.id + procedure2.id} introuvable"]
end
end
end
end