849 lines
27 KiB
Ruby
849 lines
27 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Notification do
|
|
|
|
before(:each) do
|
|
UserMailer.deliveries.clear
|
|
end
|
|
|
|
def count_publish_to_user_calls
|
|
result = {count: 0}
|
|
MQRouter.any_instance.stub(:publish_to_user) do |receiver_id, msg|
|
|
result[:count] += 1
|
|
result[:msg] = msg
|
|
end
|
|
result
|
|
end
|
|
|
|
describe "send friend request" do
|
|
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:friend_request) {FactoryGirl.create(:friend_request, user:sender, friend:receiver)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_friend_request(friend_request.id, sender.id, receiver.id)
|
|
|
|
notification.errors.any?.should be_false
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
receiver.subscribe_email = false
|
|
receiver.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_friend_request(friend_request.id, sender.id, receiver.id)
|
|
|
|
notification.errors.any?.should be_false
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "success when online" do
|
|
receiver_connection = FactoryGirl.create(:connection, user: receiver)
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_friend_request(friend_request.id, sender.id, receiver.id)
|
|
|
|
notification.errors.any?.should be_false
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 1
|
|
end
|
|
end
|
|
|
|
describe "send friend request accepted" do
|
|
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:friend_request) {FactoryGirl.create(:friend_request, user:sender, friend:receiver)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_friend_request_accepted(receiver.id, sender.id)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
receiver.subscribe_email = false
|
|
receiver.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_friend_request_accepted(receiver.id, sender.id)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send new user follower" do
|
|
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_new_user_follower(sender, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
receiver.subscribe_email = false
|
|
receiver.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_new_user_follower(sender, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send new band follower" do
|
|
let(:member) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:band) {FactoryGirl.create(:band)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
band.users << member
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_new_band_follower(sender, band)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
member.subscribe_email = false
|
|
member.save!
|
|
|
|
band.users << member
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_new_band_follower(sender, band)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send session invitation" do
|
|
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_session_invitation(receiver, sender, session.id)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
receiver.subscribe_email = false
|
|
receiver.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_session_invitation(receiver, sender, session.id)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send musician session join" do
|
|
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
FactoryGirl.create(:friendship, :user => receiver, :friend => sender)
|
|
FactoryGirl.create(:friendship, :user => sender, :friend => receiver)
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_musician_session_join(session, sender)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
FactoryGirl.create(:friendship, :user => receiver, :friend => sender)
|
|
FactoryGirl.create(:friendship, :user => sender, :friend => receiver)
|
|
|
|
receiver.subscribe_email = false
|
|
receiver.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_musician_session_join(session, sender)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send musician recording saved join" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:recording) {FactoryGirl.create(:recording)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
FactoryGirl.create(:friendship, :user => receiver, :friend => recording.owner)
|
|
FactoryGirl.create(:friendship, :user => recording.owner, :friend => receiver)
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_musician_recording_saved(recording)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
FactoryGirl.create(:friendship, :user => receiver, :friend => recording.owner)
|
|
FactoryGirl.create(:friendship, :user => recording.owner, :friend => receiver)
|
|
|
|
receiver.subscribe_email = false
|
|
receiver.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_musician_recording_saved(recording)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send band session join" do
|
|
let(:follower) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:band) {FactoryGirl.create(:band)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
f = Follow.new
|
|
f.user_id = follower.id
|
|
f.followable_id = band.id
|
|
f.followable_type = "JamRuby::Band"
|
|
f.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_band_session_join(session, band)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
follower.subscribe_email = false
|
|
follower.save!
|
|
|
|
f = Follow.new
|
|
f.user_id = follower.id
|
|
f.followable_id = band.id
|
|
f.followable_type = "JamRuby::Band"
|
|
f.save!
|
|
|
|
band.users << sender
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_band_session_join(session, band)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send band recording saved join" do
|
|
let(:follower) {FactoryGirl.create(:user)}
|
|
let(:band) {FactoryGirl.create(:band)}
|
|
let(:recording) {FactoryGirl.create(:recording)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
f = Follow.new
|
|
f.user_id = follower.id
|
|
f.followable_id = band.id
|
|
f.followable_type = "JamRuby::Band"
|
|
f.save!
|
|
|
|
recording.band = band
|
|
recording.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_band_recording_saved(recording)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
follower.subscribe_email = false
|
|
follower.save!
|
|
|
|
f = Follow.new
|
|
f.user_id = follower.id
|
|
f.followable_id = band.id
|
|
f.followable_type = "JamRuby::Band"
|
|
f.save!
|
|
|
|
recording.band = band
|
|
recording.save!
|
|
|
|
follower.subscribe_email = false
|
|
follower.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
Notification.send_band_recording_saved(recording)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send band invitation" do
|
|
end
|
|
|
|
describe "send band invitation accepted" do
|
|
end
|
|
|
|
describe "send scheduled session invitation" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_invitation(session, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
receiver.subscribe_email = false
|
|
receiver.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_invitation(session, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "sends no notification if session is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_invitation(nil, sender)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if user is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_invitation(session, nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send scheduled session rsvp" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp(session, receiver, nil)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
session.creator.subscribe_email = false
|
|
session.creator.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp(session, receiver, nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "sends no notification if session is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp(nil, receiver, nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if user is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp(session, nil, nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send scheduled session rsvp approved" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_approved(session, receiver, nil)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
receiver.subscribe_email = false
|
|
receiver.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_approved(session, receiver, nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "sends no notification if session is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_approved(nil, receiver, nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if user is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_approved(session, nil, nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send scheduled session rsvp cancellation" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_cancelled(session, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
session.creator.subscribe_email = false
|
|
session.creator.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_cancelled(session, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "sends no notification if session is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_cancelled(nil, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if user is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_cancelled(session, nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send scheduled session rsvp cancellation by organizer" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
it "sends email when user is offline and subscribes to emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_cancelled_org(session, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "does not send email when user is offline and opts out of emails" do
|
|
session.creator = sender
|
|
session.save!
|
|
|
|
receiver.subscribe_email = false
|
|
receiver.save!
|
|
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_cancelled_org(session, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 1
|
|
end
|
|
|
|
it "sends no notification if session is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_cancelled_org(nil, receiver)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if user is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rsvp_cancelled_org(session, nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send scheduled session cancellation" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
# it "sends email when user is offline and subscribes to emails" do
|
|
# session.creator = sender
|
|
# session.save!
|
|
|
|
# calls = count_publish_to_user_calls
|
|
# notification = Notification.send_scheduled_session_cancelled(session)
|
|
|
|
# UserMailer.deliveries.length.should == 1
|
|
# calls[:count].should == 1
|
|
# end
|
|
|
|
# it "does not send email when user is offline and opts out of emails" do
|
|
# session.creator = sender
|
|
# session.save!
|
|
|
|
# receiver.subscribe_email = false
|
|
# receiver.save!
|
|
|
|
# calls = count_publish_to_user_calls
|
|
# notification = Notification.send_scheduled_session_cancelled(session)
|
|
|
|
# UserMailer.deliveries.length.should == 0
|
|
# calls[:count].should == 1
|
|
# end
|
|
|
|
it "sends no notification if session is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_cancelled(nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if there are no rsvp requests" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_cancelled(session)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send scheduled session rescheduled" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
# it "sends email when user is offline and subscribes to emails" do
|
|
# session.creator = sender
|
|
# session.save!
|
|
|
|
# calls = count_publish_to_user_calls
|
|
# notification = Notification.send_scheduled_session_cancelled(session)
|
|
|
|
# UserMailer.deliveries.length.should == 1
|
|
# calls[:count].should == 1
|
|
# end
|
|
|
|
# it "does not send email when user is offline and opts out of emails" do
|
|
# session.creator = sender
|
|
# session.save!
|
|
|
|
# receiver.subscribe_email = false
|
|
# receiver.save!
|
|
|
|
# calls = count_publish_to_user_calls
|
|
# notification = Notification.send_scheduled_session_cancelled(session)
|
|
|
|
# UserMailer.deliveries.length.should == 0
|
|
# calls[:count].should == 1
|
|
# end
|
|
|
|
it "sends no notification if session is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rescheduled(nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if there are no rsvp requests" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_rescheduled(session)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send scheduled session reminder" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
# it "sends email when user is offline and subscribes to emails" do
|
|
# session.creator = sender
|
|
# session.save!
|
|
|
|
# calls = count_publish_to_user_calls
|
|
# notification = Notification.send_scheduled_session_cancelled(session)
|
|
|
|
# UserMailer.deliveries.length.should == 1
|
|
# calls[:count].should == 1
|
|
# end
|
|
|
|
# it "does not send email when user is offline and opts out of emails" do
|
|
# session.creator = sender
|
|
# session.save!
|
|
|
|
# receiver.subscribe_email = false
|
|
# receiver.save!
|
|
|
|
# calls = count_publish_to_user_calls
|
|
# notification = Notification.send_scheduled_session_cancelled(session)
|
|
|
|
# UserMailer.deliveries.length.should == 0
|
|
# calls[:count].should == 1
|
|
# end
|
|
|
|
it "sends no notification if session is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_reminder(nil)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if there are no rsvp requests" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_reminder(session)
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send scheduled session comment" do
|
|
let(:receiver) {FactoryGirl.create(:user)}
|
|
let(:sender) {FactoryGirl.create(:user)}
|
|
let(:session) {FactoryGirl.create(:music_session)}
|
|
|
|
# it "sends email when user is offline and subscribes to emails" do
|
|
# session.creator = sender
|
|
# session.save!
|
|
|
|
# calls = count_publish_to_user_calls
|
|
# notification = Notification.send_scheduled_session_cancelled(session)
|
|
|
|
# UserMailer.deliveries.length.should == 1
|
|
# calls[:count].should == 1
|
|
# end
|
|
|
|
# it "does not send email when user is offline and opts out of emails" do
|
|
# session.creator = sender
|
|
# session.save!
|
|
|
|
# receiver.subscribe_email = false
|
|
# receiver.save!
|
|
|
|
# calls = count_publish_to_user_calls
|
|
# notification = Notification.send_scheduled_session_cancelled(session)
|
|
|
|
# UserMailer.deliveries.length.should == 0
|
|
# calls[:count].should == 1
|
|
# end
|
|
|
|
it "sends no notification if session is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_comment(nil, sender, 'when are we playing?')
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if user is nil" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_comment(session, nil, 'test')
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "sends no notification if comment is empty" do
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_scheduled_session_comment(session, sender, '')
|
|
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
|
|
describe "send_text_message" do
|
|
it "success when offline" do
|
|
receiver = FactoryGirl.create(:user)
|
|
sender = FactoryGirl.create(:user)
|
|
message = "Just a test message!"
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_text_message(message, sender, receiver)
|
|
|
|
notification.errors.any?.should be_false
|
|
UserMailer.deliveries.length.should == 1
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
|
|
it "success when online" do
|
|
receiver = FactoryGirl.create(:user)
|
|
receiver_connection = FactoryGirl.create(:connection, user: receiver)
|
|
sender = FactoryGirl.create(:user)
|
|
message = "Just a test message!"
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_text_message(message, sender, receiver)
|
|
|
|
notification.errors.any?.should be_false
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 1
|
|
calls[:msg].text_message.msg.should == message
|
|
calls[:msg].text_message.photo_url.should == ''
|
|
calls[:msg].text_message.sender_name.should == sender.name
|
|
calls[:msg].text_message.notification_id.should == notification.id
|
|
calls[:msg].text_message.created_at = notification.created_date
|
|
calls[:msg].text_message.clipped_msg.should be_false
|
|
end
|
|
|
|
it "success when online with long message" do
|
|
receiver = FactoryGirl.create(:user)
|
|
receiver_connection = FactoryGirl.create(:connection, user: receiver)
|
|
sender = FactoryGirl.create(:user)
|
|
message = "0" * 203 # 200 is clip size
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_text_message(message, sender, receiver)
|
|
|
|
notification.errors.any?.should be_false
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 1
|
|
calls[:msg].text_message.msg.should == "0" * 200
|
|
calls[:msg].text_message.photo_url.should == ''
|
|
calls[:msg].text_message.sender_name.should == sender.name
|
|
calls[:msg].text_message.notification_id.should == notification.id
|
|
calls[:msg].text_message.created_at = notification.created_date
|
|
calls[:msg].text_message.clipped_msg.should be_true
|
|
end
|
|
|
|
it "fails with profanity" do
|
|
receiver = FactoryGirl.create(:user)
|
|
sender = FactoryGirl.create(:user)
|
|
message = "ass"
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_text_message(message, sender, receiver)
|
|
|
|
notification.errors.any?.should be_true
|
|
notification.errors[:message].should == ['cannot contain profanity']
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "fails when target is same as receiver" do
|
|
receiver = FactoryGirl.create(:user)
|
|
sender = FactoryGirl.create(:user)
|
|
message = "yo"
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_text_message(message, sender, sender)
|
|
|
|
notification.errors.any?.should be_true
|
|
notification.errors[:target_user].should == [ValidationMessages::DIFFERENT_SOURCE_TARGET]
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
|
|
it "fails when there is no message" do
|
|
receiver = FactoryGirl.create(:user)
|
|
sender = FactoryGirl.create(:user)
|
|
message = ''
|
|
calls = count_publish_to_user_calls
|
|
notification = Notification.send_text_message(message, sender, receiver)
|
|
|
|
notification.errors.any?.should be_true
|
|
notification.errors[:message].should == ['is too short (minimum is 1 characters)']
|
|
UserMailer.deliveries.length.should == 0
|
|
calls[:count].should == 0
|
|
end
|
|
end
|
|
end
|