From 352a8a3913b6303296ebc34346495c1d04a8ac76 Mon Sep 17 00:00:00 2001 From: Keith Lawrence Date: Mon, 23 Sep 2024 14:59:17 +0100 Subject: [PATCH] Tests for meta_tags (WIP) --- spec/system/meta_tags_spec.rb | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 spec/system/meta_tags_spec.rb diff --git a/spec/system/meta_tags_spec.rb b/spec/system/meta_tags_spec.rb new file mode 100644 index 000000000..73bf0d297 --- /dev/null +++ b/spec/system/meta_tags_spec.rb @@ -0,0 +1,62 @@ +RSpec.describe "Meta Tags" do + before do + case_study = GovukSchemas::RandomExample.for_schema(frontend_schema: "take_part") do |random| + random.merge!( + "title" => "Zhe title", + "withdrawn_notice" => {}, + "locale" => "en", + ) + end + + stub_content_store_has_item("/government/get-involved/take-part/some-page", case_study.to_json) + end + + it "renders the correct meta tags for pages" do + visit "/government/get-involved/take-part/some-page" + + expect(page).to have_css("meta[property='og:title'][content='Zhe title']", visible: false) + end + + context "for pages without images" do + before do + case_study = GovukSchemas::RandomExample.for_schema(frontend_schema: "news_article") do |random| + random["details"].delete("image") + random["locale"] = "en" + random + end + stub_content_store_has_item("/government/get-involved/take-part/some-page", case_study.to_json) + end + + it "does not render image tags" do + visit "/government/get-involved/take-part/some-page" + + expect(page).to have_css("meta[name='twitter:card'][content='summary']", visible: false) + expect(page).not_to have_css("meta[name='twitter:image']") + expect(page).not_to have_css("meta[name='og:image']") + end + end + + context "for pages with images" do + before do + case_study = GovukSchemas::RandomExample.for_schema(frontend_schema: "news_article") do |random| + random["details"] = random["details"].merge( + "image" => { + "url" => "https://example.org/image.jpg", + "alt_text" => "An accessible alt text", + }, + ) + random["locale"] = "en" + random + end + stub_content_store_has_item("/government/get-involved/take-part/some-page", case_study.to_json) + end + + it "renders image tags" do + visit "/government/get-involved/take-part/some-page" + + expect(page).to have_css("meta[name='twitter:card'][content='summary_large_image']", visible: false) + expect(page).to have_css("meta[name='twitter:image'][content='https://example.org/image.jpg']", visible: false) + expect(page).to have_css("meta[property='og:image'][content='https://example.org/image.jpg']", visible: false) + end + end +end