Browse Source

Merge branch 'main' into CLDC-2996-merged-scheme-activation-date-bug

pull/2061/head
natdeanlewissoftwire 2 years ago
parent
commit
f862fccdbd
  1. 6
      .github/workflows/aws_deploy.yml
  2. 1
      .github/workflows/review_pipeline.yml
  3. 25
      app/frontend/controllers/conditional_question_controller.js
  4. 4
      app/mailers/bulk_upload_mailer.rb
  5. 26
      app/views/form/page.html.erb
  6. 44
      spec/features/form/conditional_questions_spec.rb
  7. 1
      spec/features/form/validations_spec.rb
  8. 2
      spec/mailers/bulk_upload_mailer_spec.rb

6
.github/workflows/aws_deploy.yml

@ -12,6 +12,10 @@ on:
aws_task_prefix: aws_task_prefix:
required: true required: true
type: string type: string
concurrency_tag:
required: false
type: string
default: ""
environment: environment:
required: true required: true
type: string type: string
@ -20,7 +24,7 @@ on:
type: string type: string
concurrency: concurrency:
group: deploy-${{ inputs.environment }} group: deploy-${{ inputs.environment }}${{ inputs.concurrency_tag }}
cancel-in-progress: true cancel-in-progress: true
env: env:

1
.github/workflows/review_pipeline.yml

@ -33,6 +33,7 @@ jobs:
aws_account_id: 837698168072 aws_account_id: 837698168072
aws_role_prefix: core-dev aws_role_prefix: core-dev
aws_task_prefix: core-review-${{ github.event.pull_request.number }} aws_task_prefix: core-review-${{ github.event.pull_request.number }}
concurrency_tag: ${{ github.event.pull_request.number }}
environment: review environment: review
permissions: permissions:
id-token: write id-token: write

25
app/frontend/controllers/conditional_question_controller.js

@ -15,24 +15,27 @@ export default class extends Controller {
Object.entries(conditionalFor).forEach(([targetQuestion, conditions]) => { Object.entries(conditionalFor).forEach(([targetQuestion, conditions]) => {
if (!conditions.map(String).includes(String(selectedValue))) { if (!conditions.map(String).includes(String(selectedValue))) {
const textNumericInput = document.getElementById(`${type}-${targetQuestion.replaceAll('_', '-')}-field`) const textNumericInput = document.getElementById(`${type}-${targetQuestion.replaceAll('_', '-')}-field`)
if (textNumericInput == null) { const errorInput = document.getElementById(`${type}-${targetQuestion.replaceAll('_', '-')}-field-error`)
const dateInputs = [1, 2, 3].map((idx) => { const dateInputs = [1, 2, 3].map((idx) => {
return document.getElementById(`${type.replaceAll('-', '_')}_${targetQuestion}_${idx}i`) return document.getElementById(`lettings_log_mrcdate_${idx}i`)
}) })
this.clearDateInputs(dateInputs) this.clearTextInput(textNumericInput)
} else { this.clearTextInput(errorInput)
this.clearTextNumericInput(textNumericInput) this.clearDateInputs(dateInputs)
}
} }
}) })
} }
} }
clearTextNumericInput (input) { clearTextInput (input) {
input.value = '' if (input != null) {
input.value = ''
}
} }
clearDateInputs (inputs) { clearDateInputs (inputs) {
inputs.forEach((input) => { input.value = '' }) inputs.forEach((input) => {
this.clearTextInput(input)
})
} }
} }

4
app/mailers/bulk_upload_mailer.rb

@ -50,9 +50,9 @@ class BulkUploadMailer < NotifyMailer
def send_bulk_upload_complete_mail(user:, bulk_upload:) def send_bulk_upload_complete_mail(user:, bulk_upload:)
url = if bulk_upload.lettings? url = if bulk_upload.lettings?
lettings_logs_url("[years][]" => "", "[status][]" => "", user: :all, organisation_select: :all) clear_filters_url(filter_type: "lettings_logs")
else else
sales_logs_url("[years][]" => "", "[status][]" => "", user: :all) clear_filters_url(filter_type: "sales_logs")
end end
n_logs = pluralize(bulk_upload.logs.count, "log") n_logs = pluralize(bulk_upload.logs.count, "log")

26
app/views/form/page.html.erb

@ -63,18 +63,20 @@
<%= f.hidden_field :interruption_page_referrer_type, value: @interruption_page_referrer_type %> <%= f.hidden_field :interruption_page_referrer_type, value: @interruption_page_referrer_type %>
<div class="govuk-button-group"> <div class="govuk-button-group">
<% if accessed_from_duplicate_logs?(request.query_parameters["referrer"]) %> <% if !@page.interruption_screen? %>
<%= f.govuk_submit "Save changes" %> <% if accessed_from_duplicate_logs?(request.query_parameters["referrer"]) %>
<%= govuk_link_to "Cancel", send("#{@log.class.name.underscore}_duplicate_logs_path", @log, original_log_id: request.query_parameters["original_log_id"]) %> <%= f.govuk_submit "Save changes" %>
<% elsif returning_to_question_page?(@page, request.query_parameters["referrer"]) %> <%= govuk_link_to "Cancel", send("#{@log.class.name.underscore}_duplicate_logs_path", @log, original_log_id: request.query_parameters["original_log_id"]) %>
<%= f.govuk_submit "Save changes" %> <% elsif returning_to_question_page?(@page, request.query_parameters["referrer"]) %>
<%= govuk_link_to "Cancel", send(@log.form.cancel_path(@page, @log), @log) %> <%= f.govuk_submit "Save changes" %>
<% else %> <%= govuk_link_to "Cancel", send(@log.form.cancel_path(@page, @log), @log) %>
<%= f.govuk_submit "Save and continue" %> <% else %>
<%= govuk_link_to( <%= f.govuk_submit "Save and continue" %>
(@page.skip_text || "Skip for now"), <%= govuk_link_to(
(@page.skip_href(@log) || send(@log.form.next_page_redirect_path(@page, @log, current_user), @log)), (@page.skip_text || "Skip for now"),
) %> (@page.skip_href(@log) || send(@log.form.next_page_redirect_path(@page, @log, current_user), @log)),
) %>
<% end %>
<% end %> <% end %>
</div> </div>
</div> </div>

