From 745de9bb7775686d721956212c62936e07fd65e6 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 27 Jun 2016 23:31:47 +0200 Subject: [PATCH] sends invitation email to users --- .../management/user_invites_controller.rb | 4 ++++ app/mailers/mailer.rb | 4 ++++ ..._invites.html.erb => user_invite.html.erb} | 10 ++++----- .../management/user_invites/create.html.erb | 2 +- .../management/user_invites/new.html.erb | 6 ++--- config/locales/mailers.en.yml | 5 +++-- config/locales/mailers.es.yml | 5 +++-- config/locales/management.en.yml | 2 +- config/locales/management.es.yml | 2 +- spec/features/emails_spec.rb | 22 +++++++++++++++++++ spec/features/user_invites_spec.rb | 18 +++++++++++++++ 11 files changed, 65 insertions(+), 15 deletions(-) rename app/views/mailer/{user_invites.html.erb => user_invite.html.erb} (55%) create mode 100644 spec/features/user_invites_spec.rb diff --git a/app/controllers/management/user_invites_controller.rb b/app/controllers/management/user_invites_controller.rb index 707759877..b022e6a86 100644 --- a/app/controllers/management/user_invites_controller.rb +++ b/app/controllers/management/user_invites_controller.rb @@ -4,6 +4,10 @@ class Management::UserInvitesController < Management::BaseController end def create + @emails = params[:emails].split + @emails.each do |email| + Mailer.user_invite(email).deliver_later + end end end diff --git a/app/mailers/mailer.rb b/app/mailers/mailer.rb index d987e34cc..55229ab72 100644 --- a/app/mailers/mailer.rb +++ b/app/mailers/mailer.rb @@ -68,6 +68,10 @@ class Mailer < ApplicationMailer end end + def user_invite(email) + mail(to: email, subject: t('mailers.user_invite.subject', org_name: Setting["org_name"])) + end + private def with_user(user, &block) diff --git a/app/views/mailer/user_invites.html.erb b/app/views/mailer/user_invite.html.erb similarity index 55% rename from app/views/mailer/user_invites.html.erb rename to app/views/mailer/user_invite.html.erb index 6d02022d3..43b95626c 100644 --- a/app/views/mailer/user_invites.html.erb +++ b/app/views/mailer/user_invite.html.erb @@ -1,23 +1,23 @@

