Merge branch 'develop' of github.com:sgmap/tps into develop
This commit is contained in:
commit
3ea381413f
45 changed files with 345 additions and 162 deletions
|
@ -9,11 +9,19 @@ describe Admin::PiecesJustificativesController, type: :controller do
|
|||
describe 'GET #show' do
|
||||
let(:procedure) { create(:procedure, administrateur: admin) }
|
||||
let(:procedure_id) { procedure.id }
|
||||
|
||||
subject { get :show, procedure_id: procedure_id }
|
||||
|
||||
context 'when procedure is not found' do
|
||||
let(:procedure_id) { 9_999_999 }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
end
|
||||
|
||||
context 'when procedure have at least a file' do
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure, state: :initiated) }
|
||||
it { expect(subject.status).to eq(403) }
|
||||
end
|
||||
|
||||
context 'when procedure does not belong to admin' do
|
||||
let(:admin_2) { create(:administrateur) }
|
||||
let(:procedure) { create(:procedure, administrateur: admin_2) }
|
||||
|
|
|
@ -66,10 +66,15 @@ describe Admin::ProceduresController, type: :controller do
|
|||
it { expect(subject).to have_http_status(:success) }
|
||||
end
|
||||
|
||||
context 'when procedure have at least a file' do
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure, state: :initiated) }
|
||||
it { expect(subject.status).to eq(403) }
|
||||
end
|
||||
|
||||
context "when procedure doesn't exist" do
|
||||
let(:procedure_id) { bad_procedure_id }
|
||||
|
||||
it { expect(subject).to redirect_to admin_procedures_path }
|
||||
it { expect(subject).to have_http_status(404) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,12 +2,36 @@ require 'spec_helper'
|
|||
|
||||
describe Admin::TypesDeChampController, type: :controller do
|
||||
let(:admin) { create(:administrateur) }
|
||||
let(:procedure) { create(:procedure, administrateur: admin) }
|
||||
|
||||
before do
|
||||
sign_in admin
|
||||
end
|
||||
|
||||
describe 'GET #show' do
|
||||
let(:procedure) { create(:procedure, administrateur: admin) }
|
||||
let(:procedure_id) { procedure.id }
|
||||
|
||||
subject { get :show, procedure_id: procedure_id }
|
||||
|
||||
context 'when procedure is not found' do
|
||||
let(:procedure_id) { 9_999_999 }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
end
|
||||
|
||||
context 'when procedure have at least a file' do
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure, state: :initiated) }
|
||||
it { expect(subject.status).to eq(403) }
|
||||
end
|
||||
|
||||
context 'when procedure does not belong to admin' do
|
||||
let(:admin_2) { create(:administrateur) }
|
||||
let(:procedure) { create(:procedure, administrateur: admin_2) }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#update' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:libelle) { 'mon libelle' }
|
||||
let(:type_champ) { 'text' }
|
||||
let(:description) { 'titi' }
|
||||
|
@ -47,7 +71,7 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
end
|
||||
|
||||
context 'when type_de_champ already exist' do
|
||||
let(:procedure) { create(:procedure, :with_type_de_champ) }
|
||||
let(:procedure) { create(:procedure, :with_type_de_champ, administrateur: admin) }
|
||||
let(:type_de_champ) { procedure.types_de_champ.first }
|
||||
let(:types_de_champ_id) { type_de_champ.id }
|
||||
let(:libelle) { 'toto' }
|
||||
|
@ -77,13 +101,13 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
before do
|
||||
delete :destroy, procedure_id: procedure.id, id: type_de_champ_id, format: :js
|
||||
end
|
||||
|
||||
context 'when type de champs does not exist' do
|
||||
let(:type_de_champ_id) { 99999999 }
|
||||
let(:procedure) { create(:procedure) }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
end
|
||||
context 'when types_de_champ exists' do
|
||||
let(:procedure) { create(:procedure, :with_type_de_champ) }
|
||||
let(:procedure) { create(:procedure, :with_type_de_champ, administrateur: admin) }
|
||||
let(:type_de_champ_id) { procedure.types_de_champ.first.id }
|
||||
it { expect(subject.status).to eq(200) }
|
||||
it 'destroy type de champ' do
|
||||
|
@ -92,7 +116,6 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
end
|
||||
end
|
||||
context 'when procedure and type de champs are not linked' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:type_de_champ) { create(:type_de_champ) }
|
||||
let(:type_de_champ_id) { type_de_champ.id }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
|
@ -101,28 +124,25 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
|
||||
describe 'POST #move_up' do
|
||||
subject { post :move_up, procedure_id: procedure.id, index: index, format: :js }
|
||||
|
||||
context 'when procedure have no type de champ' do
|
||||
let(:index) { 0 }
|
||||
let(:procedure) { create(:procedure) }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when procedure have only one type de champ' do
|
||||
let(:index) { 1 }
|
||||
let(:procedure) { create(:procedure) }
|
||||
let!(:type_de_champ) { create(:type_de_champ, procedure: procedure) }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when procedure have tow type de champs' do
|
||||
context 'when index == 0' do
|
||||
let(:index) { 0 }
|
||||
let(:procedure) { create(:procedure) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ, procedure: procedure) }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when index > 0' do
|
||||
let(:index) { 1 }
|
||||
let(:procedure) { create(:procedure) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
|
||||
|
@ -141,9 +161,10 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
|
||||
describe 'POST #move_down' do
|
||||
let(:request) { post :move_down, procedure_id: procedure.id, index: index, format: :js }
|
||||
subject { request }
|
||||
let(:index) { 0 }
|
||||
let(:procedure) { create(:procedure) }
|
||||
|
||||
subject { request }
|
||||
|
||||
context 'when procedure have no type de champ' do
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe FranceConnectController, type: :controller do
|
||||
describe FranceConnect::EntrepriseController, type: :controller do
|
||||
|
||||
describe '.login' do
|
||||
it 'redirect to france connect serveur' do
|
||||
|
@ -26,7 +26,7 @@ describe FranceConnectController, type: :controller do
|
|||
let(:current_user) { User.find_by_email(email) }
|
||||
|
||||
before do
|
||||
allow(FranceConnectService).to receive(:retrieve_user_informations).and_return(user_info)
|
||||
allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise).and_return(user_info)
|
||||
get :callback, code: code
|
||||
end
|
||||
|
||||
|
@ -43,7 +43,7 @@ describe FranceConnectController, type: :controller do
|
|||
|
||||
context 'when code is not correct' do
|
||||
before do
|
||||
allow(FranceConnectService).to receive(:retrieve_user_informations) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') }
|
||||
allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') }
|
||||
get :callback, code: code
|
||||
end
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Users::RecapitulatifController, type: :controller do
|
||||
let(:dossier) { create(:dossier, :with_user) }
|
||||
let(:dossier) { create(:dossier, :with_user, :with_procedure) }
|
||||
let(:bad_dossier_id) { Dossier.count + 100000 }
|
||||
|
||||
before do
|
||||
|
@ -55,6 +55,15 @@ describe Users::RecapitulatifController, type: :controller do
|
|||
it 'a message informe user what his dossier is initiated' do
|
||||
expect(flash[:notice]).to include('Dossier déposé avec succès.')
|
||||
end
|
||||
|
||||
it 'Notification email is send' do
|
||||
expect(NotificationMailer).to receive(:dossier_submitted).and_return(NotificationMailer)
|
||||
expect(NotificationMailer).to receive(:deliver_now!)
|
||||
|
||||
dossier.validated!
|
||||
post :submit, dossier_id: dossier.id
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ describe Users::SessionsController, type: :controller do
|
|||
|
||||
context 'when user is connect with france connect' do
|
||||
it 'redirect to france connect logout page' do
|
||||
expect(response).to redirect_to(FRANCE_CONNECT.logout_endpoint)
|
||||
expect(response).to redirect_to(FRANCE_CONNECT.entreprise_logout_endpoint)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
|||
feature 'add a new type de champs', js: true do
|
||||
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
|
||||
before do
|
||||
login_as administrateur, scope: :administrateur
|
||||
|
|
|
@ -7,7 +7,7 @@ feature 'move down button type de champs', js: true do
|
|||
login_as administrateur, scope: :administrateur
|
||||
end
|
||||
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ, procedure: procedure, order_place: 2) }
|
||||
|
|
|
@ -7,7 +7,7 @@ feature 'move up button type de champs', js: true do
|
|||
login_as administrateur, scope: :administrateur
|
||||
end
|
||||
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ, procedure: procedure, order_place: 2) }
|
||||
|
|
58
spec/features/admin/procedure_locked_spec.rb
Normal file
58
spec/features/admin/procedure_locked_spec.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'procedure locked' do
|
||||
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
|
||||
before do
|
||||
login_as administrateur, scope: :administrateur
|
||||
visit admin_procedure_path(procedure)
|
||||
end
|
||||
|
||||
context 'when procedure have no file' do
|
||||
scenario 'info label is not present' do
|
||||
expect(page).not_to have_content('La procédure ne peut plus être modifiée car un usagé a déjà déposé un dossier')
|
||||
end
|
||||
end
|
||||
context 'when procedure have at least a file' do
|
||||
before do
|
||||
create(:dossier, :with_user, procedure: procedure, state: :initiated)
|
||||
visit admin_procedure_path(procedure)
|
||||
end
|
||||
|
||||
scenario 'info label is present' do
|
||||
expect(page).to have_content('La procédure ne peut plus être modifiée car un usagé a déjà déposé un dossier')
|
||||
end
|
||||
|
||||
context 'when user click on Description tab' do
|
||||
before do
|
||||
page.click_on 'Description'
|
||||
end
|
||||
|
||||
scenario 'page doest not change' do
|
||||
expect(page).to have_css('#procedure_show')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user click on Champs tab' do
|
||||
before do
|
||||
page.click_on 'Champs'
|
||||
end
|
||||
|
||||
scenario 'page doest not change' do
|
||||
expect(page).to have_css('#procedure_show')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user click on Pieces Justificatiives tab' do
|
||||
before do
|
||||
page.click_on 'Pièces justificatives'
|
||||
end
|
||||
|
||||
scenario 'page doest not change' do
|
||||
expect(page).to have_css('#procedure_show')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -16,8 +16,8 @@ feature 'France Connect Connexion' do
|
|||
#
|
||||
# context 'when authentification is ok' do
|
||||
# before do
|
||||
# allow_any_instance_of(FranceConnectClient).to receive(:authorization_uri).and_return(france_connect_callback_path(code: code))
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations).and_return(Hashie::Mash.new(email: 'patator@cake.com'))
|
||||
# allow_any_instance_of(FranceConnectEntrepriseClient).to receive(:authorization_uri).and_return(france_connect_callback_path(code: code))
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise).and_return(Hashie::Mash.new(email: 'patator@cake.com'))
|
||||
# page.find_by_id('btn_fc').click
|
||||
# end
|
||||
#
|
||||
|
@ -28,8 +28,8 @@ feature 'France Connect Connexion' do
|
|||
#
|
||||
# context 'when authentification is not ok' do
|
||||
# before do
|
||||
# allow_any_instance_of(FranceConnectClient).to receive(:authorization_uri).and_return(france_connect_callback_path(code: code))
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') }
|
||||
# allow_any_instance_of(FranceConnectEntrepriseClient).to receive(:authorization_uri).and_return(france_connect_callback_path(code: code))
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') }
|
||||
# page.find_by_id('btn_fc').click
|
||||
# end
|
||||
#
|
||||
|
@ -55,8 +55,8 @@ feature 'France Connect Connexion' do
|
|||
# let(:siret) { '00000000000000' }
|
||||
# let(:user_infos) { Hashie::Mash.new(email: email, siret: siret) }
|
||||
# before do
|
||||
# allow_any_instance_of(FranceConnectClient).to receive(:authorization_uri).and_return(france_connect_callback_path(code: code))
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations).and_return(user_infos)
|
||||
# allow_any_instance_of(FranceConnectEntrepriseClient).to receive(:authorization_uri).and_return(france_connect_callback_path(code: code))
|
||||
# allow(FranceConnectService).to receive(:retrieve_user_informations_entreprise).and_return(user_infos)
|
||||
# page.find_by_id('btn_fc').click
|
||||
# end
|
||||
# context 'when starting page is dossiers list' do
|
||||
|
|
|
@ -18,8 +18,20 @@ RSpec.describe NotificationMailer, type: :mailer do
|
|||
|
||||
subject(:subject) { described_class.dossier_validated(dossier) }
|
||||
|
||||
it { expect(subject.body).to match("Votre dossier N°#{dossier.id} a été validé par votre gestionnaire.") }
|
||||
it { expect(subject.body).to match("Votre dossier N°#{dossier.id} a été validé par votre accompagnateur.") }
|
||||
it { expect(subject.body).to include("Afin de finaliser son dépot, merci de vous rendre sur #{users_dossier_recapitulatif_url(dossier_id: dossier.id)}") }
|
||||
it { expect(subject.subject).to eq("Votre dossier TPS N°#{dossier.id} a été validé") }
|
||||
end
|
||||
|
||||
describe ".dossier_submitted" do
|
||||
let(:user) { create(:user) }
|
||||
let(:dossier) { create(:dossier, :with_procedure, user: user) }
|
||||
|
||||
subject(:subject) { described_class.dossier_submitted(dossier) }
|
||||
|
||||
it { expect(subject.body).to match("Nous vous confirmons que votre dossier N°#{dossier.id} a été déposé") }
|
||||
it { expect(subject.body).to match("aurpès de #{dossier.procedure.organisation} avec succès") }
|
||||
it { expect(subject.body).to match("ce jour à #{dossier.updated_at}.") }
|
||||
it { expect(subject.subject).to eq("Votre dossier TPS N°#{dossier.id} a été déposé") }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe FranceConnectClient do
|
||||
describe FranceConnectEntrepriseClient do
|
||||
describe '.initialize' do
|
||||
it 'create an openid client' do
|
||||
expect(described_class).to be < OpenIDConnect::Client
|
|
@ -51,7 +51,7 @@ describe Procedure do
|
|||
describe '#switch_types_de_champ' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:index) { 0 }
|
||||
subject { procedure.switch_types_de_champ index}
|
||||
subject { procedure.switch_types_de_champ index }
|
||||
|
||||
context 'when procedure have no types_de_champ' do
|
||||
it { expect(subject).to eq(false) }
|
||||
|
@ -74,5 +74,31 @@ describe Procedure do
|
|||
it { expect(subject).to eq(false) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'locked?' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
|
||||
subject { procedure.locked? }
|
||||
|
||||
context 'when procedure does not have dossier' do
|
||||
it { is_expected.to be_falsey }
|
||||
end
|
||||
|
||||
context 'when procedure have dossier with state draft' do
|
||||
before do
|
||||
create(:dossier, :with_user, procedure: procedure, state: :draft)
|
||||
end
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
end
|
||||
|
||||
context 'when procedure have dossier with state initiated' do
|
||||
before do
|
||||
create(:dossier, :with_user, procedure: procedure, state: :initiated)
|
||||
end
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe FranceConnectService do
|
||||
describe '.retrieve_user_informations' do
|
||||
describe '.retrieve_user_informations_entreprise' do
|
||||
|
||||
let(:code) { 'plop' }
|
||||
let(:access_token) { 'my access_token' }
|
||||
|
@ -10,15 +10,15 @@ describe FranceConnectService do
|
|||
let(:user_info_hash) { {'email' => email, 'siret' => siret} }
|
||||
let(:user_info) { instance_double('OpenIDConnect::ResponseObject::UserInfo', raw_attributes: user_info_hash, email: email) }
|
||||
|
||||
subject { described_class.retrieve_user_informations code }
|
||||
subject { described_class.retrieve_user_informations_entreprise code }
|
||||
|
||||
before do
|
||||
allow_any_instance_of(FranceConnectClient).to receive(:access_token!).and_return(access_token)
|
||||
allow_any_instance_of(FranceConnectEntrepriseClient).to receive(:access_token!).and_return(access_token)
|
||||
allow(access_token).to receive(:userinfo!).and_return(user_info)
|
||||
end
|
||||
it 'set code for FranceConnectClient' do
|
||||
expect_any_instance_of(FranceConnectClient).to receive(:authorization_code=).with(code)
|
||||
described_class.retrieve_user_informations code
|
||||
it 'set code for FranceConnectEntrepriseClient' do
|
||||
expect_any_instance_of(FranceConnectEntrepriseClient).to receive(:authorization_code=).with(code)
|
||||
described_class.retrieve_user_informations_entreprise code
|
||||
end
|
||||
|
||||
it 'returns user informations in a object' do
|
||||
|
|
|
@ -25,7 +25,7 @@ describe 'dossiers/show.html.haml', type: :view do
|
|||
end
|
||||
|
||||
it "le texte d'information des droits est correct" do
|
||||
expect(rendered).to have_content("J'autorise les organismes publics à vérifier les informations de mon entreprise auprès des administrations concernées. Ces informations resteront strictement confidentielles.")
|
||||
expect(rendered).to have_content("J'autorise les décideurs publics à vérifier les informations de mon organisation auprès des administrations concernées. Ces informations resteront strictement confidentielles.")
|
||||
end
|
||||
|
||||
it "les informations de l'entreprise sont présents" do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue