Publications page to the new UI (admin)
This commit is contained in:
parent
d755a23dd9
commit
13e4589905
32 changed files with 440 additions and 714 deletions
|
@ -340,4 +340,152 @@ describe NewAdministrateur::ProceduresController, type: :controller do
|
|||
expect(procedure.reload.api_entreprise_token).to eq(valid_token)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PUT #publish' do
|
||||
let(:procedure) { create(:procedure, administrateur: admin, lien_site_web: lien_site_web) }
|
||||
let(:procedure2) { create(:procedure, :published, administrateur: admin, lien_site_web: lien_site_web) }
|
||||
let(:procedure3) { create(:procedure, :published, lien_site_web: lien_site_web) }
|
||||
let(:lien_site_web) { 'http://some.administration/' }
|
||||
|
||||
context 'when admin is the owner of the procedure' do
|
||||
context 'procedure path does not exist' do
|
||||
let(:path) { 'new_path' }
|
||||
let(:lien_site_web) { 'http://mon-site.gouv.fr' }
|
||||
|
||||
before do
|
||||
put :publish, params: { procedure_id: procedure.id, path: path, lien_site_web: lien_site_web }
|
||||
procedure.reload
|
||||
end
|
||||
|
||||
it 'publish the given procedure' do
|
||||
expect(procedure.publiee?).to be_truthy
|
||||
expect(procedure.path).to eq(path)
|
||||
expect(procedure.lien_site_web).to eq(lien_site_web)
|
||||
end
|
||||
|
||||
it 'redirects to the procedure page' do
|
||||
expect(response.status).to eq 302
|
||||
expect(response.body).to include(admin_procedure_path(procedure.id))
|
||||
expect(flash[:notice]).to have_content 'Démarche publiée'
|
||||
end
|
||||
end
|
||||
|
||||
context 'procedure path exists and is owned by current administrator' do
|
||||
before do
|
||||
put :publish, params: { procedure_id: procedure.id, path: path, lien_site_web: lien_site_web }
|
||||
procedure.reload
|
||||
procedure2.reload
|
||||
end
|
||||
|
||||
let(:path) { procedure2.path }
|
||||
let(:lien_site_web) { 'http://mon-site.gouv.fr' }
|
||||
|
||||
it 'publish the given procedure' do
|
||||
expect(procedure.publiee?).to be_truthy
|
||||
expect(procedure.path).to eq(path)
|
||||
expect(procedure.lien_site_web).to eq(lien_site_web)
|
||||
end
|
||||
|
||||
it 'depubliee previous procedure' do
|
||||
expect(procedure2.depubliee?).to be_truthy
|
||||
end
|
||||
|
||||
it 'redirects to the procedures page' do
|
||||
expect(response.status).to eq 302
|
||||
expect(response.body).to include(admin_procedure_path(procedure.id))
|
||||
expect(flash[:notice]).to have_content 'Démarche publiée'
|
||||
end
|
||||
end
|
||||
|
||||
context 'procedure path exists and is not owned by current administrator' do
|
||||
let(:path) { procedure3.path }
|
||||
let(:lien_site_web) { 'http://mon-site.gouv.fr' }
|
||||
it { expect { put :publish, params: { procedure_id: procedure.id, path: path, lien_site_web: lien_site_web } }.to raise_error(ActiveRecord::RecordInvalid) }
|
||||
end
|
||||
|
||||
context 'procedure path is invalid' do
|
||||
let(:lien_site_web) { 'http://mon-site.gouv.fr' }
|
||||
let(:path) { 'Invalid Procedure Path' }
|
||||
it { expect { put :publish, params: { procedure_id: procedure.id, path: path, lien_site_web: lien_site_web } }.to raise_error(ActiveRecord::RecordInvalid) }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when admin is not the owner of the procedure' do
|
||||
let(:admin_2) { create(:administrateur) }
|
||||
before do
|
||||
sign_out(admin.user)
|
||||
sign_in(admin_2.user)
|
||||
|
||||
put :publish, params: { procedure_id: procedure.id, path: 'fake_path' }
|
||||
procedure.reload
|
||||
end
|
||||
|
||||
it 'fails' do
|
||||
expect(response).to have_http_status(404)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the admin does not provide a lien_site_web' do
|
||||
context 'procedure path is valid but lien_site_web is missing' do
|
||||
let(:path) { 'new_path2' }
|
||||
let(:lien_site_web) { nil }
|
||||
it { expect { put :publish, params: { procedure_id: procedure.id, path: path, lien_site_web: lien_site_web } }.to raise_error(ActiveRecord::RecordInvalid) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #transfer' do
|
||||
let!(:procedure) { create :procedure, :with_service, administrateur: admin }
|
||||
|
||||
before do
|
||||
post :transfer, params: { email_admin: email_admin, procedure_id: procedure.id }
|
||||
procedure.reload
|
||||
end
|
||||
|
||||
subject do
|
||||
post :transfer, params: { email_admin: email_admin, procedure_id: procedure.id }
|
||||
end
|
||||
|
||||
context 'when admin is unknow' do
|
||||
let(:email_admin) { 'plop' }
|
||||
|
||||
it { expect(subject.status).to eq 302 }
|
||||
it { expect(response.body).to include(admin_procedure_publication_path(procedure.id)) }
|
||||
it { expect(flash[:alert]).to be_present }
|
||||
it { expect(flash[:alert]).to eq("Envoi vers #{email_admin} impossible : cet administrateur n'existe pas") }
|
||||
end
|
||||
|
||||
context 'when admin is known' do
|
||||
let!(:new_admin) { create :administrateur, email: 'new_admin@admin.com' }
|
||||
|
||||
context "and its email address is correct" do
|
||||
let(:email_admin) { 'new_admin@admin.com' }
|
||||
|
||||
it { expect(subject.status).to eq 302 }
|
||||
it { expect { subject }.to change(new_admin.procedures, :count).by(1) }
|
||||
|
||||
it "should create a new service" do
|
||||
subject
|
||||
expect(new_admin.procedures.last.service_id).not_to eq(procedure.service_id)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when admin is know but its email was not downcased' do
|
||||
let(:email_admin) { "NEW_admin@adMIN.com" }
|
||||
|
||||
it { expect(subject.status).to eq 302 }
|
||||
it { expect { subject }.to change(Procedure, :count).by(1) }
|
||||
end
|
||||
|
||||
describe "correctly assigns the new admin" do
|
||||
let(:email_admin) { 'new_admin@admin.com' }
|
||||
|
||||
before do
|
||||
subject
|
||||
end
|
||||
|
||||
it { expect(Procedure.last.administrateurs).to eq [new_admin] }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue