Add accompagnateurs emails in API

This commit is contained in:
Mathieu Magnin 2017-04-14 18:10:39 +02:00
parent bf67b3f7ad
commit 40d897f538
7 changed files with 52 additions and 40 deletions

View file

@ -246,8 +246,8 @@ class Dossier < ActiveRecord::Base
return headers
end
def followers_gestionnaires_emails
follows.includes(:gestionnaire).map { |f| f.gestionnaire }.pluck(:email).join(' ')
def followers_gestionnaires
follows.includes(:gestionnaire).map(&:gestionnaire)
end
def reset!

View file

@ -8,7 +8,8 @@ class DossierSerializer < ActiveModel::Serializer
:simplified_state,
:initiated_at,
:received_at,
:processed_at
:processed_at,
:accompagnateurs
has_one :entreprise
has_one :etablissement
@ -22,4 +23,8 @@ class DossierSerializer < ActiveModel::Serializer
def simplified_state
object.decorate.display_state
end
def accompagnateurs
object.followers_gestionnaires.pluck(:email)
end
end

View file

@ -9,7 +9,7 @@ class DossierTableExportSerializer < ActiveModel::Serializer
:received_at,
:processed_at
attribute :followers_gestionnaires_emails, key: :emails_accompagnateurs
attribute :emails_accompagnateurs
attributes :individual_gender,
:individual_prenom,
@ -31,4 +31,8 @@ class DossierTableExportSerializer < ActiveModel::Serializer
def individual_gender
object.individual.try(:gender)
end
def emails_accompagnateurs
object.followers_gestionnaires.pluck(:email).join(' ')
end
end

View file

@ -50,6 +50,9 @@
"initiated_at": "2017-04-11T12:00:12.000Z",
"received_at": null,
"processed_at": null,
"accompagnateurs": [
"gestionnaire@apientreprise.fr"
],
"entreprise": {
"siren": "440117620",
"capital_social": 537100000,

View file

@ -115,7 +115,7 @@ describe API::V1::DossiersController do
let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure) } }
let(:dossier_id) { dossier.id }
let(:body) { JSON.parse(retour.body, symbolize_names: true) }
let(:field_list) { [:id, :created_at, :updated_at, :archived, :mandataire_social, :entreprise, :etablissement, :cerfa, :types_de_piece_justificative, :pieces_justificatives, :champs, :champs_private, :commentaires, :state, :simplified_state, :initiated_at, :processed_at, :received_at] }
let(:field_list) { [:id, :created_at, :updated_at, :archived, :mandataire_social, :entreprise, :etablissement, :cerfa, :types_de_piece_justificative, :pieces_justificatives, :champs, :champs_private, :commentaires, :state, :simplified_state, :initiated_at, :processed_at, :received_at, :accompagnateurs] }
subject { body[:dossier] }
it 'return REST code 200', :show_in_doc do

View file

@ -572,7 +572,7 @@ describe Dossier do
it { expect(subject[6]).to eq(date1) }
it { expect(subject[7]).to eq(date2) }
it { expect(subject[8]).to eq(date3) }
it { expect(subject[9]).to eq(dossier.followers_gestionnaires_emails) }
it { expect(subject[9]).to be_a_kind_of(String) }
it { expect(subject[10]).to be_nil }
it { expect(subject[11]).to be_nil }
it { expect(subject[12]).to be_nil }
@ -809,40 +809,6 @@ describe Dossier do
end
end
describe '#followers_gestionnaires_emails' do
context 'when there is no follower' do
let(:dossier) { create(:dossier, follows: []) }
subject { dossier.followers_gestionnaires_emails }
it { is_expected.to eq "" }
end
let(:gestionnaire) { create(:gestionnaire) }
let(:follow) { create(:follow, gestionnaire: gestionnaire) }
context 'when there is 1 follower' do
let(:dossier) { create(:dossier, follows: [follow]) }
subject { dossier.followers_gestionnaires_emails }
it { is_expected.to eq gestionnaire.email }
end
let(:gestionnaire2) { create :gestionnaire}
let(:follow2) { create(:follow, gestionnaire: gestionnaire2) }
context 'when there is 2 followers' do
let(:dossier) { create(:dossier, follows: [follow, follow2]) }
subject { dossier.followers_gestionnaires_emails }
it { is_expected.to eq "#{gestionnaire.email} #{gestionnaire2.email}" }
end
end
describe '#update_state_dates' do
let(:state) { 'draft' }
let(:dossier) { create(:dossier, state: state) }

View file

@ -0,0 +1,34 @@
require 'spec_helper'
describe DossierTableExportSerializer do
describe '#emails_accompagnateurs' do
let(:gestionnaire){ create(:gestionnaire) }
let(:follow) { create(:follow, gestionnaire: gestionnaire) }
subject { DossierTableExportSerializer.new(dossier).emails_accompagnateurs }
context 'when there is no accompagnateurs' do
let(:dossier) { create(:dossier, follows: []) }
it { is_expected.to eq('') }
end
context 'when there one accompagnateur' do
let(:dossier) { create(:dossier, follows: [follow]) }
it { is_expected.to eq(gestionnaire.email) }
end
context 'when there is 2 followers' do
let(:gestionnaire2) { create :gestionnaire}
let(:follow2) { create(:follow, gestionnaire: gestionnaire2) }
let(:dossier) { create(:dossier, follows: [follow, follow2]) }
it { is_expected.to eq "#{gestionnaire.email} #{gestionnaire2.email}" }
end
end
end