From 91860cb4097908cd21b9cbccbd64001cec6a7bef Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 16 Jun 2016 11:23:03 +0200 Subject: [PATCH] validates that a user does not want to receive direct messages --- app/views/direct_messages/new.html.erb | 19 +++++++++-- config/locales/en.yml | 4 +++ config/locales/es.yml | 5 +++ spec/features/direct_messages_spec.rb | 44 ++++++++++++++++++-------- 4 files changed, 56 insertions(+), 16 deletions(-) diff --git a/app/views/direct_messages/new.html.erb b/app/views/direct_messages/new.html.erb index 4c888ccd0..3413f26f0 100644 --- a/app/views/direct_messages/new.html.erb +++ b/app/views/direct_messages/new.html.erb @@ -3,11 +3,24 @@ <%= render 'shared/back_link' %>

- <%= t("users.direct_messages.new.title", - receiver: @receiver.name) %> + <%= t("users.direct_messages.new.title", receiver: @receiver.name) %>

- <% if can? :create, @direct_message %> + <% if not current_user %> +
+

+ <%= t("users.direct_messages.new.authenticate", + signin: link_to(t("users.direct_messages.new.signin"), new_user_session_path), + signup: link_to(t("users.direct_messages.new.signup"), new_user_registration_path)).html_safe %> +

+
+ <% elsif not @receiver.email_on_direct_message? %> +
+

+ <%= t("users.direct_messages.new.direct_messages_bloqued") %> +

+
+ <% elsif can? :create, @direct_message %> <%= form_for [@receiver, @direct_message] do |f| %> <%= render "shared/errors", resource: @direct_message %> diff --git a/config/locales/en.yml b/config/locales/en.yml index e78f9c4d0..eb28cf18d 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -504,11 +504,15 @@ en: direct_messages: new: body_label: Message + direct_messages_bloqued: "This user has decided not to receive direct messages" submit_button: Send message title: Send private message to %{receiver} title_label: Title verified_only: To send a private message %{verify_account} verify_account: verify your account + authenticate: You must %{signin} or %{signup} to continue. + signin: sign in + signup: sign up show: receiver: Message sent to %{receiver} show: diff --git a/config/locales/es.yml b/config/locales/es.yml index 592bc9213..bf46a8258 100755 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -143,6 +143,7 @@ es: accept_terms_title: Acepto la Política de privacidad y las Condiciones de uso conditions: Condiciones de uso debate: el debate + direct_message: el mensaje privado error: error errors: errores not_saved: 'impidieron guardar %{resource}:' @@ -504,11 +505,15 @@ es: direct_messages: new: body_label: "Mensaje" + direct_messages_bloqued: "Este usuarios ha decidido no recibir mensajes directos" submit_button: "Enviar mensaje" title: Enviar mensaje privado a %{receiver} title_label: "Título" verified_only: Para enviar un mensaje privado %{verify_account} verify_account: verifica tu cuenta + authenticate: Necesitas %{signin} o %{signup}. + signin: iniciar sesión + signup: registrarte show: receiver: Mensaje enviado a %{receiver} show: diff --git a/spec/features/direct_messages_spec.rb b/spec/features/direct_messages_spec.rb index 76b7a150c..8ec949e9a 100644 --- a/spec/features/direct_messages_spec.rb +++ b/spec/features/direct_messages_spec.rb @@ -2,6 +2,10 @@ require 'rails_helper' feature 'Direct messages' do + background do + Setting[:direct_message_max_per_day] = 3 + end + scenario "Create" do sender = create(:user, :level_two) receiver = create(:user, :level_two) @@ -44,19 +48,37 @@ feature 'Direct messages' do expect(page).to_not have_link "Send private message" end - scenario "Accessing form directly" do - user = create(:user) - author = create(:user) - proposal = create(:proposal, author: author) + scenario "Unverified user" do + sender = create(:user) + receiver = create(:user) - login_as(user) - visit new_proposal_notification_path(proposal_id: proposal.id) + login_as(sender) + visit new_user_direct_message_path(receiver) - expect(current_path).to eq(proposals_path) - expect(page).to have_content("You do not have permission to carry out the action") + expect(page).to have_content "To send a private message verify your account" + expect(page).to_not have_link "Send private message" end - pending "unverified user" + scenario "User not logged in" do + sender = create(:user) + receiver = create(:user) + + visit new_user_direct_message_path(receiver) + + expect(page).to have_content "You must sign in or sign up to continue." + expect(page).to_not have_link "Send private message" + end + + scenario "Accessing form directly" do + sender = create(:user, :level_two) + receiver = create(:user, :level_two, email_on_direct_message: false) + + login_as(sender) + visit new_user_direct_message_path(receiver) + + expect(page).to have_content("This user has decided not to receive direct messages") + expect(page).to_not have_css("#direct_message_title") + end end @@ -74,10 +96,6 @@ feature 'Direct messages' do context "Limits" do - background do - Setting[:direct_message_max_per_day] = 3 - end - scenario "Can only send a maximum number of direct messages per day" do sender = create(:user, :level_two) receiver = create(:user, :level_two)