diaspora/spec/mailers/notifier_spec.rb
2011-01-05 14:55:17 -08:00

106 lines
3.2 KiB
Ruby

require 'spec_helper'
describe Notifier do
let!(:user) {make_user}
let!(:user2) {make_user}
let!(:aspect) {user.aspects.create(:name => "win")}
let!(:aspect2) {user2.aspects.create(:name => "win")}
let!(:person) {Factory.create :person}
before do
Notifier.deliveries = []
end
describe '.administrative' do
it 'mails a user' do
mails = Notifier.admin("Welcome to bureaucracy!", [user])
mails.length.should == 1
mail = mails.first
mail.to.should == [user.email]
mail.body.encoded.should match /Welcome to bureaucracy!/
mail.body.encoded.should match /#{user.username}/
end
it 'mails a bunch of users' do
users = []
5.times do
users << make_user
end
mails = Notifier.admin("Welcome to bureaucracy!", users)
mails.length.should == 5
mails.each{|mail|
this_user = users.detect{|u| mail.to == [u.email]}
mail.body.encoded.should match /Welcome to bureaucracy!/
mail.body.encoded.should match /#{this_user.username}/
}
end
end
describe '#single_admin' do
it 'mails a user' do
mail = Notifier.single_admin("Welcome to bureaucracy!", user)
mail.to.should == [user.email]
mail.body.encoded.should match /Welcome to bureaucracy!/
mail.body.encoded.should match /#{user.username}/
end
end
describe "#new_request" do
let!(:request_mail) {Notifier.new_request(user.id, person.id)}
it 'goes to the right person' do
request_mail.to.should == [user.email]
end
it 'has the receivers name in the body' do
request_mail.body.encoded.include?(user.person.profile.first_name).should be true
end
it 'has the name of person sending the request' do
request_mail.body.encoded.include?(person.name).should be true
end
it 'has the css' do
request_mail.body.encoded.include?("<style type='text/css'>")
end
end
describe "#request_accepted" do
let!(:request_accepted_mail) {Notifier.request_accepted(user.id, person.id)}
it 'goes to the right person' do
request_accepted_mail.to.should == [user.email]
end
it 'has the receivers name in the body' do
request_accepted_mail.body.encoded.include?(user.person.profile.first_name).should be true
end
it 'has the name of person sending the request' do
request_accepted_mail.body.encoded.include?(person.name).should be true
end
end
describe "#comment_on_post" do
let!(:connect) { connect_users(user, aspect, user2, aspect2)}
let!(:sm) {user.post(:status_message, :message => "Sunny outside", :to => :all)}
let!(:comment) { user2.comment("Totally is", :on => sm )}
let!(:comment_mail) {Notifier.comment_on_post(user.id, person.id, comment)}
it 'goes to the right person' do
comment_mail.to.should == [user.email]
end
it 'has the receivers name in the body' do
comment_mail.body.encoded.include?(user.person.profile.first_name).should be true
end
it 'has the name of person commenting' do
comment_mail.body.encoded.include?(person.name).should be true
end
it 'has the post link in the body' do
comment_mail.body.encoded.should match "/#{object_path(@sm)}/"
end
end
end