Browse Source

feat: use helpers where required and update misc tests

pull/3349/head
Nat Dean-Lewis 3 weeks ago
parent
commit
aad39d49e1
  1. 6
      app/components/bulk_upload_error_row_component.rb
  2. 12
      app/components/bulk_upload_summary_component.rb
  3. 8
      app/components/check_answers_summary_list_card_component.rb
  4. 16
      app/components/create_log_actions_component.rb
  5. 2
      app/components/data_protection_confirmation_banner_component.rb
  6. 6
      app/components/missing_stock_owners_banner_component.rb
  7. 2
      app/components/search_component.html.erb
  8. 34
      spec/helpers/application_helper_spec.rb
  9. 23
      spec/requests/users_controller_spec.rb

6
app/components/bulk_upload_error_row_component.rb

@ -17,7 +17,7 @@ class BulkUploadErrorRowComponent < ViewComponent::Base
def tenant_code_html def tenant_code_html
return if tenant_code.blank? return if tenant_code.blank?
content_tag :span, class: "govuk-!-margin-left-3" do helpers.content_tag :span, class: "govuk-!-margin-left-3" do
"Tenant code: #{tenant_code}" "Tenant code: #{tenant_code}"
end end
end end
@ -29,7 +29,7 @@ class BulkUploadErrorRowComponent < ViewComponent::Base
def purchaser_code_html def purchaser_code_html
return if purchaser_code.blank? return if purchaser_code.blank?
content_tag :span, class: "govuk-!-margin-left-3" do helpers.content_tag :span, class: "govuk-!-margin-left-3" do
"Purchaser code: #{purchaser_code}" "Purchaser code: #{purchaser_code}"
end end
end end
@ -41,7 +41,7 @@ class BulkUploadErrorRowComponent < ViewComponent::Base
def property_ref_html def property_ref_html
return if property_ref.blank? return if property_ref.blank?
content_tag :span, class: "govuk-!-margin-left-3" do helpers.content_tag :span, class: "govuk-!-margin-left-3" do
"Property reference: #{property_ref}" "Property reference: #{property_ref}"
end end
end end

12
app/components/bulk_upload_summary_component.rb

@ -27,8 +27,8 @@ class BulkUploadSummaryComponent < ViewComponent::Base
return if count.nil? || count <= 0 return if count.nil? || count <= 0
text = count > 1 ? (plural_text || singular_text.pluralize(count)) : singular_text text = count > 1 ? (plural_text || singular_text.pluralize(count)) : singular_text
content_tag(:p, class: "govuk-!-font-size-16 govuk-!-margin-bottom-1") do helpers.content_tag(:p, class: "govuk-!-font-size-16 govuk-!-margin-bottom-1") do
concat(content_tag(:strong, count)) concat(helpers.content_tag(:strong, count))
concat(" #{text}") concat(" #{text}")
end end
end end
@ -44,11 +44,11 @@ class BulkUploadSummaryComponent < ViewComponent::Base
end end
def download_lettings_file_link(bulk_upload) def download_lettings_file_link(bulk_upload)
govuk_link_to "Download file", download_lettings_bulk_upload_path(bulk_upload), class: "govuk-link govuk-!-margin-right-2" helpers.govuk_link_to "Download file", download_lettings_bulk_upload_path(bulk_upload), class: "govuk-link govuk-!-margin-right-2"
end end
def download_sales_file_link(bulk_upload) def download_sales_file_link(bulk_upload)
govuk_link_to "Download file", download_sales_bulk_upload_path(bulk_upload), class: "govuk-link govuk-!-margin-right-2" helpers.govuk_link_to "Download file", download_sales_bulk_upload_path(bulk_upload), class: "govuk-link govuk-!-margin-right-2"
end end
def view_error_report_link(bulk_upload) def view_error_report_link(bulk_upload)
@ -61,12 +61,12 @@ class BulkUploadSummaryComponent < ViewComponent::Base
"bulk_upload_#{bulk_upload.log_type}_result_path" "bulk_upload_#{bulk_upload.log_type}_result_path"
end end
govuk_link_to "View error report", send(path, bulk_upload), class: "govuk-link" helpers.govuk_link_to "View error report", helpers.send(path, bulk_upload), class: "govuk-link"
end end
def view_logs_link(bulk_upload) def view_logs_link(bulk_upload)
return unless bulk_upload.status.to_s == "logs_uploaded_with_errors" return unless bulk_upload.status.to_s == "logs_uploaded_with_errors"
govuk_link_to "View logs with errors", send("#{bulk_upload.log_type}_logs_path", bulk_upload_id: [bulk_upload.id]), class: "govuk-link" helpers.govuk_link_to "View logs with errors", helpers.send("#{bulk_upload.log_type}_logs_path", bulk_upload_id: [bulk_upload.id]), class: "govuk-link"
end end
end end

