diff --git a/Changelog.md b/Changelog.md index d4ed93ea39938be70573554cfbc12966f65ae73f..265d9581b1471f2a7fa31feb39d8f84817d4c9bd 100644 --- a/Changelog.md +++ b/Changelog.md @@ -36,6 +36,7 @@ If so, please delete it since it will prevent the federation from working proper * Render mentions as links in comments [#7327](https://github.com/diaspora/diaspora/pull/7327) * Add support for mentions in comments to the front-end [#7386](https://github.com/diaspora/diaspora/pull/7386) * Support direct links to comments on mobile [#7508](https://github.com/diaspora/diaspora/pull/7508) +* Add inviter first and last name in the invitation e-mail [#7484](https://github.com/diaspora/diaspora/pull/7484) # 0.6.8.0 diff --git a/app/mailers/notifier.rb b/app/mailers/notifier.rb index 69fdfe11bf405b33231fad5b82f6d7b0b8661ddc..d58a58761ce31d4b9193e103be382ecf59254b55 100644 --- a/app/mailers/notifier.rb +++ b/app/mailers/notifier.rb @@ -44,9 +44,9 @@ class Notifier < ActionMailer::Base @invitation_code = invitation_code I18n.with_locale(locale) do - mail_opts = {:to => email, :from => AppConfig.mail.sender_address, - :subject => I18n.t('notifier.invited_you', :name => @inviter.name), - :host => AppConfig.pod_uri.host} + mail_opts = {to: email, from: "\"#{AppConfig.settings.pod_name}\" <#{AppConfig.mail.sender_address}>", + subject: I18n.t("notifier.invited_you", name: @inviter.name), + host: AppConfig.pod_uri.host} mail(mail_opts) do |format| format.text { render :layout => nil } diff --git a/app/models/person.rb b/app/models/person.rb index 13be8ec8b1c3aab5a204b909d6375f719aecd9c6..d76cfcb927a10c5fcc1a64ef5f334a38cee9a700 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -22,7 +22,7 @@ class Person < ActiveRecord::Base end has_one :profile, dependent: :destroy - delegate :last_name, :image_url, :tag_string, :bio, :location, + delegate :last_name, :full_name, :image_url, :tag_string, :bio, :location, :gender, :birthday, :formatted_birthday, :tags, :searchable, :public_details?, to: :profile accepts_nested_attributes_for :profile diff --git a/app/models/user.rb b/app/models/user.rb index 940a48f254283510805f01158288b4302492797b..2061efc9b9ef0ab5504d53a5f3d9506b41223162 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -46,7 +46,7 @@ class User < ActiveRecord::Base delegate :guid, :public_key, :posts, :photos, :owns?, :image_url, :diaspora_handle, :name, :atom_url, :profile_url, :profile, :url, - :first_name, :last_name, :gender, :participations, to: :person + :first_name, :last_name, :full_name, :gender, :participations, to: :person delegate :id, :guid, to: :person, prefix: true has_many :aspects, -> { order('order_id ASC') } diff --git a/app/views/notifier/invite.markerb b/app/views/notifier/invite.markerb index 1e00c6c0a8ac851afb9e1b0f15c96451bdae7bbb..8c20a00c0685a0cffd1f3781aed0e0ac9b59cba0 100644 --- a/app/views/notifier/invite.markerb +++ b/app/views/notifier/invite.markerb @@ -1 +1,6 @@ -<%= t('.message', :invite_url => invite_code_url(@invitation_code), :diasporafoundation_url => 'https://diasporafoundation.org/', :diaspora_id => @inviter.try(:diaspora_handle)) %> +<%= t('.message', + invite_url: invite_code_url(@invitation_code), + diasporafoundation_url: 'https://diasporafoundation.org/', + user: @inviter.try(:full_name).empty? ? @inviter.try(:diaspora_handle) : "#{@inviter.name} (#{@inviter.diaspora_handle})", + diaspora_id: @inviter.try(:diaspora_handle)) +%> diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index 931dfceda632175576f746ca869562fd35c3f66b..10f82eb236cc8c987e47372a98989fce1acf1742 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -807,7 +807,7 @@ en: message: |- Hello! - You have been invited to join diaspora* by %{diaspora_id}! + You have been invited to join diaspora* by %{user}! Click this link to get started diff --git a/features/desktop/invitations.feature b/features/desktop/invitations.feature index dd38873ccd29ad4342d44b70634d6d5a6103d825..eca4ef758aefacd65eff4778a2efe5090c060789 100644 --- a/features/desktop/invitations.feature +++ b/features/desktop/invitations.feature @@ -59,6 +59,7 @@ Feature: Invitations And I press "Send an invitation" Then I should see a flash message indicating success And I should have 1 Devise email delivery + And I should see "You have been invited to join diaspora* by Alice Smith" in the last sent email And I should not see "change your notification settings" in the last sent email Scenario: sends an invitation from the people search page diff --git a/features/step_definitions/user_steps.rb b/features/step_definitions/user_steps.rb index f01025a076de2da668eda0de0924b743bc57f902..7eb0e2b6eeec41ad7fe243096212b40b09cb9d3c 100644 --- a/features/step_definitions/user_steps.rb +++ b/features/step_definitions/user_steps.rb @@ -168,10 +168,14 @@ Then /^I should have (\d+) email delivery$/ do |n| ActionMailer::Base.deliveries.length.should == n.to_i end -Then /^I should not see "([^\"]*)" in the last sent email$/ do |text| +Then /^I should( not)? see "([^\"]*)" in the last sent email$/ do |negate, text| email_text = Devise.mailer.deliveries.first.body.to_s email_text = Devise.mailer.deliveries.first.html_part.body.raw_source if email_text.blank? - email_text.should_not match(text) + if negate + expect(email_text).to_not have_content(text) + else + expect(email_text).to have_content(text) + end end When /^"([^\"]+)" has posted a (public )?status message with a photo$/ do |email, public_status| diff --git a/spec/mailers/notifier_spec.rb b/spec/mailers/notifier_spec.rb index 6594f840889366ca9ae8578aacbd94073b153eb0..12ee1dd78691c18121a297047c5ef3b64fcb4867 100644 --- a/spec/mailers/notifier_spec.rb +++ b/spec/mailers/notifier_spec.rb @@ -501,6 +501,37 @@ describe Notifier, type: :mailer do end end + describe ".invite" do + let(:email) { Notifier.invite(alice.email, nil, bob, "1234", "en") } + + it "goes to the right person" do + expect(email.to).to eq([alice.email]) + end + + it "FROM: header should be the pod name + default sender address" do + expect(email["From"].to_s).to eq("#{pod_name} <#{AppConfig.mail.sender_address}>") + end + + it "has the correct subject" do + expect(email.subject).to eq(I18n.translate("notifier.invited_you", name: bob.name)) + end + + it "has the inviter name in the body" do + expect(email.body.encoded).to include("#{bob.name} (#{bob.diaspora_handle})") + end + + it "has the inviter id if the name is nil" do + bob.person.profile.update_attributes(first_name: "", last_name: "") + mail = Notifier.invite(alice.email, nil, bob, "1234", "en") + expect(email.body.encoded).to_not include("#{bob.name} (#{bob.diaspora_handle})") + expect(mail.body.encoded).to include(bob.person.diaspora_handle) + end + + it "has the invitation code in the body" do + expect(email.body.encoded).to include("/i/1234") + end + end + describe ".csrf_token_fail" do let(:email) { Notifier.send_notification("csrf_token_fail", alice.id) }