From fdb08b0c9a2fd6bf8cdb199aa418852535929f22 Mon Sep 17 00:00:00 2001 From: Jimmy Date: Fri, 12 Mar 2021 00:14:29 -0800 Subject: [PATCH] [refactor] Move Mailbot#logo_url and #conference_color to ConferenceHelper --- app/helpers/conference_helper.rb | 21 ++++++++++++++ app/mailers/mailbot.rb | 33 +++------------------- app/views/layouts/_mailbot_footer.html.erb | 7 +---- app/views/layouts/_mailbot_header.html.erb | 10 ++----- spec/helpers/conference_helper_spec.rb | 22 +++++++++++++++ spec/mailers/mailbot_spec.rb | 25 +--------------- 6 files changed, 52 insertions(+), 66 deletions(-) diff --git a/app/helpers/conference_helper.rb b/app/helpers/conference_helper.rb index 14253b23..417a8d55 100644 --- a/app/helpers/conference_helper.rb +++ b/app/helpers/conference_helper.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +DEFAULT_LOGO = 'snapcon_logo.png' +DEFAULT_COLOR = '#0B3559' + module ConferenceHelper # Return true if only call_for_papers or call_for_tracks or call_for_booths is open def one_call_open(*calls) @@ -28,6 +31,24 @@ module ConferenceHelper markdown(ticket.description.split("\n").first&.strip) end + def conference_logo_url(conference) + if conference.picture.present? + conference.picture.thumb.url + elsif conference.organization.picture.present? + conference.organization.picture.thumb.url + else + DEFAULT_LOGO + end + end + + def conference_color(conference) + if conference.color.present? + conference.color + else + DEFAULT_COLOR + end + end + # adds events to icalendar for proposals in a conference def icalendar_proposals(calendar, proposals, conference) proposals.each do |proposal| diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index 8a7cb840..07249862 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -3,9 +3,10 @@ SNAPCON_BCC_ADDRESS = 'messages@snap.berkeley.edu' EMAIL_TEMPLATE = 'email_template' YTLF_TICKET_ID = 50 -DEFAULT_LOGO = 'snapcon_logo.png' class Mailbot < ActionMailer::Base + helper ConferenceHelper + default bcc: -> { SNAPCON_BCC_ADDRESS }, template_name: -> { EMAIL_TEMPLATE }, to: -> { @user.email }, @@ -15,7 +16,6 @@ class Mailbot < ActionMailer::Base @user = user @conference = conference @email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.registration_body) - @logo_url = logo_url(@conference) mail(subject: @conference.email_settings.registration_subject) end @@ -24,7 +24,6 @@ class Mailbot < ActionMailer::Base @ticket_purchase = ticket_purchase @user = ticket_purchase.user @conference = ticket_purchase.conference - @logo_url = logo_url(@conference) PhysicalTicket.last(ticket_purchase.quantity).each do |physical_ticket| pdf = TicketPdf.new(@conference, @user, physical_ticket, @conference.ticket_layout.to_sym, "ticket_for_#{@conference.short_title}_#{physical_ticket.id}") @@ -43,7 +42,6 @@ class Mailbot < ActionMailer::Base def acceptance_mail(event) @user = event.submitter @conference = event.program.conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.accepted_body) mail(subject: @conference.email_settings.accepted_subject) @@ -52,7 +50,6 @@ class Mailbot < ActionMailer::Base def submitted_proposal_mail(event) @user = event.submitter @conference = event.program.conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.submitted_proposal_body) mail(subject: @conference.email_settings.submitted_proposal_subject) @@ -61,7 +58,6 @@ class Mailbot < ActionMailer::Base def rejection_mail(event) @user = event.submitter @conference = event.program.conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.rejected_body) mail(subject: @conference.email_settings.rejected_subject) @@ -70,16 +66,14 @@ class Mailbot < ActionMailer::Base def confirm_reminder_mail(event) @user = event.submitter @conference = event.program.conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.confirmed_without_registration_body) mail(subject: @conference.email_settings.confirmed_without_registration_subject) end - def conference_date_update_mail(_conference, user) + def conference_date_update_mail(conference, user) @user = user - @conference = @conference - @logo_url = logo_url(@conference) + @conference = conference @email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.conference_dates_updated_body) mail(subject: @conference.email_settings.conference_dates_updated_subject) @@ -88,7 +82,6 @@ class Mailbot < ActionMailer::Base def conference_registration_date_update_mail(conference, user) @user = user @conference = conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.conference_registration_dates_updated_body) mail(subject: @conference.email_settings.conference_registration_dates_updated_subject) @@ -97,7 +90,6 @@ class Mailbot < ActionMailer::Base def conference_venue_update_mail(conference, user) @user = user @conference = conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.venue_updated_body) mail(subject: @conference.email_settings.venue_updated_subject) @@ -106,7 +98,6 @@ class Mailbot < ActionMailer::Base def conference_schedule_update_mail(conference, user) @user = user @conference = conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.program_schedule_public_body) mail(bcc: nil, @@ -116,7 +107,6 @@ class Mailbot < ActionMailer::Base def conference_cfp_update_mail(conference, user) @user = user @conference = conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.cfp_dates_updated_body) mail(bcc: nil, @@ -126,7 +116,6 @@ class Mailbot < ActionMailer::Base def conference_booths_acceptance_mail(booth) @user = booth.submitter @conference = booth.conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_booth_mail(booth, @conference.email_settings.booths_acceptance_body) mail(bcc: nil, @@ -136,7 +125,6 @@ class Mailbot < ActionMailer::Base def conference_booths_rejection_mail(booth) @user = booth.submitter @conference = booth.conference - @logo_url = logo_url(@conference) @email_body = @conference.email_settings.generate_booth_mail(booth, @conference.email_settings.booths_rejection_body) mail(bcc: nil, @@ -148,22 +136,9 @@ class Mailbot < ActionMailer::Base @event = @comment.commentable @conference = @event.program.conference @user = user - @logo_url = logo_url(@conference) mail(bcc: nil, template_name: 'comment_template', subject: "New comment has been posted for #{@event.title}") end - - private - - def logo_url(conference) - if conference.picture.present? - conference.picture.thumb.url - elsif conference.organization.picture.present? - conference.organization.picture.thumb.url - else - DEFAULT_LOGO - end - end end diff --git a/app/views/layouts/_mailbot_footer.html.erb b/app/views/layouts/_mailbot_footer.html.erb index fc3d88a4..3cc8b3c3 100644 --- a/app/views/layouts/_mailbot_footer.html.erb +++ b/app/views/layouts/_mailbot_footer.html.erb @@ -7,11 +7,6 @@ <%= stylesheet_link_tag "mailbot" %> - <% if @conference.present? && @conference.color.present? %> -
- <% else %> -
- <% end %> -
+
\ No newline at end of file diff --git a/app/views/layouts/_mailbot_header.html.erb b/app/views/layouts/_mailbot_header.html.erb index 674b56a5..12f9d4a5 100644 --- a/app/views/layouts/_mailbot_header.html.erb +++ b/app/views/layouts/_mailbot_header.html.erb @@ -10,15 +10,11 @@ <%= stylesheet_link_tag "mailbot" %> - <% if @conference.present? && @conference.color.present? %> -
- <% else %> -
- <% end %> +
- <% if @logo_url.present? %> - <%= image_tag(@logo_url, style: "display:block;height:70px;width:auto;", alt: @conference.title + ' logo') %> + <% if @conference.present? %> + <%= image_tag(conference_logo_url(@conference), style: "display:block;height:70px;width:auto;", alt: @conference.title + ' logo') %> <% end %>
diff --git a/spec/helpers/conference_helper_spec.rb b/spec/helpers/conference_helper_spec.rb index 101d083a..996ffeba 100644 --- a/spec/helpers/conference_helper_spec.rb +++ b/spec/helpers/conference_helper_spec.rb @@ -67,4 +67,26 @@ describe ConferenceHelper, type: :helper do expect(sponsorship_mailto(conference)).to match conference.short_title end end + + describe '#conference_logo_url' do + let(:organization) { create(:organization) } + let(:conference2) { create(:conference, organization: organization) } + + it 'gives the correct logo url' do + mailbot = Mailbot.new + expect(conference_logo_url(conference2)).to eq('snapcon_logo.png') + + File.open('spec/support/logos/1.png') do |file| + organization.picture = file + end + + expect(conference_logo_url(conference2)).to include('1.png') + + File.open('spec/support/logos/2.png') do |file| + conference2.picture = file + end + + expect(conference_logo_url(conference2)).to include('2.png') + end + end end diff --git a/spec/mailers/mailbot_spec.rb b/spec/mailers/mailbot_spec.rb index 65ea4213..6d3b64ad 100644 --- a/spec/mailers/mailbot_spec.rb +++ b/spec/mailers/mailbot_spec.rb @@ -38,6 +38,7 @@ describe Mailbot do expect(mail.body).to include('background-color: ' + conference.color) end + # TODO: test on non-default logo it 'assigns the email body with the correct logo' do expect(mail.body).to include 'snapcon_logo' end @@ -93,28 +94,4 @@ describe Mailbot do context 'update notifications' do it 'is a pending test' end - - context 'helper methods' do - let(:organization) { create(:organization) } - let(:conference2) { create(:conference, organization: organization) } - - describe '#logo_url' do - it 'gives the correct logo url' do - mailbot = Mailbot.new - expect(mailbot.send(:logo_url, conference2)).to eq('snapcon_logo.png') - - File.open('spec/support/logos/1.png') do |file| - organization.picture = file - end - - expect(mailbot.send(:logo_url, conference2)).to include('1.png') - - File.open('spec/support/logos/2.png') do |file| - conference2.picture = file - end - - expect(mailbot.send(:logo_url, conference2)).to include('2.png') - end - end - end end