8
app/components/check_answers_summary_list_card_component.rb

@ -33,16 +33,16 @@ class CheckAnswersSummaryListCardComponent < ViewComponent::Base
def action_href(question, log) def action_href(question, log)
referrer = question.displayed_as_answered?(log) ? "check_answers" : "check_answers_new_answer" referrer = question.displayed_as_answered?(log) ? "check_answers" : "check_answers_new_answer"
send("#{log.log_type}_#{question.page.id}_path", log, referrer:) helpers.send("#{log.log_type}_#{question.page.id}_path", log, referrer:)
end end
def correct_validation_action_href(question, log, _related_question_ids, correcting_hard_validation) def correct_validation_action_href(question, log, _related_question_ids, correcting_hard_validation)
return action_href(question, log) unless correcting_hard_validation return action_href(question, log) unless correcting_hard_validation
if question.displayed_as_answered?(log) if question.displayed_as_answered?(log)
send("#{log.log_type}_confirm_clear_answer_path", log, question_id: question.id) helpers.send("#{log.log_type}_confirm_clear_answer_path", log, question_id: question.id)
else else
send("#{log.log_type}_#{question.page.id}_path", log, referrer: "check_errors", related_question_ids: request.query_parameters["related_question_ids"], original_page_id: request.query_parameters["original_page_id"]) helpers.send("#{log.log_type}_#{question.page.id}_path", log, referrer: "check_errors", related_question_ids: request.query_parameters["related_question_ids"], original_page_id: request.query_parameters["original_page_id"])
end end
end end
@ -55,7 +55,7 @@ private
"govuk-link govuk-link--no-visited-state" "govuk-link govuk-link--no-visited-state"
end end
govuk_link_to question.check_answer_prompt, correct_validation_action_href(question, log, nil, @correcting_hard_validation), class: link_class helpers.govuk_link_to question.check_answer_prompt, correct_validation_action_href(question, log, nil, @correcting_hard_validation), class: link_class
end end
def number_of_buyers def number_of_buyers

16
app/components/create_log_actions_component.rb

@ -23,7 +23,7 @@ class CreateLogActionsComponent < ViewComponent::Base
end end
def create_button_href def create_button_href
send("#{log_type}_logs_path") helpers.send("#{log_type}_logs_path")
end end
def upload_button_copy def upload_button_copy
@ -31,23 +31,23 @@ class CreateLogActionsComponent < ViewComponent::Base
end end
def upload_button_href def upload_button_href
send("bulk_upload_#{log_type}_log_path", id: "start") helpers.send("bulk_upload_#{log_type}_log_path", id: "start")
end end
def create_test_log_href def create_test_log_href
send("create_test_#{log_type}_log_path") helpers.send("create_test_#{log_type}_log_path")
end end
def create_next_year_test_log_href def create_next_year_test_log_href
send("create_next_year_test_#{log_type}_log_path") helpers.send("create_next_year_test_#{log_type}_log_path")
end end
def create_setup_test_log_href def create_setup_test_log_href
send("create_setup_test_#{log_type}_log_path") helpers.send("create_setup_test_#{log_type}_log_path")
end end
def create_next_year_setup_test_log_href def create_next_year_setup_test_log_href
send("create_next_year_setup_test_#{log_type}_log_path") helpers.send("create_next_year_setup_test_#{log_type}_log_path")
end end
def current_collection_year_label def current_collection_year_label
@ -59,7 +59,7 @@ class CreateLogActionsComponent < ViewComponent::Base
end end
def create_test_bulk_upload_href(year) def create_test_bulk_upload_href(year)
send("create_#{year}_test_#{log_type}_bulk_upload_path") helpers.send("create_#{year}_test_#{log_type}_bulk_upload_path")
end end
def view_uploads_button_copy def view_uploads_button_copy
@ -67,6 +67,6 @@ class CreateLogActionsComponent < ViewComponent::Base
end end
def view_uploads_button_href def view_uploads_button_href
send("bulk_uploads_#{log_type}_logs_path") helpers.send("bulk_uploads_#{log_type}_logs_path")
end end
end end

2
app/components/data_protection_confirmation_banner_component.rb

