diff --git a/controllers/custom_wizard/steps.rb b/controllers/custom_wizard/steps.rb index 277b94b2..5465d0dd 100644 --- a/controllers/custom_wizard/steps.rb +++ b/controllers/custom_wizard/steps.rb @@ -28,7 +28,7 @@ class CustomWizard::StepsController < ::ApplicationController current_step = @wizard.find_step(update[:step_id]) current_submission = @wizard.current_submission result = {} - + @wizard.filter_conditional_fields if current_step.conditional_final_step && !current_step.last_step current_step.force_final = true end diff --git a/lib/custom_wizard/wizard.rb b/lib/custom_wizard/wizard.rb index ab0f0f63..f92f3d61 100644 --- a/lib/custom_wizard/wizard.rb +++ b/lib/custom_wizard/wizard.rb @@ -243,19 +243,20 @@ class CustomWizard::Wizard return nil unless save_submissions submissions.pop(1) if unfinished? - submission = filter_conditional_fields(submission) submissions.push(submission) set_submissions(submissions) end - def filter_conditional_fields(submission) + def filter_conditional_fields included_fields = steps.map { |s| s.fields.map { |f| f.id } }.flatten - submission.select do |key, _| + filtered_submision = current_submission&.select do |key, _| key = key.to_s included_fields.include?(key) || required_fields.include?(key) || key.include?("action") end + + save_submission(filtered_submision) end def required_fields diff --git a/spec/requests/custom_wizard/steps_controller_spec.rb b/spec/requests/custom_wizard/steps_controller_spec.rb index c312cbb1..2424274b 100644 --- a/spec/requests/custom_wizard/steps_controller_spec.rb +++ b/spec/requests/custom_wizard/steps_controller_spec.rb @@ -272,16 +272,8 @@ describe CustomWizard::StepsController do step_1_field_1: "Condition will not pass" } } - wizard_id = response.parsed_body['wizard']['id'] - wizard = CustomWizard::Wizard.create(wizard_id, user) - submission = wizard.submissions.last - expect(submission.keys).to include("step_2_field_1") - put '/w/super-mega-fun-wizard/steps/step_2.json', params: { - fields: { - step_2_field_1: "1995-04-23" - } - } + wizard_id = response.parsed_body['wizard']['id'] wizard = CustomWizard::Wizard.create(wizard_id, user) submission = wizard.submissions.last expect(submission.keys).not_to include("step_2_field_1")