Conference date update email notification completed

Added tests
This commit is contained in:
Gopesh Tulsyan 2014-07-08 15:42:35 +05:30
parent 75cf1123cf
commit 861c1af729
5 changed files with 24 additions and 5 deletions

View file

@ -1,4 +1,5 @@
class Admin::ConferenceController < ApplicationController class Admin::ConferenceController < ApplicationController
include HomeHelper
before_filter :verify_organizer before_filter :verify_organizer
def index def index
@ -74,6 +75,12 @@ class Admin::ConferenceController < ApplicationController
def update def update
@conference = Conference.find_by(short_title: params[:id]) @conference = Conference.find_by(short_title: params[:id])
short_title = @conference.short_title short_title = @conference.short_title
@conference.assign_attributes(params[:conference])
if @conference.start_date_changed? || @conference.end_date_changed?
if @conference.email_settings.send_on_updated_conference_dates
Mailbot.conference_date_update_mail(@conference,date_string(@conference.start_date, @conference.end_date)).deliver
end
end
if @conference.update_attributes(params[:conference]) if @conference.update_attributes(params[:conference])
redirect_to(edit_admin_conference_path(id: @conference.short_title), redirect_to(edit_admin_conference_path(id: @conference.short_title),
notice: 'Conference was successfully updated.') notice: 'Conference was successfully updated.')

View file

@ -38,6 +38,15 @@ class Mailbot < ActionMailer::Base
conference.email_settings.confirmed_but_not_registered_email(event)) conference.email_settings.confirmed_but_not_registered_email(event))
end end
def conference_date_update_mail(conference,dates)
subject = conference.email_settings.updated_conference_dates_subject.blank? ? "#{conference.title} dates updated" : conference.email_settings.updated_conference_dates_subject
partial = "#{conference.title}\n New Dates : #{dates}\n For more information visit #{Rails.application.routes.url_helpers.conference_path(conference.short_title, host: CONFIG['url_for_emails'])}"
body = conference.email_settings.updated_conference_dates_template.blank? ? "#{partial}" : "#{conference.email_settings.updated_conference_dates_template}\n #{partial}"
conference.registrations.each do |u|
build_email(conference, u.user.email, subject, body)
end
end
def build_email(conference, to, subject, body) def build_email(conference, to, subject, body)
mail(:to => to, mail(:to => to,
:from => conference.contact_email, :from => conference.contact_email,

View file

@ -4,7 +4,7 @@ class EmailSettings < ActiveRecord::Base
:accepted_email_template, :rejected_email_template, :confirmed_email_template, :accepted_email_template, :rejected_email_template, :confirmed_email_template,
:registration_subject, :accepted_subject, :rejected_subject, :registration_subject, :accepted_subject, :rejected_subject,
:confirmed_without_registration_subject, :confirmed_without_registration_subject,
:send_on_updated_conferences_dates, :updated_conference_dates_subject :send_on_updated_conference_dates, :updated_conference_dates_subject,
:updated_conference_dates_template :updated_conference_dates_template
def get_values(conference, user, event = nil) def get_values(conference, user, event = nil)

View file

@ -6,6 +6,8 @@ FactoryGirl.define do
send_on_accepted false send_on_accepted false
send_on_rejected false send_on_rejected false
send_on_confirmed_without_registration false send_on_confirmed_without_registration false
send_on_updated_conference_dates true
updated_conference_dates_subject 'Conference dates have been updated'
registration_subject 'Lorem Ipsum Dolsum' registration_subject 'Lorem Ipsum Dolsum'
registration_email_template 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit' registration_email_template 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit'
end end

View file

@ -8,12 +8,13 @@ describe 'admin/emails/index' do
assign :settings, @settings assign :settings, @settings
render render
expect(rendered). expect(rendered).
to have_selector("input[type='checkbox'][value='1']", count: 4) to have_selector("input[type='checkbox'][value='1']", count: 5)
expect(rendered). expect(rendered).
to have_selector("input[checked='checked'][type='checkbox'][value='1']", count: 1) to have_selector("input[checked='checked'][type='checkbox'][value='1']", count: 2)
expect(rendered).to include('Lorem Ipsum Dolsum') expect(rendered).to include('Lorem Ipsum Dolsum')
expect(rendered). expect(rendered).
to include('Lorem ipsum dolor sit amet, consectetuer adipiscing elit') to include('Lorem ipsum dolor sit amet, consectetuer adipiscing elit')
expect(rendered).
to include('Conference dates have been updated')
end end
end end