44
spec/features/form/conditional_questions_spec.rb

@ -33,12 +33,15 @@ RSpec.describe "Form Conditional Questions" do
before do before do
sign_in user sign_in user
allow(sales_log.form).to receive(:new_logs_end_date).and_return(Time.zone.today + 1.day)
allow(lettings_log.form).to receive(:new_logs_end_date).and_return(Time.zone.today + 1.day)
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end end
context "with a page where some questions are only conditionally shown, depending on how you answer the first question" do context "with a page where some questions are only conditionally shown, depending on how you answer the first question" do
before do
allow(sales_log.form).to receive(:new_logs_end_date).and_return(Time.zone.today + 1.day)
allow(lettings_log.form).to receive(:new_logs_end_date).and_return(Time.zone.today + 1.day)
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
it "initially hides conditional questions" do it "initially hides conditional questions" do
visit("/lettings-logs/#{id}/armed-forces") visit("/lettings-logs/#{id}/armed-forces")
expect(page).not_to have_selector("#armed_forces_injured_div") expect(page).not_to have_selector("#armed_forces_injured_div")
@ -57,6 +60,12 @@ RSpec.describe "Form Conditional Questions" do
end end
context "when a conditional question has a saved answer", js: true do context "when a conditional question has a saved answer", js: true do
before do
allow(sales_log.form).to receive(:new_logs_end_date).and_return(Time.zone.today + 1.day)
allow(lettings_log.form).to receive(:new_logs_end_date).and_return(Time.zone.today + 1.day)
allow(FormHandler.instance).to receive(:current_lettings_form).and_return(fake_2021_2022_form)
end
it "is displayed correctly" do it "is displayed correctly" do
lettings_log.update!(postcode_known: 1, postcode_full: "NW1 6RT") lettings_log.update!(postcode_known: 1, postcode_full: "NW1 6RT")
visit("/lettings-logs/#{id}/property-postcode") visit("/lettings-logs/#{id}/property-postcode")
@ -73,4 +82,33 @@ RSpec.describe "Form Conditional Questions" do
expect(page).to have_field("sales-log-age1-field", with: "") expect(page).to have_field("sales-log-age1-field", with: "")
end end
end end
context "when a conditional question has an error" do
let(:lettings_log) do
FactoryBot.create(
:lettings_log,
:completed,
created_by: user,
)
end
before do
FormHandler.instance.use_real_forms!
end
it "shows conditional questions if the required answer is selected and hides it again when a different answer option is selected", js: true do
visit("/lettings-logs/#{id}/lead-tenant-age")
choose("lettings-log-age1-known-0-field", allow_label_click: true)
fill_in("lettings-log-age1-field", with: "200")
click_button("Save and continue")
expect(page).not_to have_field("lettings-log-age1-field")
expect(page).to have_field("lettings-log-age1-field-error")
choose("lettings-log-age1-known-1-field", allow_label_click: true)
expect(page).not_to have_field("lettings-log-age1-field")
expect(page).not_to have_field("lettings-log-age1-field-error")
choose("lettings-log-age1-known-0-field", allow_label_click: true)
expect(page).not_to have_field("lettings-log-age1-field")
expect(page).to have_field("lettings-log-age1-field-error", with: "")
end
end
end end

1
spec/features/form/validations_spec.rb

@ -149,6 +149,7 @@ RSpec.describe "validations" do
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
expect(page).to have_content("You told us the lead tenant’s income is £750.00 weekly.") expect(page).to have_content("You told us the lead tenant’s income is £750.00 weekly.")
expect(page).to have_content("This is higher than we would expect for their working situation.") expect(page).to have_content("This is higher than we would expect for their working situation.")
expect(page).not_to have_button("Save changes")
click_button("Confirm and continue") click_button("Confirm and continue")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-uc-proportion") expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-uc-proportion")
end end

2
spec/mailers/bulk_upload_mailer_spec.rb

@ -47,7 +47,7 @@ RSpec.describe BulkUploadMailer do
log_type: "lettings", log_type: "lettings",
upload_timestamp: bulk_upload.created_at.to_fs(:govuk_date_and_time), upload_timestamp: bulk_upload.created_at.to_fs(:govuk_date_and_time),
success_description: "The lettings 2022/23 data you uploaded has been checked. The 0 logs you uploaded are now complete.", success_description: "The lettings 2022/23 data you uploaded has been checked. The 0 logs you uploaded are now complete.",
logs_link: lettings_logs_url("[years][]" => "", "[status][]" => "", user: :all, organisation_select: :all), logs_link: clear_filters_url(filter_type: "lettings_logs"),
}, },
) )

Loading…
Cancel
Save