Browse Source

different CYA treatment when for bulk upload

pull/1262/head
Phil Lee 3 years ago
parent
commit
f24ed0271d
  1. 1
      Gemfile
  2. 5
      Gemfile.lock
  3. 7
      app/controllers/form_controller.rb
  4. 18
      app/services/filter_service.rb
  5. 2
      app/views/form/check_answers.html.erb
  6. 31
      spec/controllers/form_controller_spec.rb

1
Gemfile

@ -91,6 +91,7 @@ group :test do
gem "capybara-lockstep"
gem "factory_bot_rails"
gem "faker"
gem "rails-controller-testing"
gem "rspec-rails", require: false
gem "selenium-webdriver", require: false
gem "simplecov", require: false

5
Gemfile.lock

@ -289,6 +289,10 @@ GEM
activesupport (= 7.0.4.1)
bundler (>= 1.15.0)
railties (= 7.0.4.1)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
@ -467,6 +471,7 @@ DEPENDENCIES
rack-attack
rack-mini-profiler (~> 2.0)
rails (~> 7.0.2)
rails-controller-testing
redis
roo
rspec-rails

7
app/controllers/form_controller.rb

@ -4,6 +4,8 @@ class FormController < ApplicationController
before_action :find_resource_by_named_id, except: %i[submit_form review]
before_action :check_collection_period, only: %i[submit_form show_page]
before_action :extract_bulk_upload_from_session_filters, only: [:check_answers]
def submit_form
if @log
@page = form.get_page(params[@log.model_name.param_key][:page])
@ -63,6 +65,11 @@ class FormController < ApplicationController
private
def extract_bulk_upload_from_session_filters
filter_service = FilterService.new(current_user:, session:)
@bulk_upload = filter_service.bulk_upload
end
def restore_error_field_values
if session["errors"]
JSON(session["errors"]).each do |field, messages|

18
app/services/filter_service.rb

@ -27,4 +27,22 @@ class FilterService
logs
end
end
attr_reader :current_user, :session
def initialize(current_user:, session:)
@current_user = current_user
@session = session
end
def bulk_upload
id = ((logs_filters["bulk_upload_id"] || []).reject(&:blank?))[0]
@bulk_upload ||= current_user.bulk_uploads.find_by(id:)
end
private
def logs_filters
JSON.parse(session[:logs_filters] || "{}") || {}
end
end

2
app/views/form/check_answers.html.erb

@ -19,7 +19,7 @@
<% if any_questions_have_summary_card_number?(subsection, @log) %>
<% subsection.applicable_questions(@log).group_by(&:check_answers_card_number).values.each do |question_group| %>
<%= render CheckAnswersSummaryListCardComponent.new(questions: question_group, log: @log, user: current_user) %>
<%= render CheckAnswersSummaryListCardComponent.new(questions: question_group, log: @log, user: current_user, bulk_upload: @bulk_upload) %>
<% end %>
<% else %>
<%= render partial: "form/check_answers_summary_list", locals: {

31
spec/controllers/form_controller_spec.rb

@ -0,0 +1,31 @@
require "rails_helper"
RSpec.describe FormController do
before do
sign_in user
end
describe "GET #check_answers /lettings-logs/:ID/:SECTION_ID/check-answers" do
let(:user) { create(:user) }
let(:bulk_upload) { create(:bulk_upload, :lettings, user:) }
let(:log) { create(:lettings_log, bulk_upload:) }
context "when checking answers without bulk upload " do
it "assigns @bulk_upload to nil" do
get :check_answers, params: { lettings_log_id: log.id }
expect(assigns(:bulk_upload)).to be_nil
end
end
context "when checking answers with bulk upload " do
it "assigns @bulk_upload" do
session[:logs_filters] = { bulk_upload_id: [bulk_upload.id.to_s] }.to_json
get :check_answers, params: { lettings_log_id: log.id }
expect(assigns(:bulk_upload)).to eql(bulk_upload)
end
end
end
end
Loading…
Cancel
Save