From a7b7fe335f82a41e4fb20dbee21347dc26356aad Mon Sep 17 00:00:00 2001 From: Leo McArdle Date: Fri, 4 Aug 2017 19:04:26 +0100 Subject: [PATCH] FIX: allow an admin to click on blank errors (#5027) * FIX: allow an admin to click on blank errors * i18nlize strings * what would a rails master do? --- .../incoming_email_details_serializer.rb | 2 +- app/serializers/incoming_email_serializer.rb | 4 ++++ config/locales/server.en.yml | 1 + spec/components/email/processor_spec.rb | 6 +++--- .../controllers/admin/email_controller_spec.rb | 18 ++++++++++++++++++ spec/fabricators/incoming_email_fabricator.rb | 1 + 6 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 spec/fabricators/incoming_email_fabricator.rb diff --git a/app/serializers/incoming_email_details_serializer.rb b/app/serializers/incoming_email_details_serializer.rb index 2ca27de78ac..d147215a393 100644 --- a/app/serializers/incoming_email_details_serializer.rb +++ b/app/serializers/incoming_email_details_serializer.rb @@ -16,7 +16,7 @@ class IncomingEmailDetailsSerializer < ApplicationSerializer EMAIL_RECEIVER_ERROR_PREFIX = "Email::Receiver::".freeze def error - @error_string + @error_string.presence || I18n.t("emails.incoming.unrecognized_error") end def error_description diff --git a/app/serializers/incoming_email_serializer.rb b/app/serializers/incoming_email_serializer.rb index 53916e24cd5..006ea9c3306 100644 --- a/app/serializers/incoming_email_serializer.rb +++ b/app/serializers/incoming_email_serializer.rb @@ -29,4 +29,8 @@ class IncomingEmailSerializer < ApplicationSerializer object.cc_addresses.split(";") end + def error + @object.error.presence || I18n.t("emails.incoming.unrecognized_error") + end + end diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 4e7d572a746..3e5da27ad55 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -78,6 +78,7 @@ en: topic_closed_error: "Happens when a reply came in but the related topic has been closed." bounced_email_error: "Email is a bounced email report." screened_email_error: "Happens when the sender's email address was already screened." + unrecognized_error: "Unrecognized Error" errors: &errors format: ! '%{attribute} %{message}' diff --git a/spec/components/email/processor_spec.rb b/spec/components/email/processor_spec.rb index 73a54d9b53a..c3291c439d8 100644 --- a/spec/components/email/processor_spec.rb +++ b/spec/components/email/processor_spec.rb @@ -66,9 +66,9 @@ describe Email::Processor do Rails.logger.expects(:error) Email::Processor.process!(mail) - expect(IncomingEmail.first.error).to eq("boom") - expect(IncomingEmail.first.rejection_message).to be_present - expect(EmailLog.first.email_type).to eq("email_reject_unrecognized_error") + expect(IncomingEmail.last.error).to eq("boom") + expect(IncomingEmail.last.rejection_message).to be_present + expect(EmailLog.last.email_type).to eq("email_reject_unrecognized_error") end it "sends more than one rejection email per day" do diff --git a/spec/controllers/admin/email_controller_spec.rb b/spec/controllers/admin/email_controller_spec.rb index 092eaad575b..aa78de722f5 100644 --- a/spec/controllers/admin/email_controller_spec.rb +++ b/spec/controllers/admin/email_controller_spec.rb @@ -81,4 +81,22 @@ describe Admin::EmailController do end end + context '.rejected' do + it 'should provide a string for a blank error' do + Fabricate(:incoming_email, error: "") + xhr :get, :rejected + rejected = JSON.parse(response.body) + expect(rejected.first['error']).to eq(I18n.t("emails.incoming.unrecognized_error")) + end + end + + context '.incoming' do + it 'should provide a string for a blank error' do + incoming_email = Fabricate(:incoming_email, error: "") + xhr :get, :incoming, id: incoming_email.id + incoming = JSON.parse(response.body) + expect(incoming['error']).to eq(I18n.t("emails.incoming.unrecognized_error")) + end + end + end diff --git a/spec/fabricators/incoming_email_fabricator.rb b/spec/fabricators/incoming_email_fabricator.rb new file mode 100644 index 00000000000..47e158addbd --- /dev/null +++ b/spec/fabricators/incoming_email_fabricator.rb @@ -0,0 +1 @@ +Fabricator(:incoming_email)