Browse Source

refactor: update matadata helper

pull/1671/head
natdeanlewissoftwire 3 years ago
parent
commit
debe7c60d0
  1. 22
      app/helpers/collection_resources_helper.rb
  2. 28
      app/views/layouts/_collection_resources.html.erb
  3. 4
      spec/helpers/collection_resources_helper_spec.rb

22
app/helpers/collection_resources_helper.rb

@ -1,13 +1,15 @@
module CollectionResourcesHelper module CollectionResourcesHelper
def metadata_helper(file, pages = nil) def file_type_size_and_pages(file, number_of_pages: nil)
extension = file.split(".")[-1] extension_mapping = {
type_string = case extension "xlsx" => "Microsoft Excel",
when "xlsx" then "Microsoft Excel" "pdf" => "PDF",
when "pdf" then "PDF" }
else extension extension = File.extname(file)[1..]
end
size = number_to_human_size(File.size("public/files/#{file}"), precision: 0, significant: false) file_type = extension_mapping.fetch(extension, extension)
pages_string = pages.present? ? pluralize(pages, "page") : nil
[type_string, size, pages_string].compact.join(", ") 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
end end

28
app/views/layouts/_collection_resources.html.erb

@ -7,22 +7,22 @@
{ {
name: "Lettings log for tenants (2023/24)", name: "Lettings log for tenants (2023/24)",
href: download_23_24_lettings_form_path, 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", name: "Lettings bulk upload template (2023/24) – New question ordering",
href: download_23_24_lettings_bulk_upload_template_path, 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)", name: "Lettings bulk upload template (2023/24)",
href: download_23_24_lettings_bulk_upload_legacy_template_path, 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)", name: "Lettings bulk upload specification (2023/24)",
href: download_23_24_lettings_bulk_upload_specification_path, 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)", name: "Sales log for buyers (2023/24)",
href: download_23_24_sales_form_path, 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", name: "Sales bulk upload template (2023/24) – New question ordering",
href: download_23_24_sales_bulk_upload_template_path, 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)", name: "Sales bulk upload template (2023/24)",
href: download_23_24_sales_bulk_upload_legacy_template_path, 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)", name: "Sales bulk upload specification (2023/24)",
href: download_23_24_sales_bulk_upload_specification_path, 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)", name: "Lettings log for tenants (2022/23)",
href: download_22_23_lettings_form_path, 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)", name: "Lettings bulk upload template (2022/23)",
href: download_22_23_lettings_bulk_upload_template_path, 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)", name: "Lettings bulk upload specification (2022/23)",
href: download_22_23_lettings_bulk_upload_specification_path, 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)", name: "Sales log for buyers (2022/23)",
href: download_22_23_sales_form_path, 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)", name: "Sales bulk upload template (2022/23)",
href: download_22_23_sales_bulk_upload_template_path, 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)", name: "Sales bulk upload specification (2022/23)",
href: download_22_23_sales_bulk_upload_specification_path, 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"),
}, },
]) %> ]) %>
</div> </div>

4
spec/helpers/collection_resources_helper_spec.rb

@ -7,13 +7,13 @@ RSpec.describe CollectionResourcesHelper do
describe "when displaying file metadata" do describe "when displaying file metadata" do
context "with pages" do context "with pages" do
it "returns correct metadata" 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
end end
context "without pages" do context "without pages" do
it "returns correct metadata" 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 end
end end

Loading…
Cancel
Save