Merge pull request #3314 from betagouv/fix-contact-to-messagerie
contact: fix sending a message to the messagerie
This commit is contained in:
commit
265fa43f6b
2 changed files with 42 additions and 29 deletions
|
@ -60,11 +60,11 @@ class SupportController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_commentaire
|
def create_commentaire
|
||||||
params = {
|
attributes = {
|
||||||
file: params[:file],
|
file: params[:file],
|
||||||
body: "[#{params[:subject]}]<br><br>#{params[:text]}"
|
body: "[#{params[:subject]}]<br><br>#{params[:text]}"
|
||||||
}
|
}
|
||||||
commentaire = CommentaireService.build_with_email(email, dossier, params)
|
commentaire = CommentaireService.build_with_email(email, dossier, attributes)
|
||||||
commentaire.save!
|
commentaire.save!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ describe SupportController, type: :controller do
|
||||||
before do
|
before do
|
||||||
sign_in user
|
sign_in user
|
||||||
end
|
end
|
||||||
|
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
|
|
||||||
it 'should not have email field' do
|
it 'should not have email field' do
|
||||||
|
@ -51,55 +52,67 @@ describe SupportController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "send form" do
|
describe "send form" do
|
||||||
it 'should create conversation' do
|
subject do
|
||||||
expect(subject).not_to receive(:create_commentaire)
|
post :create, params: { subject: 'bonjour', text: 'un message' }
|
||||||
allow(subject).to receive(:create_conversation).and_return(true)
|
end
|
||||||
|
|
||||||
post :create, params: {
|
it 'creates a conversation on HelpScout' do
|
||||||
subject: 'bonjour',
|
expect_any_instance_of(Helpscout::FormAdapter).to receive(:send_form).and_return(true)
|
||||||
text: 'un message'
|
|
||||||
}
|
expect { subject }.to change(Commentaire, :count).by(0)
|
||||||
|
|
||||||
expect(flash[:notice]).to match('Votre message a été envoyé.')
|
expect(flash[:notice]).to match('Votre message a été envoyé.')
|
||||||
expect(response).to redirect_to root_path(formulaire_contact_general_submitted: true)
|
expect(response).to redirect_to root_path(formulaire_contact_general_submitted: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with dossier" do
|
context 'when a drafted dossier is mentionned' do
|
||||||
let(:user) { dossier.user }
|
|
||||||
let(:dossier) { create(:dossier) }
|
let(:dossier) { create(:dossier) }
|
||||||
|
let(:user) { dossier.user }
|
||||||
|
|
||||||
it 'should create conversation' do
|
subject do
|
||||||
expect(subject).not_to receive(:create_commentaire)
|
|
||||||
allow(subject).to receive(:create_conversation).and_return(true)
|
|
||||||
|
|
||||||
post :create, params: {
|
post :create, params: {
|
||||||
dossier_id: dossier.id,
|
dossier_id: dossier.id,
|
||||||
type: Helpscout::FormAdapter::TYPE_INSTRUCTION,
|
type: Helpscout::FormAdapter::TYPE_INSTRUCTION,
|
||||||
subject: 'bonjour',
|
subject: 'bonjour',
|
||||||
text: 'un message'
|
text: 'un message'
|
||||||
}
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates a conversation on HelpScout' do
|
||||||
|
expect_any_instance_of(Helpscout::FormAdapter).to receive(:send_form).and_return(true)
|
||||||
|
|
||||||
|
expect { subject }.to change(Commentaire, :count).by(0)
|
||||||
|
|
||||||
expect(flash[:notice]).to match('Votre message a été envoyé.')
|
expect(flash[:notice]).to match('Votre message a été envoyé.')
|
||||||
expect(response).to redirect_to root_path(formulaire_contact_general_submitted: true)
|
expect(response).to redirect_to root_path(formulaire_contact_general_submitted: true)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "en_construction" do
|
context 'when a submitted dossier is mentionned' do
|
||||||
let(:dossier) { create(:dossier, :en_construction) }
|
let(:dossier) { create(:dossier, :en_construction) }
|
||||||
|
let(:user) { dossier.user }
|
||||||
|
|
||||||
it 'should create commentaire' do
|
subject do
|
||||||
allow(subject).to receive(:create_commentaire).and_return(true)
|
post :create, params: {
|
||||||
expect(subject).not_to receive(:create_conversation)
|
dossier_id: dossier.id,
|
||||||
|
type: Helpscout::FormAdapter::TYPE_INSTRUCTION,
|
||||||
|
subject: 'bonjour',
|
||||||
|
text: 'un message'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
post :create, params: {
|
it 'posts the message to the dossier messagerie' do
|
||||||
dossier_id: dossier.id,
|
expect_any_instance_of(Helpscout::FormAdapter).not_to receive(:send_form)
|
||||||
type: Helpscout::FormAdapter::TYPE_INSTRUCTION,
|
|
||||||
subject: 'bonjour',
|
|
||||||
text: 'un message'
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(flash[:notice]).to match('Votre message a été envoyé sur la messagerie de votre dossier.')
|
expect { subject }.to change(Commentaire, :count).by(1)
|
||||||
expect(response).to redirect_to messagerie_dossier_path(dossier)
|
|
||||||
end
|
expect(Commentaire.last.email).to eq(user.email)
|
||||||
|
expect(Commentaire.last.dossier).to eq(dossier)
|
||||||
|
expect(Commentaire.last.body).to include('[bonjour]')
|
||||||
|
expect(Commentaire.last.body).to include('un message')
|
||||||
|
|
||||||
|
expect(flash[:notice]).to match('Votre message a été envoyé sur la messagerie de votre dossier.')
|
||||||
|
expect(response).to redirect_to messagerie_dossier_path(dossier)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue