require "test_helper" class UserMailerTest < ActionMailer::TestCase def test_html_layout_is_used email = UserMailer.message_notification(create(:message)) assert_match(/ t, :tag => "one") create(:tracetag, :trace => t, :tag => "two") create(:tracetag, :trace => t, :tag => "three") end email = UserMailer.gpx_success(trace, 100) assert_match("one, two, three", email.html_part.body.to_s) end def test_gpx_success_all_traces_link trace = create(:trace) email = UserMailer.gpx_success(trace, 100) body = Rails::Dom::Testing.html_document_fragment.parse(email.html_part.body) url = Rails.application.routes.url_helpers.url_for(:controller => "traces", :action => "mine", :host => Settings.server_url, :protocol => Settings.server_protocol) assert_select body, "a[href='#{url}']" end def test_gpx_success_trace_link trace = create(:trace) email = UserMailer.gpx_success(trace, 100) body = Rails::Dom::Testing.html_document_fragment.parse(email.html_part.body) url = Rails.application.routes.url_helpers.show_trace_url(trace.user, trace, :host => Settings.server_url, :protocol => Settings.server_protocol) assert_select body, "a[href='#{url}']", :text => trace.name end def test_gpx_failure_no_trace_link trace = create(:trace) email = UserMailer.gpx_failure(trace, "some error") body = Rails::Dom::Testing.html_document_fragment.parse(email.html_part.body) url = Rails.application.routes.url_helpers.show_trace_url(trace.user, trace, :host => Settings.server_url, :protocol => Settings.server_protocol) assert_select body, "a[href='#{url}']", :count => 0 end def test_html_encoding user = create(:user, :display_name => "Jack & Jill
") message = create(:message, :sender => user) email = UserMailer.message_notification(message) assert_match("Jack & Jill
", email.text_part.body.to_s) assert_match("Jack & Jill <br>", email.html_part.body.to_s) end def test_diary_comment_notification create(:language, :code => "en") user = create(:user) other_user = create(:user) diary_entry = create(:diary_entry, :user => user) diary_comment = create(:diary_comment, :diary_entry => diary_entry) email = UserMailer.diary_comment_notification(diary_comment, other_user) body = Rails::Dom::Testing.html_document_fragment.parse(email.html_part.body) url = Rails.application.routes.url_helpers.diary_entry_url(user, diary_entry, :host => Settings.server_url, :protocol => Settings.server_protocol) unsubscribe_url = Rails.application.routes.url_helpers.diary_entry_unsubscribe_url(user, diary_entry, :host => Settings.server_url, :protocol => Settings.server_protocol) assert_select body, "a[href^='#{url}']" assert_select body, "a[href='#{unsubscribe_url}']", :count => 1 end end