FIX: if full user name is not provided, username should be present in email From header

This commit is contained in:
Arpit Jalan 2014-12-03 13:12:05 +05:30
parent a05408ac9d
commit f84bdfdde3
2 changed files with 11 additions and 8 deletions

View file

@ -127,7 +127,7 @@ class UserNotifications < ActionMailer::Base
title: post.topic.title, title: post.topic.title,
post: post, post: post,
username: post.user.username, username: post.user.username,
from_alias: SiteSetting.enable_email_names ? post.user.name : post.user.username, from_alias: (SiteSetting.enable_email_names && !post.user.name.empty?) ? post.user.name : post.user.username,
allow_reply_by_email: true, allow_reply_by_email: true,
use_site_subject: true, use_site_subject: true,
add_re_to_subject: true, add_re_to_subject: true,
@ -173,7 +173,7 @@ class UserNotifications < ActionMailer::Base
user_name = @notification.data_hash[:original_username] user_name = @notification.data_hash[:original_username]
if @post && SiteSetting.enable_email_names if @post && SiteSetting.enable_email_names
user_name = User.find_by(id: @post.user_id).name user_name = User.find_by(id: @post.user_id).name if !User.find_by(id: @post.user_id).name.empty?
end end
notification_type = opts[:notification_type] || Notification.types[@notification.notification_type].to_s notification_type = opts[:notification_type] || Notification.types[@notification.notification_type].to_s

View file

@ -131,11 +131,11 @@ describe UserNotifications do
end end
describe '.user_posted' do describe '.user_posted' do
let(:response_by_user) { Fabricate(:user, name: "John Doe") } let(:response_by_user) { Fabricate(:user, name: "John Doe", username: "john") }
let(:post) { Fabricate(:post) } let(:post) { Fabricate(:post) }
let(:response) { Fabricate(:post, topic: post.topic, user: response_by_user)} let(:response) { Fabricate(:post, topic: post.topic, user: response_by_user)}
let(:user) { Fabricate(:user) } let(:user) { Fabricate(:user) }
let(:notification) { Fabricate(:notification, user: user) } let(:notification) { Fabricate(:notification, user: user, data: {original_username: response_by_user.username}.to_json) }
it 'generates a correct email' do it 'generates a correct email' do
SiteSetting.stubs(:enable_email_names).returns(false) SiteSetting.stubs(:enable_email_names).returns(false)
@ -144,6 +144,9 @@ describe UserNotifications do
# from should not include full user name if "show user full names" is disabled # from should not include full user name if "show user full names" is disabled
expect(mail[:from].display_names).to_not eql(['John Doe']) expect(mail[:from].display_names).to_not eql(['John Doe'])
# from should include username if "show user full names" is disabled
expect(mail[:from].display_names).to eql(['john'])
# subject should not include category name # subject should not include category name
expect(mail.subject).not_to match(/Uncategorized/) expect(mail.subject).not_to match(/Uncategorized/)
@ -160,18 +163,18 @@ describe UserNotifications do
end end
describe '.user_private_message' do describe '.user_private_message' do
let(:response_by_user) { Fabricate(:user, name: "John Doe") } let(:response_by_user) { Fabricate(:user, name: "", username: "john") }
let(:topic) { Fabricate(:private_message_topic) } let(:topic) { Fabricate(:private_message_topic) }
let(:response) { Fabricate(:post, topic: topic, user: response_by_user)} let(:response) { Fabricate(:post, topic: topic, user: response_by_user)}
let(:user) { Fabricate(:user) } let(:user) { Fabricate(:user) }
let(:notification) { Fabricate(:notification, user: user) } let(:notification) { Fabricate(:notification, user: user, data: {original_username: response_by_user.username}.to_json) }
it 'generates a correct email' do it 'generates a correct email' do
SiteSetting.stubs(:enable_email_names).returns(true) SiteSetting.stubs(:enable_email_names).returns(true)
mail = UserNotifications.user_private_message(response.user, post: response, notification: notification) mail = UserNotifications.user_private_message(response.user, post: response, notification: notification)
# from should include full user name # from should include username if full user name is not provided
expect(mail[:from].display_names).to eql(['John Doe']) expect(mail[:from].display_names).to eql(['john'])
# subject should include "[PM]" # subject should include "[PM]"
expect(mail.subject).to match("[PM]") expect(mail.subject).to match("[PM]")