- <%= t('mailers.user_invites.title', + <%= t('mailers.user_invite.title', org: Setting['org_name']) %>

- <%= t('mailers.user_invites.text', + <%= t('mailers.user_invite.text', org: Setting['org_name']) %>

- <%= link_to t('mailers.user_invites.button'), new_user_registration_path, style: "font-family: 'Open Sans','Helvetica Neue',arial,sans-serif; background: #004A83; border-radius: 6px; color: #fff !important; font-weight: bold; margin: 0px; padding: 10px 15px; text-align: center; text-decoration: none; min-width: 160px; display: inline-block; margin-left: 12px;" %> + <%= link_to t('mailers.user_invite.button'), new_user_registration_url, style: "font-family: 'Open Sans','Helvetica Neue',arial,sans-serif; background: #004A83; border-radius: 6px; color: #fff !important; font-weight: bold; margin: 0px; padding: 10px 15px; text-align: center; text-decoration: none; min-width: 160px; display: inline-block; margin-left: 12px;" %>

- <%= t('mailers.user_invites.ignore') %> + <%= t('mailers.user_invite.ignore') %>

- <%= t('mailers.user_invites.thanks') %> + <%= t('mailers.user_invite.thanks') %>

diff --git a/app/views/management/user_invites/create.html.erb b/app/views/management/user_invites/create.html.erb index def83ef15..3d573532f 100644 --- a/app/views/management/user_invites/create.html.erb +++ b/app/views/management/user_invites/create.html.erb @@ -4,6 +4,6 @@

<%= t('management.user_invites.create.title') %>

- <%= t('management.user_invites.create.success_html') %> + <%= t('management.user_invites.create.success_html', count: @emails.count) %>
diff --git a/app/views/management/user_invites/new.html.erb b/app/views/management/user_invites/new.html.erb index 2779648d2..a49a84538 100644 --- a/app/views/management/user_invites/new.html.erb +++ b/app/views/management/user_invites/new.html.erb @@ -1,12 +1,12 @@

<%= t('management.user_invites.new.title') %>

-
+ <%= form_tag management_user_invites_path do %>

<%= t('management.user_invites.new.info') %>

- + <%= text_area_tag "emails", nil, rows: 5, placeholder: t('management.user_invites.new.info') %>
-
+ <% end %>
diff --git a/config/locales/mailers.en.yml b/config/locales/mailers.en.yml index 6a14540be..9362b3202 100755 --- a/config/locales/mailers.en.yml +++ b/config/locales/mailers.en.yml @@ -46,9 +46,10 @@ en: direct_message_for_sender: subject: "You have send a new private message" title_html: "You have send a new private message to %{receiver} with the content:" - user_invites: + user_invite: ignore: "If you have not requested this invitation don't worry, you can ignore this email." text: "Thank you for applying to join %{org}! In seconds you can start to decide the city you want, just fill the form below:" thanks: "Thank you very much." title: "Welcome to %{org}" - button: Complete registration \ No newline at end of file + button: Complete registration + subject: "Invitation to %{org_name}" \ No newline at end of file diff --git a/config/locales/mailers.es.yml b/config/locales/mailers.es.yml index 86d591134..75523cf6c 100644 --- a/config/locales/mailers.es.yml +++ b/config/locales/mailers.es.yml @@ -46,9 +46,10 @@ es: direct_message_for_sender: subject: "Has enviado un nuevo mensaje privado" title_html: "Has enviado un nuevo mensaje privado a %{receiver} con el siguiente contenido:" - user_invites: + user_invite: ignore: "Si no has solicitado esta invitación no te preocupes, puedes ignorar este correo." text: "¡Gracias por solicitar unirte a %{org}! En unos segundos podrás empezar a decidir la ciudad que quieres, sólo tienes que rellenar el siguiente formulario:" thanks: "Muchas gracias." title: "Bienvenido a %{org}" - button: Completar registro \ No newline at end of file + button: Completar registro + subject: "Invitación a %{org_name}" \ No newline at end of file diff --git a/config/locales/management.en.yml b/config/locales/management.en.yml index 8060ac2c5..a0fffbde4 100644 --- a/config/locales/management.en.yml +++ b/config/locales/management.en.yml @@ -104,5 +104,5 @@ en: submit: Send invites title: User's invites create: - success_html: COUNT invitations have been sent. + success_html: %{count} invitations have been sent. title: User's invites \ No newline at end of file diff --git a/config/locales/management.es.yml b/config/locales/management.es.yml index 749a7f449..e5ee1c074 100644 --- a/config/locales/management.es.yml +++ b/config/locales/management.es.yml @@ -104,5 +104,5 @@ es: submit: Enviar invitaciones title: Invitaciones para usuarios create: - success_html: Se han enviado COUNT invitaciones. + success_html: Se han enviado %{count} invitaciones. title: Invitaciones para usuarios \ No newline at end of file diff --git a/spec/features/emails_spec.rb b/spec/features/emails_spec.rb index f793b5bb7..dcc90ca27 100644 --- a/spec/features/emails_spec.rb +++ b/spec/features/emails_spec.rb @@ -231,4 +231,26 @@ feature 'Emails' do end + context "User invites" do + + scenario "Send an invitation" do + login_as_manager + visit new_management_user_invite_path + + fill_in "emails", with: "john@example.com, ana@example.com, isable@example.com" + click_button "Send invites" + + expect(page).to have_content "3 invitations have been sent." + + expect(unread_emails_for("john@example.com").count).to eq 1 + expect(unread_emails_for("ana@example.com").count).to eq 1 + expect(unread_emails_for("isable@example.com").count).to eq 1 + + email = open_last_email + expect(email).to have_subject("Invitation to Consul") + expect(email).to have_body_text(/#{new_user_registration_path}/) + end + + end + end diff --git a/spec/features/user_invites_spec.rb b/spec/features/user_invites_spec.rb new file mode 100644 index 000000000..5627b0b7e --- /dev/null +++ b/spec/features/user_invites_spec.rb @@ -0,0 +1,18 @@ +require 'rails_helper' + +feature 'User invites' do + + background do + login_as_manager + end + + scenario "Send invitations" do + visit new_management_user_invite_path + + fill_in "emails", with: "john@example.com, ana@example.com, isable@example.com" + click_button "Send invites" + + expect(page).to have_content "3 invitations have been sent." + end + +end \ No newline at end of file