@ -31,7 +31,7 @@ class DataProtectionConfirmationBannerComponent < ViewComponent::Base
def banner_text def banner_text
if show_no_dpo_message? || user.is_dpo? || !org_or_user_org.holds_own_stock? if show_no_dpo_message? || user.is_dpo? || !org_or_user_org.holds_own_stock?
govuk_link_to( helpers.govuk_link_to(
link_text, link_text,
link_href, link_href,
class: "govuk-notification-banner__link govuk-!-font-weight-bold", class: "govuk-notification-banner__link govuk-!-font-weight-bold",

6
app/components/missing_stock_owners_banner_component.rb

@ -35,7 +35,7 @@ class MissingStockOwnersBannerComponent < ViewComponent::Base
private private
def add_stock_owner_link def add_stock_owner_link
govuk_link_to( helpers.govuk_link_to(
"add a stock owner", "add a stock owner",
stock_owners_add_organisation_path(id: organisation.id), stock_owners_add_organisation_path(id: organisation.id),
class: "govuk-notification-banner__link govuk-!-font-weight-bold", class: "govuk-notification-banner__link govuk-!-font-weight-bold",
@ -43,7 +43,7 @@ private
end end
def contact_helpdesk_link def contact_helpdesk_link
govuk_link_to( helpers.govuk_link_to(
"contact the helpdesk", "contact the helpdesk",
GlobalConstants::HELPDESK_URL, GlobalConstants::HELPDESK_URL,
class: "govuk-notification-banner__link govuk-!-font-weight-bold", class: "govuk-notification-banner__link govuk-!-font-weight-bold",
@ -51,7 +51,7 @@ private
end end
def users_link def users_link
govuk_link_to( helpers.govuk_link_to(
"users page", "users page",
users_path, users_path,
class: "govuk-notification-banner__link govuk-!-font-weight-bold", class: "govuk-notification-banner__link govuk-!-font-weight-bold",

2
app/components/search_component.html.erb

@ -1,4 +1,4 @@
<%= form_with url: path(current_user), method: "get", local: true do |f| %> <%= helpers.form_with url: path(current_user), method: "get", local: true do |f| %>
<div class="app-search govuk-!-margin-bottom-4"> <div class="app-search govuk-!-margin-bottom-4">
<%= f.govuk_text_field :search, <%= f.govuk_text_field :search,
form_group: { form_group: {

34
spec/helpers/application_helper_spec.rb

@ -8,18 +8,38 @@ RSpec.describe ApplicationHelper do
let(:pagy) { nil } let(:pagy) { nil }
let(:current_user) { FactoryBot.create(:user) } let(:current_user) { FactoryBot.create(:user) }
describe "govuk_header_classes" do describe "govuk_service_navigation_classes" do
context "with external user" do context "with non-support user" do
it "shows the standard app header" do it "returns empty string for blue border (default)" do
expect(govuk_header_classes(current_user)).to eq("app-header") expect(govuk_service_navigation_classes(current_user)).to eq("")
end
context "when notifications are displayed" do
before do
allow(helper).to receive(:notifications_to_display?).and_return(true)
end
it "returns no-border class to hide the border (notification banner shows instead)" do
expect(govuk_service_navigation_classes(current_user)).to eq("app-service-navigation--no-border")
end
end end
end end
context "with internal support user" do context "with support user" do
let(:current_user) { FactoryBot.create(:user, :support) } let(:current_user) { FactoryBot.create(:user, :support) }
it "shows an orange header" do it "always returns orange class for orange border" do
expect(govuk_header_classes(current_user)).to eq("app-header app-header--orange") expect(govuk_service_navigation_classes(current_user)).to eq("app-service-navigation--orange")
end
context "when notifications are displayed" do
before do
allow(helper).to receive(:notifications_to_display?).and_return(true)
end
it "still returns orange class (support users always see orange border)" do
expect(govuk_service_navigation_classes(current_user)).to eq("app-service-navigation--orange")
end
end end
end end
end end

23
spec/requests/users_controller_spec.rb

@ -76,13 +76,16 @@ RSpec.describe UsersController, type: :request do
end end
describe "title link" do describe "title link" do
it "routes user to the home page" do it "has GOV.UK header and service navigation both linking to home page" do
sign_in user sign_in user
get "/", headers:, params: {} get "/", headers:, params: {}
expect(path).to eq("/") expect(path).to eq("/")
expect(page).to have_content("Welcome back") expect(page).to have_content("Welcome back")
expected_link = "<a class=\"govuk-header__link govuk-header__link--homepage\" href=\"/\">"
expect(CGI.unescape_html(response.body)).to include(expected_link) govuk_header_link = '<a class="govuk-header__link govuk-header__homepage-link" href="/">'
expect(CGI.unescape_html(response.body)).to include(govuk_header_link)
expect(page).to have_css(".govuk-service-navigation__link[href='/']", text: "Submit social housing lettings and sales data (CORE)")
end end
end end
@ -2597,18 +2600,4 @@ RSpec.describe UsersController, type: :request do
end end
end end
end end
describe "title link" do
before do
sign_in user
end
it "routes user to the home page" do
get "/", headers:, params: {}
expect(path).to eq("/")
expect(page).to have_content("Welcome back")
expected_link = "<a class=\"govuk-header__link govuk-header__link--homepage\" href=\"/\">"
expect(CGI.unescape_html(response.body)).to include(expected_link)
end
end
end end

Loading…
Cancel
Save