From 413c1e25aa1066b0789f07d41e8aed1a5eb9e132 Mon Sep 17 00:00:00 2001 From: Helge Rausch Date: Wed, 5 Jul 2023 08:24:01 +0200 Subject: [PATCH 1/3] Send email even if there was an exception --- app/workers/preparsing.rb | 1 + spec/fixtures/files/broken_genotype_file.gz | Bin 0 -> 41 bytes spec/workers/preparsing_spec.rb | 19 +++++++++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 spec/fixtures/files/broken_genotype_file.gz create mode 100644 spec/workers/preparsing_spec.rb diff --git a/app/workers/preparsing.rb b/app/workers/preparsing.rb index 0f4e2d16..666bc582 100644 --- a/app/workers/preparsing.rb +++ b/app/workers/preparsing.rb @@ -110,6 +110,7 @@ def perform(genotype_id) file_has_mails = true end + ensure # not proper file! if not file_is_ok if file_is_duplicate diff --git a/spec/fixtures/files/broken_genotype_file.gz b/spec/fixtures/files/broken_genotype_file.gz new file mode 100644 index 0000000000000000000000000000000000000000..bae5cf4d372e3f61065aeedba80127f7c8623d09 GIT binary patch literal 41 scmb2|=3oE==HM{D(`P(=PwSuZ)!E2fT&8V&(fA1yL)`R!K~bOz0P4UCumAu6 literal 0 HcmV?d00001 diff --git a/spec/workers/preparsing_spec.rb b/spec/workers/preparsing_spec.rb new file mode 100644 index 00000000..3a499e48 --- /dev/null +++ b/spec/workers/preparsing_spec.rb @@ -0,0 +1,19 @@ +RSpec.describe Preparsing do + subject(:worker) { described_class.new } + + let!(:genotype) do + create( + :genotype, + genotype: Rails.root.join("spec/fixtures/files/broken_genotype_file.gz").open + ) + end + + it "handles errors" do + expect { worker.perform(genotype.id) } + .to raise_error(ArgumentError, "invalid byte sequence in UTF-8") + + expect(ActionMailer::Base.deliveries.count).to eq(1) + expect(ActionMailer::Base.deliveries.last.subject) + .to eq("openSNP.org: Something went wrong while parsing") + end +end From 3991cf0c37e9c3828716da0fe83a26e3fee6b9d2 Mon Sep 17 00:00:00 2001 From: Helge Rausch Date: Wed, 5 Jul 2023 08:35:57 +0200 Subject: [PATCH 2/3] Remove lint --- spec/workers/preparsing_spec.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/spec/workers/preparsing_spec.rb b/spec/workers/preparsing_spec.rb index 3a499e48..ab65dd5b 100644 --- a/spec/workers/preparsing_spec.rb +++ b/spec/workers/preparsing_spec.rb @@ -1,19 +1,21 @@ +# frozen_string_literal: true + RSpec.describe Preparsing do subject(:worker) { described_class.new } let!(:genotype) do create( :genotype, - genotype: Rails.root.join("spec/fixtures/files/broken_genotype_file.gz").open + genotype: Rails.root.join('spec', 'fixtures', 'files', 'broken_genotype_file.gz').open ) end - it "handles errors" do + it 'handles errors' do expect { worker.perform(genotype.id) } - .to raise_error(ArgumentError, "invalid byte sequence in UTF-8") + .to raise_error(ArgumentError, 'invalid byte sequence in UTF-8') expect(ActionMailer::Base.deliveries.count).to eq(1) expect(ActionMailer::Base.deliveries.last.subject) - .to eq("openSNP.org: Something went wrong while parsing") + .to eq('openSNP.org: Something went wrong while parsing') end end From 6dbd0fd712820635f5a8d55fb3e06da31f54b3c3 Mon Sep 17 00:00:00 2001 From: Helge Rausch Date: Wed, 5 Jul 2023 10:07:55 +0200 Subject: [PATCH 3/3] Improve test description --- spec/workers/preparsing_spec.rb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/spec/workers/preparsing_spec.rb b/spec/workers/preparsing_spec.rb index ab65dd5b..9de0c5d7 100644 --- a/spec/workers/preparsing_spec.rb +++ b/spec/workers/preparsing_spec.rb @@ -10,12 +10,14 @@ ) end - it 'handles errors' do - expect { worker.perform(genotype.id) } - .to raise_error(ArgumentError, 'invalid byte sequence in UTF-8') + context 'when there is an exception' do + it 'still sends emails ' do + expect { worker.perform(genotype.id) } + .to raise_error(ArgumentError, 'invalid byte sequence in UTF-8') - expect(ActionMailer::Base.deliveries.count).to eq(1) - expect(ActionMailer::Base.deliveries.last.subject) - .to eq('openSNP.org: Something went wrong while parsing') + expect(ActionMailer::Base.deliveries.count).to eq(1) + expect(ActionMailer::Base.deliveries.last.subject) + .to eq('openSNP.org: Something went wrong while parsing') + end end end