Merge pull request #1189 from sgmap/fix-clone

Fix New from existing
This commit is contained in:
gregoirenovel 2018-01-09 11:12:39 +01:00 committed by GitHub
commit fff6019858
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 9 deletions

View file

@ -160,15 +160,20 @@ class Admin::ProceduresController < AdminController
def clone def clone
procedure = Procedure.find(params[:procedure_id]) procedure = Procedure.find(params[:procedure_id])
new_procedure = procedure.clone(current_administrateur) new_procedure = procedure.clone(current_administrateur)
if new_procedure
if new_procedure.save
flash.notice = 'Procédure clonée' flash.notice = 'Procédure clonée'
redirect_to edit_admin_procedure_path(id: new_procedure.id) redirect_to edit_admin_procedure_path(id: new_procedure.id)
else else
flash.now.alert = procedure.errors.full_messages if params[:from_new_from_existing].present?
flash.alert = new_procedure.errors.full_messages
redirect_to new_from_existing_admin_procedures_path
else
flash.now.alert = new_procedure.errors.full_messages
render 'index' render 'index'
end end
end
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
flash.alert = 'Procédure inexistante' flash.alert = 'Procédure inexistante'

View file

@ -119,7 +119,7 @@ class Procedure < ActiveRecord::Base
procedure.refused_mail = refused_mail.try(:dup) procedure.refused_mail = refused_mail.try(:dup)
procedure.without_continuation_mail = without_continuation_mail.try(:dup) procedure.without_continuation_mail = without_continuation_mail.try(:dup)
return procedure if procedure.save procedure
end end
def brouillon? def brouillon?

View file

@ -1,5 +1,5 @@
.row.white-back .row.white-back
%a{ href: '/admin/procedures/new_from_existing', class: 'btn-sm btn-primary' } %a{ href: new_from_existing_admin_procedures_path, class: 'btn-sm btn-primary' }
Créer une nouvelle procédure à partir d'une procédure existante Créer une nouvelle procédure à partir d'une procédure existante
.row.white-back .row.white-back

View file

@ -16,6 +16,6 @@
= procedure.libelle = procedure.libelle
%td{ style: 'padding-right: 10px; padding-left: 10px; width: 60px;' } %td{ style: 'padding-right: 10px; padding-left: 10px; width: 60px;' }
- if !procedure.archivee? - if !procedure.archivee?
= link_to('Tester', commencer_path(procedure_path: procedure.path), target: "_blank") = link_to('Consulter', commencer_path(procedure_path: procedure.path), target: "_blank")
%td %td
= link_to('Cloner', admin_procedure_clone_path(procedure.id), 'data-method' => :put, class: 'btn-sm btn-primary clone-btn') = link_to('Cloner', admin_procedure_clone_path(procedure.id, from_new_from_existing: true), 'data-method' => :put, class: 'btn-sm btn-primary clone-btn')

View file

@ -167,6 +167,8 @@ describe Procedure do
@logo = File.open('spec/fixtures/white.png') @logo = File.open('spec/fixtures/white.png')
@signature = File.open('spec/fixtures/black.png') @signature = File.open('spec/fixtures/black.png')
@attestation_template = create(:attestation_template, procedure: procedure, logo: @logo, signature: @signature) @attestation_template = create(:attestation_template, procedure: procedure, logo: @logo, signature: @signature)
@procedure = procedure.clone(procedure.administrateur)
@procedure.save
end end
after do after do
@ -174,7 +176,7 @@ describe Procedure do
@signature.close @signature.close
end end
subject { procedure.clone(procedure.administrateur) } subject { @procedure }
it 'should duplicate specific objects with different id' do it 'should duplicate specific objects with different id' do
expect(subject.id).not_to eq(procedure.id) expect(subject.id).not_to eq(procedure.id)