blob: 72783424548ccc0aa3e31ce5f7cfde0fd9477bee [file] [log] [blame]
require File.dirname(__FILE__) + '/../test_helper'
#--######################################################################
# Copyright (c) 2006 Logica
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#
# Onno van der Straaten:: initial implementation
#++######################################################################
# {Copyright (c) 2006 Logica}[link:files/COPYRIGHT.html]
class UpdateTest < ActiveSupport::TestCase
fixtures :users
def setup
logger.debug "Test Case: #{name}"
@andy, @george, @cash, @tony = users(:andy), users(:george), users(:cash), users(:tony)
@emails = ActionMailer::Base::deliveries
@emails.clear
end
# Shows:
# 1. No notify_immediate users, no email
# 2. Notify_immediate users are receiving email
def test_notification
# 1. Note: create_templates uses update.do_update which sends emails
@emails.clear
wiki = create_templates
wiki.reload
bp = wiki.baseline_process
assert_equal 2, Site.count # 1 wiki, 1 baseline
assert_equal 3, @emails.size # STARTED and FINISHED
assert_not_nil wiki
assert_not_nil bp
@emails.clear
update = Update.create(:wiki_id => wiki.id, :baseline_process_id => bp.id, :user_id => @andy.id)
@andy.notify_immediate = 1
@george.notify_immediate = 1
@cash.notify_immediate = 1
@andy.save!
@george.save!
@cash.save!
update.do_update
assert_equal 4, @emails.size
email = @emails[3]
assert_equal ["[EPF Wiki - Test Enviroment] SCHEDULED update of Wiki Templates with Baseline Process templates_20080828",
"[EPF Wiki - Test Enviroment] STARTED update of Wiki Templates with Baseline Process templates_20080828",
"[EPF Wiki - Test Enviroment] FINISHED update of Wiki Templates with Baseline Process templates_20080828",
"[EPF Wiki - Test Enviroment] Wiki Templates Updated with Baseline Process templates_20080828"],
[@emails[0].subject, @emails[1].subject, @emails[2].subject, @emails[3].subject]
assert_equal ["[EPF Wiki - Test Enviroment] Wiki Templates Updated with Baseline Process templates_20080828",["andy.kaufman@epf.eclipse.org",
"cash.oshman@epf.eclipse.org",
"george.shapiro@epf.eclipse.org"], true], [email.subject, email.bcc, email.body.include?('http://localhost:3000/users/account')]
end
# Shows
# 1. That #job_daily can be used to notify users on the status of contributions
# 2. Users are auto subscribed to receive alerts on the page
# 3. Tony receives notification on update of the harvested comment and version
# 4. Andy receives notification of having been processed
def test_reviewed_notification_email
@emails.clear
create_templates
wiki = Wiki.find_by_folder('templates')
assert_not_nil wiki
assert_equal 'Ready', wiki.status
p1, p2 = wiki.pages[23], wiki.pages[6]
# create some versions
co1 = Checkout.new(:note => 'Checkout to test notification email', :page => p1, :site => wiki, :source_version => p1.current_version, :user => @tony)
co2 = Checkout.new(:note => 'Checkout to test notification email', :page => p2, :site => wiki, :source_version => p2.current_version, :user => @cash)
# 2
assert !Notification.find_all_users(p1, Page.name).include?(@tony)
assert !Notification.find_all_users(p2, Page.name).include?(@cash)
assert co1.save
assert co2.save
v1 = co1.version
v2 = co2.version
assert_equal 2, Checkout.count
co1.checkin(@tony)
co2.checkin(@cash)
assert Notification.find_all_users(p1, Page.name).include?(@tony)
assert Notification.find_all_users(p2, Page.name).include?(@cash)
assert_equal 0, Checkout.count
v1.review_note = "Review note 1"
v2.review_note = "Review note 2"
v1.done = 'Y'
v2.done = 'Y'
v1.reviewer = @andy
v2.reviewer = @george
assert v1.save
assert v2.save
# create some comments
cmt1 = Comment.create(:text => 'Comment 1', :user => @tony, :version => v1, :page => v1.page, :site => v1.wiki)
cmt2 = Comment.create(:text => 'Comment 2', :user => @cash, :version => v1, :page => v1.page, :site => v1.wiki)
cmt3 = Comment.create(:text => 'Comment 3', :user => @george, :version => v2, :page => v2.page, :site => v2.wiki)
assert cmt1.save
assert cmt2.save
assert cmt3.save
assert Notification.find_all_users(p2, Page.name).include?(@cash)
assert Notification.find_all_users(p1, Page.name).include?(@tony)
assert Notification.find_all_users(p2, Page.name).include?(@cash)
assert Notification.find_all_users(p2, Page.name).include?(@george)
[cmt1, cmt2, cmt3].each do |cmt|
assert cmt.save
cmt.review_note = cmt.text
cmt.done = 'Y'
cmt.reviewer = @andy
assert cmt.save
end
for i in 1..3
Upload.create(:filename => 'index.html', :upload_type => 'Image', :description => 'Description of upload ' + i.to_s, :user => @cash, :reviewer => @andy, :review_note => 'Review note of upload ' + i.to_s, :done => 'Y')
end
@emails.clear
update = Update.new(:wiki => Wiki.find_by_folder('templates'), :baseline_process => BaselineProcess.find(:first), :user => @andy)
assert update.save
job_daily
assert_equal ['[EPF Wiki - Test Enviroment] SCHEDULED update of Wiki Templates with Baseline Process templates_20080828',
'[EPF Wiki - Test Enviroment] STARTED update of Wiki Templates with Baseline Process templates_20080828',
'[EPF Wiki - Test Enviroment] FINISHED update of Wiki Templates with Baseline Process templates_20080828',
'[EPF Wiki - Test Enviroment] Your contribution has been processed',
'[EPF Wiki - Test Enviroment] Your contribution has been processed',
'[EPF Wiki - Test Enviroment] Your contribution has been processed',
'[EPF Wiki - Test Enviroment] Daily Summary'],
@emails.collect {|e|e.subject}
assert_equal [["cash.oshman@epf.eclipse.org"],
["tony.clifton@epf.eclipse.org"], ['george.shapiro@epf.eclipse.org'],
"[EPF Wiki - Test Enviroment] Your contribution has been processed",
"[EPF Wiki - Test Enviroment] Your contribution has been processed",
"[EPF Wiki - Test Enviroment] Your contribution has been processed"], [@emails[3].to, @emails[4].to, @emails[5].to, @emails[3].subject, @emails[4].subject, @emails[5].subject]
assert IO.readlines(File.expand_path('test/unit/notifier_test/contributions_processed.html', RAILS_ROOT)).join.index('Hi Cash Oshman')
# 3
#v1, cmt1
email = @emails[4]
assert_equal ["tony.clifton@epf.eclipse.org"], email.to
assert email.body.include?(v1.page.url(true))
assert email.body.include?(v1.page.presentation_name)
assert email.body.include?(v1.reviewer.name)
assert email.body.include?(v1.review_note)
assert email.body.include?(cmt1.page.url(true))
assert email.body.include?(cmt1.text)
assert email.body.include?(cmt1.reviewer.name)
assert email.body.include?(cmt1.review_note)
# 4
u = Upload.find(:first)
email = @emails[3]
assert_equal ["cash.oshman@epf.eclipse.org"], email.to
assert email.body.include?(u.url(true))
assert email.body.include?(u.filename)
assert email.body.include?(u.reviewer.name)
assert email.body.include?(u.review_note)
end
end