From debe7c60d0279b29cca9ba977f8a692b38628b44 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Wed, 14 Jun 2023 11:09:05 +0100 Subject: [PATCH] refactor: update matadata helper --- app/helpers/collection_resources_helper.rb | 22 ++++++++------- .../layouts/_collection_resources.html.erb | 28 +++++++++---------- .../collection_resources_helper_spec.rb | 4 +-- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/app/helpers/collection_resources_helper.rb b/app/helpers/collection_resources_helper.rb index 8cf79ebdf..a85670bda 100644 --- a/app/helpers/collection_resources_helper.rb +++ b/app/helpers/collection_resources_helper.rb @@ -1,13 +1,15 @@ module CollectionResourcesHelper - def metadata_helper(file, pages = nil) - extension = file.split(".")[-1] - type_string = case extension - when "xlsx" then "Microsoft Excel" - when "pdf" then "PDF" - else extension - end - size = number_to_human_size(File.size("public/files/#{file}"), precision: 0, significant: false) - pages_string = pages.present? ? pluralize(pages, "page") : nil - [type_string, size, pages_string].compact.join(", ") + def file_type_size_and_pages(file, number_of_pages: nil) + extension_mapping = { + "xlsx" => "Microsoft Excel", + "pdf" => "PDF", + } + extension = File.extname(file)[1..] + + file_type = extension_mapping.fetch(extension, extension) + + file_size = number_to_human_size(File.size("public/files/#{file}"), precision: 0, significant: false) + file_pages = number_of_pages ? pluralize(number_of_pages, "page") : nil + [file_type, file_size, file_pages].compact.join(", ") end end diff --git a/app/views/layouts/_collection_resources.html.erb b/app/views/layouts/_collection_resources.html.erb index a1c1864de..872e47e13 100644 --- a/app/views/layouts/_collection_resources.html.erb +++ b/app/views/layouts/_collection_resources.html.erb @@ -7,22 +7,22 @@ { name: "Lettings log for tenants (2023/24)", href: download_23_24_lettings_form_path, - metadata: metadata_helper("2023_24_lettings_paper_form.pdf", 8), + metadata: file_type_size_and_pages("2023_24_lettings_paper_form.pdf", number_of_pages: 8), }, { name: "Lettings bulk upload template (2023/24) – New question ordering", href: download_23_24_lettings_bulk_upload_template_path, - metadata: metadata_helper("bulk-upload-lettings-template-2023-24.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-lettings-template-2023-24.xlsx"), }, { name: "Lettings bulk upload template (2023/24)", href: download_23_24_lettings_bulk_upload_legacy_template_path, - metadata: metadata_helper("bulk-upload-lettings-legacy-template-2023-24.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-lettings-legacy-template-2023-24.xlsx"), }, { name: "Lettings bulk upload specification (2023/24)", href: download_23_24_lettings_bulk_upload_specification_path, - metadata: metadata_helper("bulk-upload-lettings-specification-2023-24.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-lettings-specification-2023-24.xlsx"), }, ]) %> @@ -31,22 +31,22 @@ { name: "Sales log for buyers (2023/24)", href: download_23_24_sales_form_path, - metadata: metadata_helper("2023_24_sales_paper_form.pdf", 8), + metadata: file_type_size_and_pages("2023_24_sales_paper_form.pdf", number_of_pages: 8), }, { name: "Sales bulk upload template (2023/24) – New question ordering", href: download_23_24_sales_bulk_upload_template_path, - metadata: metadata_helper("bulk-upload-sales-template-2023-24.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-sales-template-2023-24.xlsx"), }, { name: "Sales bulk upload template (2023/24)", href: download_23_24_sales_bulk_upload_legacy_template_path, - metadata: metadata_helper("bulk-upload-sales-legacy-template-2023-24.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-sales-legacy-template-2023-24.xlsx"), }, { name: "Sales bulk upload specification (2023/24)", href: download_23_24_sales_bulk_upload_specification_path, - metadata: metadata_helper("bulk-upload-sales-specification-2023-24.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-sales-specification-2023-24.xlsx"), }, ]) %> @@ -55,17 +55,17 @@ { name: "Lettings log for tenants (2022/23)", href: download_22_23_lettings_form_path, - metadata: metadata_helper("2022_23_lettings_paper_form.pdf", 4), + metadata: file_type_size_and_pages("2022_23_lettings_paper_form.pdf", number_of_pages: 4), }, { name: "Lettings bulk upload template (2022/23)", href: download_22_23_lettings_bulk_upload_template_path, - metadata: metadata_helper("bulk-upload-lettings-template-2022-23.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-lettings-template-2022-23.xlsx"), }, { name: "Lettings bulk upload specification (2022/23)", href: download_22_23_lettings_bulk_upload_specification_path, - metadata: metadata_helper("bulk-upload-lettings-specification-2022-23.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-lettings-specification-2022-23.xlsx"), }, ]) %> @@ -74,17 +74,17 @@ { name: "Sales log for buyers (2022/23)", href: download_22_23_sales_form_path, - metadata: metadata_helper("2022_23_sales_paper_form.pdf", 5), + metadata: file_type_size_and_pages("2022_23_sales_paper_form.pdf", number_of_pages: 5), }, { name: "Sales bulk upload template (2022/23)", href: download_22_23_sales_bulk_upload_template_path, - metadata: metadata_helper("bulk-upload-sales-template-2022-23.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-sales-template-2022-23.xlsx"), }, { name: "Sales bulk upload specification (2022/23)", href: download_22_23_sales_bulk_upload_specification_path, - metadata: metadata_helper("bulk-upload-sales-template-2022-23.xlsx"), + metadata: file_type_size_and_pages("bulk-upload-sales-template-2022-23.xlsx"), }, ]) %> diff --git a/spec/helpers/collection_resources_helper_spec.rb b/spec/helpers/collection_resources_helper_spec.rb index 5cb9638c0..0c87188d7 100644 --- a/spec/helpers/collection_resources_helper_spec.rb +++ b/spec/helpers/collection_resources_helper_spec.rb @@ -7,13 +7,13 @@ RSpec.describe CollectionResourcesHelper do describe "when displaying file metadata" do context "with pages" do it "returns correct metadata" do - expect(metadata_helper("2023_24_lettings_paper_form.pdf", 8)).to eq("PDF, 286 KB, 8 pages") + expect(file_type_size_and_pages("2023_24_lettings_paper_form.pdf", number_of_pages: 8)).to eq("PDF, 286 KB, 8 pages") end end context "without pages" do it "returns correct metadata" do - expect(metadata_helper("bulk-upload-lettings-template-2023-24.xlsx")).to eq("Microsoft Excel, 15 KB") + expect(file_type_size_and_pages("bulk-upload-lettings-template-2023-24.xlsx")).to eq("Microsoft Excel, 15 KB") end end end