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
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

28
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"),
},
]) %>
</div>

4
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

Loading…
Cancel
Save