From 861c1af729916f59e13780cbc9c5e257c808fdb5 Mon Sep 17 00:00:00 2001 From: Gopesh Tulsyan Date: Tue, 8 Jul 2014 15:42:35 +0530 Subject: [PATCH] Conference date update email notification completed Added tests --- app/controllers/admin/conference_controller.rb | 7 +++++++ app/mailers/mailbot.rb | 9 +++++++++ app/models/email_settings.rb | 2 +- spec/factories/email_settings.rb | 2 ++ spec/views/admin/emails/index.html.haml_spec.rb | 9 +++++---- 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/controllers/admin/conference_controller.rb b/app/controllers/admin/conference_controller.rb index 6093d2d2..a30905e5 100644 --- a/app/controllers/admin/conference_controller.rb +++ b/app/controllers/admin/conference_controller.rb @@ -1,4 +1,5 @@ class Admin::ConferenceController < ApplicationController + include HomeHelper before_filter :verify_organizer def index @@ -74,6 +75,12 @@ class Admin::ConferenceController < ApplicationController def update @conference = Conference.find_by(short_title: params[:id]) 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]) redirect_to(edit_admin_conference_path(id: @conference.short_title), notice: 'Conference was successfully updated.') diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index abc60968..fefaed2c 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -38,6 +38,15 @@ class Mailbot < ActionMailer::Base conference.email_settings.confirmed_but_not_registered_email(event)) 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) mail(:to => to, :from => conference.contact_email, diff --git a/app/models/email_settings.rb b/app/models/email_settings.rb index 876a1c1a..5735a2f0 100644 --- a/app/models/email_settings.rb +++ b/app/models/email_settings.rb @@ -4,7 +4,7 @@ class EmailSettings < ActiveRecord::Base :accepted_email_template, :rejected_email_template, :confirmed_email_template, :registration_subject, :accepted_subject, :rejected_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 def get_values(conference, user, event = nil) diff --git a/spec/factories/email_settings.rb b/spec/factories/email_settings.rb index e0856537..cda8bcc6 100644 --- a/spec/factories/email_settings.rb +++ b/spec/factories/email_settings.rb @@ -6,6 +6,8 @@ FactoryGirl.define do send_on_accepted false send_on_rejected 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_email_template 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit' end diff --git a/spec/views/admin/emails/index.html.haml_spec.rb b/spec/views/admin/emails/index.html.haml_spec.rb index de09ac8f..fec814f9 100644 --- a/spec/views/admin/emails/index.html.haml_spec.rb +++ b/spec/views/admin/emails/index.html.haml_spec.rb @@ -1,19 +1,20 @@ require 'spec_helper' describe 'admin/emails/index' do - it 'renders email templates' do + it 'renders email templates' do @conference = create(:conference) assign :conference, @conference @settings = create(:email_settings) assign :settings, @settings render expect(rendered). - to have_selector("input[type='checkbox'][value='1']", count: 4) + to have_selector("input[type='checkbox'][value='1']", count: 5) 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 dolor sit amet, consectetuer adipiscing elit') + expect(rendered). + to include('Conference dates have been updated') end - end