From fc41b2cbf683dc8271c8e8f8ccc6f6d578895772 Mon Sep 17 00:00:00 2001 From: Michael Squance Date: Mon, 10 Feb 2025 11:11:51 +0000 Subject: [PATCH 01/11] Testing to see how hard it was to move the header menu into Strapi --- app/components/cms/header_menu_component.rb | 7 ++++++ .../header_menu_component.html.erb | 15 ++++++++++++ app/services/cms/collections/header.rb | 23 +++++++++++++++++++ app/services/cms/models/header_menu.rb | 13 +++++++++++ .../strapi/factories/model_factory.rb | 13 +++++++++++ .../cms/providers/strapi/graphql_client.rb | 9 ++++++-- .../providers/strapi/queries/base_query.rb | 15 ++++++++---- .../providers/strapi/queries/header_menu.rb | 21 +++++++++++++++++ app/views/components/_header.html.erb | 20 ++++------------ .../cms/header_menu_component_spec.rb | 9 ++++++++ 10 files changed, 124 insertions(+), 21 deletions(-) create mode 100644 app/components/cms/header_menu_component.rb create mode 100644 app/components/cms/header_menu_component/header_menu_component.html.erb create mode 100644 app/services/cms/collections/header.rb create mode 100644 app/services/cms/models/header_menu.rb create mode 100644 app/services/cms/providers/strapi/queries/header_menu.rb create mode 100644 spec/components/cms/header_menu_component_spec.rb diff --git a/app/components/cms/header_menu_component.rb b/app/components/cms/header_menu_component.rb new file mode 100644 index 0000000000..b07872e577 --- /dev/null +++ b/app/components/cms/header_menu_component.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class Cms::HeaderMenuComponent < ViewComponent::Base + def initialize(menu_items:) + @menu_items = menu_items + end +end diff --git a/app/components/cms/header_menu_component/header_menu_component.html.erb b/app/components/cms/header_menu_component/header_menu_component.html.erb new file mode 100644 index 0000000000..fcc7e03846 --- /dev/null +++ b/app/components/cms/header_menu_component/header_menu_component.html.erb @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/app/services/cms/collections/header.rb b/app/services/cms/collections/header.rb new file mode 100644 index 0000000000..8fb8ef6db5 --- /dev/null +++ b/app/services/cms/collections/header.rb @@ -0,0 +1,23 @@ +module Cms + module Collections + class Header < Resource + def to_search_record(index_time) + raise NotImplementedError + end + + def self.resource_attribute_mappings + [ + {model: Models::HeaderMenu, key: :dropDowns} + ] + end + + def self.cache_expiry + 15.minutes + end + + def self.resource_key = "header" + + def self.graphql_key = "header" + end + end +end diff --git a/app/services/cms/models/header_menu.rb b/app/services/cms/models/header_menu.rb new file mode 100644 index 0000000000..2fffdb422a --- /dev/null +++ b/app/services/cms/models/header_menu.rb @@ -0,0 +1,13 @@ +module Cms + module Models + class HeaderMenu + def initialize(menus) + @menus = menus + end + + def render + Cms::HeaderMenuComponent.new(menu_items: @menus) + end + end + end +end diff --git a/app/services/cms/providers/strapi/factories/model_factory.rb b/app/services/cms/providers/strapi/factories/model_factory.rb index 80ba488b76..daac7fe47c 100644 --- a/app/services/cms/providers/strapi/factories/model_factory.rb +++ b/app/services/cms/providers/strapi/factories/model_factory.rb @@ -57,9 +57,22 @@ def self.process_model(mapping, all_data) model_class.new(cms_models: strapi_data.map { ComponentFactory.process_component(_1) }.compact) elsif model_class == Models::EnrichmentList to_enrichment_list(all_data, strapi_data) + elsif model_class == Models::HeaderMenu + to_menu(strapi_data) end end + def self.to_menu(strapi_data) + Models::HeaderMenu.new( + strapi_data.map do |menu_item| + { + label: menu_item[:label], + menu_items: menu_item[:menuItems].map { {label: _1[:label], url: _1[:url]} } + } + end + ) + end + def self.to_seo(strapi_data) Models::Seo.new( title: strapi_data[:title], diff --git a/app/services/cms/providers/strapi/graphql_client.rb b/app/services/cms/providers/strapi/graphql_client.rb index 2ca55c3ae4..b044e9392f 100644 --- a/app/services/cms/providers/strapi/graphql_client.rb +++ b/app/services/cms/providers/strapi/graphql_client.rb @@ -34,10 +34,15 @@ def one(resource_class, resource_id = nil, preview: false, preview_key: nil) data = clean_aliases(response.original_hash) results = data[:data][resource_class.graphql_key.to_sym][:data] - raise ActiveRecord::RecordNotFound if results.empty? - map_resource(resource_class, results.first, preview, preview_key) + record = if resource_class.is_collection + results.first + else + results + end + + map_resource(resource_class, record, preview, preview_key) end # This has been created to allow for alias to be alias_name__field_name diff --git a/app/services/cms/providers/strapi/queries/base_query.rb b/app/services/cms/providers/strapi/queries/base_query.rb index 6e5dd5cc1f..29dba61999 100644 --- a/app/services/cms/providers/strapi/queries/base_query.rb +++ b/app/services/cms/providers/strapi/queries/base_query.rb @@ -12,6 +12,7 @@ class BaseQuery Models::EnrichmentDynamicZone => EnrichmentDynamicZone, Models::EnrichmentList => EnrichmentList, Models::FeaturedImage => FeaturedImage, + Models::HeaderMenu => HeaderMenu, Models::PageTitle => PageTitle, Models::Seo => Seo, Models::SimpleTitle => SimpleField, @@ -78,14 +79,20 @@ def all_query(page, page_size, params = {}) GRAPHQL end - def single_query(id) + def single_query(id = nil) filters = {} - filters[resource_filter] = {eq: id} + if @collection_class.is_collection + raise StandardError if id.nil? + filters[resource_filter] = {eq: id} + end + filter_string = if filters.any? + "(#{query_string(:filters, filters)})" + end <<~GRAPHQL.freeze query { - #{resource_name}( #{query_string(:filters, filters)} ) { + #{resource_name} #{filter_string} { data { - id + #{"id" if @collection_class.is_collection} attributes { updatedAt createdAt diff --git a/app/services/cms/providers/strapi/queries/header_menu.rb b/app/services/cms/providers/strapi/queries/header_menu.rb new file mode 100644 index 0000000000..b8e9c721a4 --- /dev/null +++ b/app/services/cms/providers/strapi/queries/header_menu.rb @@ -0,0 +1,21 @@ +module Cms + module Providers + module Strapi + module Queries + class HeaderMenu + def self.embed(name) + <<~GRAPHQL.freeze + #{name} { + label + menuItems { + label + url + } + } + GRAPHQL + end + end + end + end + end +end diff --git a/app/views/components/_header.html.erb b/app/views/components/_header.html.erb index a943a64516..5cb499d656 100644 --- a/app/views/components/_header.html.erb +++ b/app/views/components/_header.html.erb @@ -53,21 +53,11 @@ - + <% header = Cms::Collections::Header.get %> + <% header.data_models.each do |model| %> + <%= render model.render %> + <% end %> + diff --git a/spec/components/cms/header_menu_component_spec.rb b/spec/components/cms/header_menu_component_spec.rb new file mode 100644 index 0000000000..c52e31f7f9 --- /dev/null +++ b/spec/components/cms/header_menu_component_spec.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require "rails_helper" + +RSpec.describe Cms::HeaderMenuComponent, type: :component do + before do + render_inline(described_class.new(menu_items: [])) + end +end From 1dbced611569d0de63bef63f30ba350694f4760b Mon Sep 17 00:00:00 2001 From: Michael Squance Date: Mon, 10 Feb 2025 17:04:53 +0000 Subject: [PATCH 02/11] Removing old navigation helper Adding strapi header stub to all request and system tests. Fixing other test issues and adding testing for new header menu component Creating rake task to update local schema --- .env.defaults | 1 + .../header_menu_component.html.erb | 2 +- app/helpers/navigation_helper.rb | 52 ------------------- app/services/cms/collections/header.rb | 4 -- app/services/cms/collections/programme.rb | 4 -- .../cms/providers/strapi/mocks/header.rb | 23 ++++++++ lib/tasks/update_strapi_test_schema.rake | 9 ++++ .../cms/header_menu_component_spec.rb | 25 ++++++++- spec/mailers/i_belong_mailer_spec.rb | 1 - spec/rails_helper.rb | 5 ++ .../cms/providers/strapi/strapi_stubs.rb | 14 ++++- spec/views/cms/collection.html_spec.rb | 1 + spec/views/cms/resource.html_spec.rb | 1 + spec/views/components/_header_spec.rb | 13 +++-- spec/views/layouts/application.html_spec.rb | 1 + 15 files changed, 84 insertions(+), 72 deletions(-) delete mode 100644 app/helpers/navigation_helper.rb create mode 100644 app/services/cms/providers/strapi/mocks/header.rb create mode 100644 lib/tasks/update_strapi_test_schema.rake diff --git a/.env.defaults b/.env.defaults index fbdaddd563..6df298f019 100644 --- a/.env.defaults +++ b/.env.defaults @@ -78,5 +78,6 @@ STRAPI_WRITE_API_KEY="api_key_with_write_access" STRAPI_IMAGE_URL="http://strapi.teachcomputing.rpfdev.com" STRAPI_GRAPHQL_URL="http://strapi.teachcomputing.rpfdev.com/graphql" STRAPI_CONNECTION_TYPE="graphql" +STRAPI_TEST_SCHEMA_PATH="spec/support/cms/providers/strapi/schema.json" NODE_OPTIONS=--openssl-legacy-provider \ No newline at end of file diff --git a/app/components/cms/header_menu_component/header_menu_component.html.erb b/app/components/cms/header_menu_component/header_menu_component.html.erb index fcc7e03846..11113263d7 100644 --- a/app/components/cms/header_menu_component/header_menu_component.html.erb +++ b/app/components/cms/header_menu_component/header_menu_component.html.erb @@ -7,7 +7,7 @@ diff --git a/app/helpers/navigation_helper.rb b/app/helpers/navigation_helper.rb deleted file mode 100644 index 8619140fd7..0000000000 --- a/app/helpers/navigation_helper.rb +++ /dev/null @@ -1,52 +0,0 @@ -module NavigationHelper - def header_navigation - [ - {text: "Primary", - children: [ - {text: "Subject lead toolkit", link: primary_teachers_path, label: "Subject lead toolkit"}, - {text: "Teacher certificate", link: cms_page_path("primary-certificate"), label: "Primary teacher certificate"}, - {text: "Enrichment", link: primary_enrichment_path, label: "Enrichment"}, - {text: "Early career teachers", link: cms_page_path("primary-early-careers"), label: "Primary ECT"}, - {text: "Trainee teachers", link: cms_page_path("primary-trainees"), label: "Primary Trainees"}, - {text: "Senior leaders", link: primary_senior_leaders_path, label: "Primary SLT"} - ]}, - {text: "Secondary", - children: [ - {text: "Teacher toolkit", link: secondary_teachers_path, label: "Secondary teachers"}, - {text: "Teacher certification", link: secondary_certification_path, label: "Secondary teachers certification"}, - {text: "Enrichment", link: secondary_enrichment_path, label: "Enrichment"}, - {text: "Early career teachers", link: cms_page_path("secondary-early-careers"), label: "Secondary ECT"}, - {text: "Trainee teachers", link: cms_page_path("secondary-trainees"), label: "Secondary Trainees"}, - {text: "Senior leaders", link: secondary_senior_leaders_path, label: "Secondary SLT"} - ].compact}, - {text: "Training and support", - children: [ - {text: "Courses", link: courses_path, label: "Courses"}, - {text: "Funding", link: cms_page_path("funding"), label: "Bursaries"}, - {text: "Computing Hubs", link: hubs_path, label: "Computing hubs"}, - {text: "I Belong programme", link: about_i_belong_path, label: "i-belong"}, - {text: "GCSE Computer Science support", link: cms_page_path("gcse-cs-support"), label: "GCSE support"}, - {text: "Computing Clusters", link: cms_page_path("computing-clusters"), label: "Computing clusters"}, - {text: "School Trusts", link: cms_page_path("school-trusts"), label: "School trusts"} - ]}, - {text: "Teaching resources", - children: [ - {text: "Teaching resources", link: curriculum_key_stages_path, label: "Teaching resources"}, - {text: "Isaac Computer Science", link: about_isaac_computer_science_path, label: "Isaac Computer Science"}, - {text: "Careers support", link: careers_support_path, label: "Careers support"}, - {text: "Secondary question banks", link: secondary_question_banks_path, label: "Teaching resources"}, - {text: "Artificial Intelligence", link: cms_page_path(page_slug: "artificial-intelligence"), label: "Artificial Intelligence"}, - {text: "Pedagogy", link: cms_page_path(page_slug: "pedagogy"), label: "Pedagogy"}, - {text: "Primary computing glossary", link: cms_page_path(page_slug: "primary-computing-glossary"), label: "Resources primary glossary"}, - {text: "Physical computing kits", link: cms_page_path("physical-computing-kit"), label: "Physical computing kits"} - ]}, - {text: "About us", - children: [ - {text: "About the NCCE", link: about_path, label: "About the NCCE"}, - {text: "News", link: cms_posts_path, label: "News"}, - {text: "Impact and evaluation", link: impact_path, label: "Impact"}, - {text: "Get involved", link: get_involved_path, label: "Get involved"} - ]} - ] - end -end diff --git a/app/services/cms/collections/header.rb b/app/services/cms/collections/header.rb index 8fb8ef6db5..2967eb0984 100644 --- a/app/services/cms/collections/header.rb +++ b/app/services/cms/collections/header.rb @@ -1,10 +1,6 @@ module Cms module Collections class Header < Resource - def to_search_record(index_time) - raise NotImplementedError - end - def self.resource_attribute_mappings [ {model: Models::HeaderMenu, key: :dropDowns} diff --git a/app/services/cms/collections/programme.rb b/app/services/cms/collections/programme.rb index 6f570a8b83..19972c723b 100644 --- a/app/services/cms/collections/programme.rb +++ b/app/services/cms/collections/programme.rb @@ -1,10 +1,6 @@ module Cms module Collections class Programme < Resource - def to_search_record(index_time) - raise NotImplementedError - end - def self.is_collection = true def self.collection_attribute_mappings diff --git a/app/services/cms/providers/strapi/mocks/header.rb b/app/services/cms/providers/strapi/mocks/header.rb new file mode 100644 index 0000000000..28b6afecf4 --- /dev/null +++ b/app/services/cms/providers/strapi/mocks/header.rb @@ -0,0 +1,23 @@ +module Cms + module Providers + module Strapi + module Mocks + class Header < StrapiMock + attribute(:dropDowns) { Array.new(3) { DropDownMenu.generate_raw_data } } + end + + class DropDownMenu < StrapiMock + strapi_component "content-blocks.drop-down-menu" + attribute(:label) { Faker::Lorem.word } + attribute(:menuItems) { Array.new(5) { MenuItem.generate_raw_data } } + end + + class MenuItem < StrapiMock + strapi_component "content-blocks.menu-item" + attribute(:label) { Faker::Lorem.word } + attribute(:url) { "/primary-certificate" } + end + end + end + end +end diff --git a/lib/tasks/update_strapi_test_schema.rake b/lib/tasks/update_strapi_test_schema.rake new file mode 100644 index 0000000000..cf91e6ce0c --- /dev/null +++ b/lib/tasks/update_strapi_test_schema.rake @@ -0,0 +1,9 @@ +namespace :strapi do + task update_graphql_schema: :environment do + raise "You should not run this in production" if Rails.env.production? + + Cms::Providers::Strapi::GraphqlConnection.api + schema = Cms::Providers::Strapi::GraphqlConnection.dump_schema + File.write(ENV["STRAPI_TEST_SCHEMA_PATH"], schema) + end +end diff --git a/spec/components/cms/header_menu_component_spec.rb b/spec/components/cms/header_menu_component_spec.rb index c52e31f7f9..4e86b548fc 100644 --- a/spec/components/cms/header_menu_component_spec.rb +++ b/spec/components/cms/header_menu_component_spec.rb @@ -4,6 +4,29 @@ RSpec.describe Cms::HeaderMenuComponent, type: :component do before do - render_inline(described_class.new(menu_items: [])) + render_inline(described_class.new(menu_items: [ + { + label: "Drop down 1", + menu_items: [ + {label: "Menu 1 Item 1", url: "/primary-certificate"}, + {label: "Menu 1 Item 2", url: "/primary-enrichment"} + ] + }, + { + label: "Drop down 2", + menu_items: [ + {label: "Menu 2 Item 1", url: "/secondary-certificate"}, + {label: "Menu 2 Item 2", url: "/secondary-enrichment"} + ] + } + ])) + end + + it "should render the drop downs" do + expect(page).to have_css(".ncce-header__certification-item.dropdown__expander", count: 2) + end + + it "should render all links" do + expect(page).to have_css(".dropdown__expander-content-item", count: 4) end end diff --git a/spec/mailers/i_belong_mailer_spec.rb b/spec/mailers/i_belong_mailer_spec.rb index 8c6b807535..a938fbd6c6 100644 --- a/spec/mailers/i_belong_mailer_spec.rb +++ b/spec/mailers/i_belong_mailer_spec.rb @@ -3,7 +3,6 @@ RSpec.describe IBelongMailer, type: :mailer do include ApplicationHelper include ExternalLinkHelper - include NavigationHelper let(:user) { create(:user, first_name: "Tobias", last_name: "Doe") } let(:programme) { create(:i_belong) } diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index d27741e6c7..ddfbde3ab9 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -99,6 +99,11 @@ def page config.before(:each, type: :system) do driven_by selenium_driver + stub_strapi_header + end + + config.before(:each, type: :request) do + stub_strapi_header end config.after(:each, js: true, type: :system) do |_spec| diff --git a/spec/support/cms/providers/strapi/strapi_stubs.rb b/spec/support/cms/providers/strapi/strapi_stubs.rb index 143d3329b1..7ca1380f84 100644 --- a/spec/support/cms/providers/strapi/strapi_stubs.rb +++ b/spec/support/cms/providers/strapi/strapi_stubs.rb @@ -170,16 +170,26 @@ def stub_strapi_programme(key, programme: Cms::Mocks::Programme.generate_raw_dat end end + def stub_strapi_header(header: Cms::Mocks::Header.generate_raw_data) + if as_graphql + stub_strapi_graphql_query("header", header, singular: true) + end + end + def stub_strapi_schema stub_request(:post, /^https:\/\/strapi.teachcomputing.org\/graphql/) .with(body: /IntrospectionQuery/) .to_return_json(body: GRAPH_SCHEMA) end - def stub_strapi_graphql_query(resource_name, record, unique_key: nil) + def stub_strapi_graphql_query(resource_name, record, unique_key: nil, singular: false) stub_strapi_schema response = {} - response[resource_name] = {data: Array.wrap(record)} + response[resource_name] = if singular + {data: record} + else + {data: Array.wrap(record)} + end stub = stub_request(:post, /^https:\/\/strapi.teachcomputing.org\/graphql/) .with(body: /#{resource_name}/) .to_return_json(body: {data: response}) diff --git a/spec/views/cms/collection.html_spec.rb b/spec/views/cms/collection.html_spec.rb index ea49acfa7c..6f99f837d6 100644 --- a/spec/views/cms/collection.html_spec.rb +++ b/spec/views/cms/collection.html_spec.rb @@ -2,6 +2,7 @@ RSpec.describe("cms/blog", type: :view) do before do + stub_strapi_header stub_strapi_blog_collection assign(:collection, Cms::Collections::Blog.all(1, 50)) assign(:title, "Page title") diff --git a/spec/views/cms/resource.html_spec.rb b/spec/views/cms/resource.html_spec.rb index 676ad4f350..9731d59fe4 100644 --- a/spec/views/cms/resource.html_spec.rb +++ b/spec/views/cms/resource.html_spec.rb @@ -2,6 +2,7 @@ RSpec.describe("cms/resource", type: :view) do before do + stub_strapi_header stub_strapi_get_single_blog_post("blogs/test-blog", seo: { title: "some SEO content", diff --git a/spec/views/components/_header_spec.rb b/spec/views/components/_header_spec.rb index cd68d23f4a..7c13c3e023 100644 --- a/spec/views/components/_header_spec.rb +++ b/spec/views/components/_header_spec.rb @@ -8,19 +8,18 @@ programme: create(:cs_accelerator)) end - it "has a link to the home page " do - render - expect(rendered).to have_xpath('//a[@href = "/"][contains(@class, "govuk-header__link")]', count: 1) + before do + stub_strapi_header end - it "shows a link to Primary teachers" do + it "has a link to the home page " do render - expect(rendered).to have_link("Subject lead toolkit", href: "/primary-teachers") + expect(rendered).to have_xpath('//a[@href = "/"][contains(@class, "govuk-header__link")]', count: 1) end - it "shows a link to Secondary teachers" do + it "should render the header menu" do render - expect(rendered).to have_link("Teacher certification", href: "/secondary-certification") + expect(rendered).to have_css(".ncce-header__certification") end context "when a user is signed in" do diff --git a/spec/views/layouts/application.html_spec.rb b/spec/views/layouts/application.html_spec.rb index 3a296cd9c1..92d98beb84 100644 --- a/spec/views/layouts/application.html_spec.rb +++ b/spec/views/layouts/application.html_spec.rb @@ -2,6 +2,7 @@ RSpec.describe("layouts/application", type: :view) do before do + stub_strapi_header render end From 7c91a7e6f532891fc32e949a6af18c4d10cd8918 Mon Sep 17 00:00:00 2001 From: Michael Squance Date: Tue, 18 Feb 2025 15:11:07 +0000 Subject: [PATCH 03/11] Moving call to application controller, updating view and view specs accordingly --- app/controllers/application_controller.rb | 9 +++++++++ app/views/components/_header.html.erb | 7 ++++--- spec/views/components/_header_spec.rb | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 8635c9d735..8380059c96 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -4,6 +4,7 @@ class ApplicationController < ActionController::Base include Pagy::Backend before_action :authenticate + before_action :access_cms_header def authenticate return unless ENV["BASIC_AUTH_PASSWORD"] @@ -13,6 +14,14 @@ def authenticate end end + def access_cms_header + begin + @cms_header = Cms::Collections::Header.get + rescue + @cms_header = nil + end + end + def authenticate_user! redirect_to(helpers.create_account_url) unless current_user end diff --git a/app/views/components/_header.html.erb b/app/views/components/_header.html.erb index 5cb499d656..3694445c09 100644 --- a/app/views/components/_header.html.erb +++ b/app/views/components/_header.html.erb @@ -53,9 +53,10 @@ - <% header = Cms::Collections::Header.get %> - <% header.data_models.each do |model| %> - <%= render model.render %> + <% if @cms_header %> + <% @cms_header.data_models.each do |model| %> + <%= render model.render %> + <% end %> <% end %> diff --git a/spec/views/components/_header_spec.rb b/spec/views/components/_header_spec.rb index 7c13c3e023..d9365a3048 100644 --- a/spec/views/components/_header_spec.rb +++ b/spec/views/components/_header_spec.rb @@ -10,6 +10,7 @@ before do stub_strapi_header + assign(:cms_header, Cms::Collections::Header.get) end it "has a link to the home page " do From f095b2036cbb41d3338962410698622b85f08420 Mon Sep 17 00:00:00 2001 From: Michael Squance Date: Tue, 18 Feb 2025 15:14:04 +0000 Subject: [PATCH 04/11] Fixing standard errors --- app/controllers/application_controller.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 8380059c96..df3b3da306 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -15,11 +15,9 @@ def authenticate end def access_cms_header - begin - @cms_header = Cms::Collections::Header.get - rescue - @cms_header = nil - end + @cms_header = Cms::Collections::Header.get + rescue + @cms_header = nil end def authenticate_user! From 43b33f312ede7204e87c8fad10c73c010db15cb7 Mon Sep 17 00:00:00 2001 From: Michael Squance Date: Tue, 18 Feb 2025 15:40:52 +0000 Subject: [PATCH 05/11] Better error handling on the cms header method --- app/controllers/application_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index df3b3da306..baebcfb77a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -16,7 +16,7 @@ def authenticate def access_cms_header @cms_header = Cms::Collections::Header.get - rescue + rescue ActiveRecord::RecordNotFound @cms_header = nil end From 92eda9e586b3a649b441e978aa16880aec06831c Mon Sep 17 00:00:00 2001 From: Michael Squance Date: Mon, 24 Feb 2025 17:08:27 +0000 Subject: [PATCH 06/11] Moving css to component and having a good tidy up Adding preview and extra testing --- .../header_menu_component.html.erb | 10 +- .../header_menu_component.scss | 170 +++++++++++++++ .../providers/strapi/graphql_connection.rb | 3 +- .../stylesheets/components/_header.scss | 197 +----------------- lib/tasks/update_strapi_test_schema.rake | 1 - .../cms/header_menu_component_preview.rb | 24 +++ .../cms/header_menu_component_spec.rb | 2 +- .../tasks/update_strapi_test_schema_spec.rb | 13 ++ .../strapi/graphql_connection_spec.rb | 3 +- spec/support/cms/providers/strapi/schema.json | 2 +- spec/views/components/_header_spec.rb | 2 +- 11 files changed, 222 insertions(+), 205 deletions(-) create mode 100644 app/components/cms/header_menu_component/header_menu_component.scss create mode 100644 previews/components/cms/header_menu_component_preview.rb create mode 100644 spec/lib/tasks/update_strapi_test_schema_spec.rb diff --git a/app/components/cms/header_menu_component/header_menu_component.html.erb b/app/components/cms/header_menu_component/header_menu_component.html.erb index 11113263d7..5018c50c04 100644 --- a/app/components/cms/header_menu_component/header_menu_component.html.erb +++ b/app/components/cms/header_menu_component/header_menu_component.html.erb @@ -1,9 +1,9 @@ -
    +
      <% @menu_items.each do | nav_item |%> -