From c206dbaf2ae4d9710755399be50992677e32cd6a Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 8 Oct 2024 11:12:55 +0100 Subject: [PATCH] Display next collection resources to users when released --- app/helpers/collection_resources_helper.rb | 3 +++ app/models/collection_resource.rb | 5 ++-- ...08100119_add_collection_resources_table.rb | 15 ++++++++++++ db/schema.rb | 15 +++++++++++- .../collection_resources_helper_spec.rb | 24 +++++++++++++++++++ 5 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20241008100119_add_collection_resources_table.rb diff --git a/app/helpers/collection_resources_helper.rb b/app/helpers/collection_resources_helper.rb index ad2e8917b..b5aec1405 100644 --- a/app/helpers/collection_resources_helper.rb +++ b/app/helpers/collection_resources_helper.rb @@ -26,6 +26,7 @@ module CollectionResourcesHelper def displayed_collection_resource_years return [previous_collection_start_year, current_collection_start_year] if FormHandler.instance.in_edit_crossover_period? + return [current_collection_start_year, next_collection_start_year] if CollectionResource.where(year: next_collection_start_year, mandatory: true, released_to_user: true).any? [current_collection_start_year] end @@ -70,6 +71,8 @@ module CollectionResourcesHelper end def display_next_year_banner? + return false if CollectionResource.where(year: next_collection_start_year, mandatory: true, released_to_user: true).any? + editable_collection_resource_years.include?(next_collection_start_year) end diff --git a/app/models/collection_resource.rb b/app/models/collection_resource.rb index d5c3c895b..81665ccf6 100644 --- a/app/models/collection_resource.rb +++ b/app/models/collection_resource.rb @@ -1,8 +1,7 @@ -class CollectionResource - include ActiveModel::Model +class CollectionResource < ApplicationRecord include Rails.application.routes.url_helpers - attr_accessor :resource_type, :display_name, :short_display_name, :year, :log_type, :download_filename, :file + attr_accessor :file def download_path download_mandatory_collection_resource_path(log_type:, year:, resource_type:) diff --git a/db/migrate/20241008100119_add_collection_resources_table.rb b/db/migrate/20241008100119_add_collection_resources_table.rb new file mode 100644 index 000000000..f84a6d8e3 --- /dev/null +++ b/db/migrate/20241008100119_add_collection_resources_table.rb @@ -0,0 +1,15 @@ +class AddCollectionResourcesTable < ActiveRecord::Migration[7.0] + def change + create_table :collection_resources do |t| + t.column :log_type, :string + t.column :resource_type, :string + t.column :display_name, :string + t.column :short_display_name, :string + t.column :year, :integer + t.column :download_filename, :string + t.column :mandatory, :boolean + t.column :released_to_user, :boolean + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 684092f80..1f5cca5ca 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_10_02_163937) do +ActiveRecord::Schema[7.0].define(version: 2024_10_08_100119) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -50,6 +50,19 @@ ActiveRecord::Schema[7.0].define(version: 2024_10_02_163937) do t.index ["user_id"], name: "index_bulk_uploads_on_user_id" end + create_table "collection_resources", force: :cascade do |t| + t.string "log_type" + t.string "resource_type" + t.string "display_name" + t.string "short_display_name" + t.integer "year" + t.string "download_filename" + t.boolean "mandatory" + t.boolean "released_to_user" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + create_table "csv_variable_definitions", force: :cascade do |t| t.string "variable", null: false t.string "definition", null: false diff --git a/spec/helpers/collection_resources_helper_spec.rb b/spec/helpers/collection_resources_helper_spec.rb index 05eef5a45..2bdde8cd2 100644 --- a/spec/helpers/collection_resources_helper_spec.rb +++ b/spec/helpers/collection_resources_helper_spec.rb @@ -91,6 +91,18 @@ RSpec.describe CollectionResourcesHelper do it "returns current year" do expect(displayed_collection_resource_years).to eq([2024]) end + + context "and next year resources were manually released" do + before do + CollectionResource.create!(year: 2025, resource_type: "paper_form", display_name: "lettings log for tenants (2025 to 2026)", download_filename: "file.pdf", mandatory: true, released_to_user: true) + CollectionResource.create!(year: 2025, resource_type: "bulk_upload_template", display_name: "bulk upload template (2025 to 2026)", download_filename: "file.xlsx", mandatory: true, released_to_user: true) + CollectionResource.create!(year: 2025, resource_type: "bulk_upload_specification", display_name: "sales log for tenants (2025 to 2026)", download_filename: "file.xlsx", mandatory: true, released_to_user: true) + end + + it "reutrns current and next years" do + expect(displayed_collection_resource_years).to eq([2024, 2025]) + end + end end end @@ -184,6 +196,18 @@ RSpec.describe CollectionResourcesHelper do it "returns true" do expect(display_next_year_banner?).to be_truthy end + + context "and the resources have been manually released" do + before do + CollectionResource.create!(year: 2025, resource_type: "paper_form", display_name: "lettings log for tenants (2025 to 2026)", download_filename: "file.pdf", mandatory: true, released_to_user: true) + CollectionResource.create!(year: 2025, resource_type: "bulk_upload_template", display_name: "bulk upload template (2025 to 2026)", download_filename: "file.xlsx", mandatory: true, released_to_user: true) + CollectionResource.create!(year: 2025, resource_type: "bulk_upload_specification", display_name: "sales log for tenants (2025 to 2026)", download_filename: "file.xlsx", mandatory: true, released_to_user: true) + end + + it "returns false" do + expect(display_next_year_banner?).to be_falsey + end + end end end