export and publish opendata demarches
This commit is contained in:
parent
77a9a2ba12
commit
b6c96301ef
3 changed files with 49 additions and 0 deletions
18
app/jobs/cron/export_and_publish_demarches_publiques_job.rb
Normal file
18
app/jobs/cron/export_and_publish_demarches_publiques_job.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
class Cron::ExportAndPublishDemarchesPubliquesJob < Cron::CronJob
|
||||
self.schedule_expression = "every month at 3:00"
|
||||
|
||||
def perform(*args)
|
||||
gzip_filepath = [
|
||||
ENV.fetch('DATAGOUV_TMP_DIR', 'tmp'), '/',
|
||||
Time.zone.now.to_formatted_s(:number),
|
||||
'-demarches.json.gz'
|
||||
].join
|
||||
|
||||
begin
|
||||
DemarchesPubliquesExportService.new(gzip_filepath).call
|
||||
APIDatagouv::API.upload(gzip_filepath)
|
||||
ensure
|
||||
FileUtils.rm(gzip_filepath)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -140,3 +140,6 @@ VITE_LEGACY=""
|
|||
|
||||
# around july 2022, we changed the duree_conservation_dossiers_dans_ds, allow instances to choose their own duration
|
||||
NEW_MAX_DUREE_CONSERVATION=12
|
||||
#
|
||||
# Directory which temporarily holds demarches.json.gz during generation before publishing to datagouv
|
||||
DATAGOUV_TMP_DIR="/tmp"
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
RSpec.describe Cron::ExportAndPublishDemarchesPubliquesJob, type: :job do
|
||||
let!(:procedure) { create(:procedure, :published, :with_service, :with_type_de_champ) }
|
||||
let(:status) { 200 }
|
||||
let(:body) { "ok" }
|
||||
let(:stub) { stub_request(:post, /https:\/\/www.data.gouv.fr\/api\/.*\/upload\//) }
|
||||
|
||||
describe 'perform' do
|
||||
before do
|
||||
stub
|
||||
end
|
||||
|
||||
subject { Cron::ExportAndPublishDemarchesPubliquesJob.perform_now }
|
||||
|
||||
it 'send POST request to datagouv' do
|
||||
subject
|
||||
|
||||
expect(stub).to have_been_requested
|
||||
end
|
||||
|
||||
it 'removes gzip file even if an error occured' do
|
||||
procedure.libelle = nil
|
||||
procedure.save(validate: false)
|
||||
|
||||
expect { subject }.to raise_error(StandardError)
|
||||
expect(Dir.glob("*demarches.json.gz", base: 'tmp').empty?).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue