From 0179a0a82652e6d9452e7fb519750e7995b96d97 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Mon, 11 Jul 2022 21:57:43 +0200 Subject: [PATCH] update conditions_controller --- .../administrateurs/conditions_controller.rb | 44 ++++++++++--------- .../conditions/_update.turbo_stream.haml | 8 ++++ .../conditions/add_row.turbo_stream.haml | 1 + .../change_targeted_champ.turbo_stream.haml | 1 + .../conditions/delete_row.turbo_stream.haml | 1 + .../conditions/destroy.turbo_stream.haml | 1 + .../conditions/update.turbo_stream.haml | 1 + .../conditions_controller_spec.rb | 30 +++++-------- 8 files changed, 48 insertions(+), 39 deletions(-) create mode 100644 app/views/administrateurs/conditions/_update.turbo_stream.haml create mode 100644 app/views/administrateurs/conditions/add_row.turbo_stream.haml create mode 100644 app/views/administrateurs/conditions/change_targeted_champ.turbo_stream.haml create mode 100644 app/views/administrateurs/conditions/delete_row.turbo_stream.haml create mode 100644 app/views/administrateurs/conditions/destroy.turbo_stream.haml create mode 100644 app/views/administrateurs/conditions/update.turbo_stream.haml diff --git a/app/controllers/administrateurs/conditions_controller.rb b/app/controllers/administrateurs/conditions_controller.rb index ba0c5ea45..e517b40bb 100644 --- a/app/controllers/administrateurs/conditions_controller.rb +++ b/app/controllers/administrateurs/conditions_controller.rb @@ -6,54 +6,58 @@ module Administrateurs def update condition = condition_form.to_condition - tdc.update!(condition: condition) + @tdc.update!(condition: condition) - render 'administrateurs/types_de_champ/update.turbo_stream.haml' + @condition_component = build_condition_component end def add_row - condition = Logic.add_empty_condition_to(tdc.condition) - tdc.update!(condition: condition) + condition = Logic.add_empty_condition_to(@tdc.condition) + @tdc.update!(condition: condition) - render 'administrateurs/types_de_champ/update.turbo_stream.haml' + @condition_component = build_condition_component end def delete_row condition = condition_form.delete_row(row_index).to_condition - tdc.update!(condition: condition) + @tdc.update!(condition: condition) - render 'administrateurs/types_de_champ/update.turbo_stream.haml' + @condition_component = build_condition_component end def destroy - tdc.update!(condition: nil) + @tdc.update!(condition: nil) - render 'administrateurs/types_de_champ/update.turbo_stream.haml' + @condition_component = build_condition_component end def change_targeted_champ condition = condition_form.change_champ(row_index).to_condition - tdc.update!(condition: condition) + @tdc.update!(condition: condition) - render 'administrateurs/types_de_champ/update.turbo_stream.haml' + @condition_component = build_condition_component end private + def build_condition_component + TypesDeChampEditor::ConditionsComponent.new( + tdc: @tdc, + upper_tdcs: @upper_tdcs, + procedure_id: @procedure.id + ) + end + def condition_form ConditionForm.new(condition_params) end def retrieve_coordinate_and_uppers - @coordinate = draft_revision.coordinate_for(tdc) - @upper_coordinates = draft_revision - .revision_types_de_champ_public - .includes(:type_de_champ) - .take_while { |c| c != @coordinate } - end - - def tdc - @tdc ||= draft_revision.find_and_ensure_exclusive_use(params[:stable_id]) + @tdc = draft_revision.find_and_ensure_exclusive_use(params[:stable_id]) + @coordinate = draft_revision.coordinate_for(@tdc) + @upper_tdcs = draft_revision + .upper_coordinates(@coordinate.position) + .map(&:type_de_champ) end def draft_revision diff --git a/app/views/administrateurs/conditions/_update.turbo_stream.haml b/app/views/administrateurs/conditions/_update.turbo_stream.haml new file mode 100644 index 000000000..d5dcb27a6 --- /dev/null +++ b/app/views/administrateurs/conditions/_update.turbo_stream.haml @@ -0,0 +1,8 @@ +- rendered = render @condition_component + +- if rendered.present? + = turbo_stream.morph dom_id(@tdc, :conditions) do + - rendered + end +- else + = turbo_stream.remove dom_id(@tdc, :conditions) diff --git a/app/views/administrateurs/conditions/add_row.turbo_stream.haml b/app/views/administrateurs/conditions/add_row.turbo_stream.haml new file mode 100644 index 000000000..8f9900e50 --- /dev/null +++ b/app/views/administrateurs/conditions/add_row.turbo_stream.haml @@ -0,0 +1 @@ += render partial: 'update' diff --git a/app/views/administrateurs/conditions/change_targeted_champ.turbo_stream.haml b/app/views/administrateurs/conditions/change_targeted_champ.turbo_stream.haml new file mode 100644 index 000000000..8f9900e50 --- /dev/null +++ b/app/views/administrateurs/conditions/change_targeted_champ.turbo_stream.haml @@ -0,0 +1 @@ += render partial: 'update' diff --git a/app/views/administrateurs/conditions/delete_row.turbo_stream.haml b/app/views/administrateurs/conditions/delete_row.turbo_stream.haml new file mode 100644 index 000000000..8f9900e50 --- /dev/null +++ b/app/views/administrateurs/conditions/delete_row.turbo_stream.haml @@ -0,0 +1 @@ += render partial: 'update' diff --git a/app/views/administrateurs/conditions/destroy.turbo_stream.haml b/app/views/administrateurs/conditions/destroy.turbo_stream.haml new file mode 100644 index 000000000..8f9900e50 --- /dev/null +++ b/app/views/administrateurs/conditions/destroy.turbo_stream.haml @@ -0,0 +1 @@ += render partial: 'update' diff --git a/app/views/administrateurs/conditions/update.turbo_stream.haml b/app/views/administrateurs/conditions/update.turbo_stream.haml new file mode 100644 index 000000000..8f9900e50 --- /dev/null +++ b/app/views/administrateurs/conditions/update.turbo_stream.haml @@ -0,0 +1 @@ += render partial: 'update' diff --git a/spec/controllers/administrateurs/conditions_controller_spec.rb b/spec/controllers/administrateurs/conditions_controller_spec.rb index a037714ea..60dd5d295 100644 --- a/spec/controllers/administrateurs/conditions_controller_spec.rb +++ b/spec/controllers/administrateurs/conditions_controller_spec.rb @@ -5,9 +5,7 @@ describe Administrateurs::ConditionsController, type: :controller do let(:first_coordinate) { procedure.draft_revision.revision_types_de_champ.first } let(:second_tdc) { procedure.draft_revision.types_de_champ.second } - before do - sign_in(procedure.administrateurs.first.user) - end + before { sign_in(procedure.administrateurs.first.user) } let(:default_params) do { @@ -17,9 +15,7 @@ describe Administrateurs::ConditionsController, type: :controller do end describe '#update' do - before do - post :update, params: params - end + before { post :update, params: params, format: :turbo_stream } let(:params) { default_params.merge(type_de_champ: { condition_form: condition_form }) } @@ -38,26 +34,22 @@ describe Administrateurs::ConditionsController, type: :controller do it do expect(second_tdc.reload.condition).to eq(ds_eq(champ_value(1), constant(2))) expect(assigns(:coordinate)).to eq(procedure.draft_revision.coordinate_for(second_tdc)) - expect(assigns(:upper_coordinates)).to eq([first_coordinate]) + expect(assigns(:upper_tdcs)).to eq([first_coordinate.type_de_champ]) end end describe '#add_row' do - before do - post :add_row, params: default_params - end + before { post :add_row, params: default_params, format: :turbo_stream } it do expect(second_tdc.reload.condition).to eq(empty_operator(empty, empty)) expect(assigns(:coordinate)).to eq(procedure.draft_revision.coordinate_for(second_tdc)) - expect(assigns(:upper_coordinates)).to eq([first_coordinate]) + expect(assigns(:upper_tdcs)).to eq([first_coordinate.type_de_champ]) end end describe '#delete_row' do - before do - delete :delete_row, params: params.merge(row_index: 0) - end + before { delete :delete_row, params: params.merge(row_index: 0), format: :turbo_stream } let(:params) { default_params.merge(type_de_champ: { condition_form: condition_form }) } @@ -76,20 +68,20 @@ describe Administrateurs::ConditionsController, type: :controller do it do expect(second_tdc.reload.condition).to eq(nil) expect(assigns(:coordinate)).to eq(procedure.draft_revision.coordinate_for(second_tdc)) - expect(assigns(:upper_coordinates)).to eq([first_coordinate]) + expect(assigns(:upper_tdcs)).to eq([first_coordinate.type_de_champ]) end end describe '#destroy' do before do second_tdc.update(condition: empty_operator(empty, empty)) - delete :destroy, params: default_params + delete :destroy, params: default_params, format: :turbo_stream end it do expect(second_tdc.reload.condition).to eq(nil) expect(assigns(:coordinate)).to eq(procedure.draft_revision.coordinate_for(second_tdc)) - expect(assigns(:upper_coordinates)).to eq([first_coordinate]) + expect(assigns(:upper_tdcs)).to eq([first_coordinate.type_de_champ]) end end @@ -98,7 +90,7 @@ describe Administrateurs::ConditionsController, type: :controller do before do second_tdc.update(condition: empty_operator(empty, empty)) - patch :change_targeted_champ, params: params + patch :change_targeted_champ, params: params, format: :turbo_stream end let(:params) { default_params.merge(type_de_champ: { condition_form: condition_form }) } @@ -118,7 +110,7 @@ describe Administrateurs::ConditionsController, type: :controller do it do expect(second_tdc.reload.condition).to eq(ds_eq(champ_value(number_tdc.stable_id), constant(0))) expect(assigns(:coordinate)).to eq(procedure.draft_revision.coordinate_for(second_tdc)) - expect(assigns(:upper_coordinates)).to eq([first_coordinate]) + expect(assigns(:upper_tdcs)).to eq([first_coordinate.type_de_champ]) end end end