diff --git a/app/assets/javascripts/new-description.js b/app/assets/javascripts/new-description.js index 8de71855e..6d56fe939 100644 --- a/app/assets/javascripts/new-description.js +++ b/app/assets/javascripts/new-description.js @@ -5,7 +5,7 @@ }; var showData = function(data) { - $('.dossier-link .procedureLibelle').text(data.procedureLibelle); + $('.dossier-link .procedure-libelle').text(data.procedureLibelle); $('.dossier-link .text-info').show(); $('.dossier-link .text-warning').hide(); }; diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 4b3abf481..61bf3a0e7 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -165,7 +165,7 @@ class Users::DossiersController < UsersController end def procedure_libelle - dossier = Dossier.find(params[:dossier_id]) + dossier = Dossier.includes(:procedure).find(params[:dossier_id]) render json: { procedureLibelle: dossier.procedure.libelle } rescue ActiveRecord::RecordNotFound render json: {}, status: 404 diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 00b37b627..090873fea 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -39,7 +39,7 @@ .col-xs-5.depositaire-info{ id: "champ-#{champ.id}-value" } - unless champ.decorate.value.blank? - if champ.type_champ == 'dossier_link' - - dossier = Dossier.find_by(id: champ.decorate.value) + - dossier = Dossier.includes(:procedure).find_by(id: champ.decorate.value) - if dossier && gestionnaire_signed_in? = link_to(dossier.procedure.libelle, backoffice_dossier_path(champ.decorate.value), target: '_blank') - else diff --git a/app/views/users/description/champs/_dossier_link.html.haml b/app/views/users/description/champs/_dossier_link.html.haml index 41d6f0526..d6fc6ff38 100644 --- a/app/views/users/description/champs/_dossier_link.html.haml +++ b/app/views/users/description/champs/_dossier_link.html.haml @@ -1,4 +1,4 @@ -- dossier = Dossier.find_by(id: champ.value) +- dossier = Dossier.includes(:procedure).find_by(id: champ.value) - show_procedure_libelle = dossier ? true : false - show_warning = !show_procedure_libelle && champ.value.present? - procedure_libelle = dossier.nil? ? '' : dossier.procedure.libelle @@ -16,6 +16,7 @@ %p.text-info{ style: show_procedure_libelle ? nil : 'display: none;' } ce dossier répond à la procédure : %br - %span.procedureLibelle= procedure_libelle + %span.procedure-libelle= procedure_libelle + %p.text-warning{ style: show_warning ? nil : 'display: none;' } - ce dossier est inconnu + Ce dossier est inconnu diff --git a/spec/factories/dossier.rb b/spec/factories/dossier.rb index a58e28bb0..415e1d58d 100644 --- a/spec/factories/dossier.rb +++ b/spec/factories/dossier.rb @@ -55,6 +55,17 @@ FactoryGirl.define do archived false end + trait :with_dossier_link do + after(:create) do |dossier, _evaluator| + linked_dossier = create(:dossier) + type_de_champ = dossier.procedure.types_de_champ.find { |t| t.type_champ == 'dossier_link' } + champ = dossier.champs.find { |c| c.type_de_champ == type_de_champ } + + champ.value = linked_dossier.id + champ.save! + end + end + trait :replied do state 'replied' end diff --git a/spec/factories/procedure.rb b/spec/factories/procedure.rb index b8e4d5e15..f38629fc7 100644 --- a/spec/factories/procedure.rb +++ b/spec/factories/procedure.rb @@ -61,6 +61,14 @@ FactoryGirl.define do end end + trait :with_dossier_link do + after(:build) do |procedure, _evaluator| + type_de_champ = create(:type_de_champ_public, :type_dossier_link) + + procedure.types_de_champ << type_de_champ + end + end + trait :with_two_type_de_piece_justificative do after(:build) do |procedure, _evaluator| rib = create(:type_de_piece_justificative, :rib, order_place: 1) diff --git a/spec/factories/type_de_champ_public.rb b/spec/factories/type_de_champ_public.rb index 3dad7603b..b1ef85016 100644 --- a/spec/factories/type_de_champ_public.rb +++ b/spec/factories/type_de_champ_public.rb @@ -9,5 +9,10 @@ FactoryGirl.define do trait :checkbox do type_champ 'checkbox' end + + trait :type_dossier_link do + libelle 'Référence autre dossier' + type_champ 'dossier_link' + end end end diff --git a/spec/features/users/dossier_edition_spec.rb b/spec/features/users/dossier_edition_spec.rb index 13bbf29a0..f82d94032 100644 --- a/spec/features/users/dossier_edition_spec.rb +++ b/spec/features/users/dossier_edition_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' feature 'As a User I want to edit a dossier I own' do let(:user) { create(:user) } - let(:procedure_for_individual) { create(:procedure, :published, :for_individual, :with_type_de_champ, :with_two_type_de_piece_justificative) } - let!(:dossier) { create(:dossier, :with_entreprise, :for_individual, procedure: procedure_for_individual, user: user, autorisation_donnees: true, state: 'initiated') } + let(:procedure_for_individual) { create(:procedure, :published, :for_individual, :with_type_de_champ, :with_two_type_de_piece_justificative, :with_dossier_link) } + let!(:dossier) { create(:dossier, :with_entreprise, :for_individual, :with_dossier_link, procedure: procedure_for_individual, user: user, autorisation_donnees: true, state: 'initiated') } before "Create dossier and visit root path" do login_as user, scope: :user @@ -23,7 +23,7 @@ feature 'As a User I want to edit a dossier I own' do end scenario 'Getting a dossier, I want to create a new message on', js: true do - page.find_by_id('tr_dossier_' + Dossier.last.id.to_s).click + page.find_by_id('tr_dossier_' + dossier.id.to_s).click expect(page).to have_current_path(users_dossier_recapitulatif_path(Dossier.first.id.to_s), only_path: true) page.find_by_id('open-message').click page.execute_script("$('#texte_commentaire').data('wysihtml5').editor.setValue('Contenu du nouveau message')") @@ -34,12 +34,18 @@ feature 'As a User I want to edit a dossier I own' do scenario 'On the same dossier, I want to edit informations', js: true do page.find_by_id('tr_dossier_' + dossier.id.to_s).click expect(page).to have_current_path(users_dossier_recapitulatif_path(dossier.id.to_s), only_path: true) + + # Linked Dossier + linked_dossier_id = dossier.champs.find { |c| c.type_de_champ.type_champ == 'dossier_link' }.value + linked_dossier = Dossier.find(linked_dossier_id) + expect(page).to have_content(linked_dossier.procedure.libelle) + page.find_by_id('maj_infos').trigger('click') expect(page).to have_current_path(users_dossier_description_path(dossier.id.to_s), only_path: true) - fill_in "champs_#{dossier.champs.first.id.to_s}", with: 'Contenu du champ 1' + fill_in "champs_#{dossier.champs.order(:id).first.id.to_s}", with: 'Contenu du champ 1' page.find_by_id('modification_terminee').click expect(page).to have_current_path(users_dossier_recapitulatif_path(dossier.id.to_s), only_path: true) - expect(page.find("#champ-#{dossier.champs.first.id}-value").text).to eq('Contenu du champ 1') + expect(page.find("#champ-#{dossier.champs.order(:id).first.id}-value").text).to eq('Contenu du champ 1') end end end diff --git a/spec/views/users/description/champs/_dossier_link.html.haml_spec.rb b/spec/views/users/description/champs/_dossier_link.html.haml_spec.rb index a61f09532..fc8a79850 100644 --- a/spec/views/users/description/champs/_dossier_link.html.haml_spec.rb +++ b/spec/views/users/description/champs/_dossier_link.html.haml_spec.rb @@ -7,6 +7,14 @@ describe 'users/description/champs/dossier_link.html.haml', type: :view do render 'users/description/champs/dossier_link.html.haml', champ: champ end + context 'in all cases' do + let!(:champ) { create(:champ, type_de_champ: type_champ, value: nil) } + + it 'should render an input for the dossier link' do + expect(rendered).to have_css("input[type=number][placeholder=#{champ.libelle}]") + end + end + context 'When no dossier is provided' do let!(:champ) { create(:champ, type_de_champ: type_champ, value: nil) } diff --git a/spec/views/users/description/champs/_render_list_champs.html.haml_spec.rb b/spec/views/users/description/champs/_render_list_champs.html.haml_spec.rb index 17ca6d9d3..b5a74ed58 100644 --- a/spec/views/users/description/champs/_render_list_champs.html.haml_spec.rb +++ b/spec/views/users/description/champs/_render_list_champs.html.haml_spec.rb @@ -33,7 +33,7 @@ describe 'users/description/champs/render_list_champs.html.haml', type: :view do render 'users/description/champs/render_list_champs.html.haml', champs: Champ.all, order_place: 0 end - it 'should render a number input with the right data-attribute' do + it 'should render the _dossier_link partial' do expect(view).to render_template(partial: 'users/description/champs/_dossier_link', locals: { champ: champ }) end