Browse Source

bulk upload CYA missing answers always red

- whereas previosly this only happened if user was filtering logs via a
  bulk upload
pull/1262/head
Phil Lee 3 years ago
parent
commit
918b67e6e9
  1. 1
      Gemfile
  2. 5
      Gemfile.lock
  3. 11
      app/components/check_answers_summary_list_card_component.rb
  4. 7
      app/controllers/form_controller.rb
  5. 4
      app/controllers/lettings_logs_controller.rb
  6. 2
      app/views/form/check_answers.html.erb
  7. 16
      spec/components/check_answers_summary_list_card_component_spec.rb
  8. 31
      spec/controllers/form_controller_spec.rb

1
Gemfile

@ -91,7 +91,6 @@ 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,10 +289,6 @@ 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)
@ -471,7 +467,6 @@ DEPENDENCIES
rack-attack
rack-mini-profiler (~> 2.0)
rails (~> 7.0.2)
rails-controller-testing
redis
roo
rspec-rails

11
app/components/check_answers_summary_list_card_component.rb

@ -1,11 +1,10 @@
class CheckAnswersSummaryListCardComponent < ViewComponent::Base
attr_reader :questions, :log, :user, :bulk_upload
attr_reader :questions, :log, :user
def initialize(questions:, log:, user:, bulk_upload: nil)
def initialize(questions:, log:, user:)
@questions = questions
@log = log
@user = user
@bulk_upload = bulk_upload
super
end
@ -39,13 +38,17 @@ class CheckAnswersSummaryListCardComponent < ViewComponent::Base
private
def unanswered_value
if bulk_upload
if bulk_uploaded?
"<span class=\"app-!-colour-red\">You still need to answer this question</span>".html_safe
else
"<span class=\"app-!-colour-muted\">You didn’t answer this question</span>".html_safe
end
end
def bulk_uploaded?
log.bulk_upload
end
def number_of_buyers
log[:jointpur] == 1 ? 2 : 1
end

7
app/controllers/form_controller.rb

@ -4,8 +4,6 @@ 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])
@ -65,11 +63,6 @@ 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|

4
app/controllers/lettings_logs_controller.rb

@ -119,8 +119,8 @@ private
end
def extract_bulk_upload_from_session_filters
id = ((@session_filters["bulk_upload_id"] || []).reject(&:blank?))[0]
@bulk_upload = current_user.bulk_uploads.find_by(id:)
filter_service = FilterService.new(current_user:, session:)
@bulk_upload = filter_service.bulk_upload
end
def permitted_log_params

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, bulk_upload: @bulk_upload) %>
<%= render CheckAnswersSummaryListCardComponent.new(questions: question_group, log: @log, user: current_user) %>
<% end %>
<% else %>
<%= render partial: "form/check_answers_summary_list", locals: {

16
spec/components/check_answers_summary_list_card_component_spec.rb

@ -25,15 +25,25 @@ RSpec.describe CheckAnswersSummaryListCardComponent, type: :component do
expect(component.get_answer_label(sex1_question)).to eq("Female")
end
context "when filtered by bulk upload with unanswered question" do
subject(:component) { described_class.new(questions:, log:, user:, bulk_upload:) }
context "when log was created via a bulk upload and has an unanswered question" do
subject(:component) { described_class.new(questions:, log:, user:) }
let(:bulk_upload) { build(:bulk_upload, :lettings) }
let(:log) { build(:lettings_log, :in_progress, bulk_upload:, age2: 99, startdate: Time.zone.local(2021, 5, 1)) }
it "is displayed with tweaked copy in red" do
it "displays tweaked copy in red" do
expect(rendered).to have_selector("span", class: "app-!-colour-red", text: "You still need to answer this question")
end
end
context "when log was not created via a bulk upload and has an unanswered question" do
subject(:component) { described_class.new(questions:, log:, user:) }
let(:log) { build(:lettings_log, :in_progress, age2: 99, startdate: Time.zone.local(2021, 5, 1)) }
it "displays normal copy with muted colour " do
expect(rendered).to have_selector("span", class: "app-!-colour-muted", text: "You didn’t answer this question")
end
end
end
end

31
spec/controllers/form_controller_spec.rb

@ -1,31 +0,0 @@
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