Skip to content

Commit 75f8ee7

Browse files
committed
Fixing more issues with featured images and adding extra testing
1 parent 11bd5fe commit 75f8ee7

File tree

8 files changed

+158
-86
lines changed

8 files changed

+158
-86
lines changed

app/services/cms/providers/strapi/factories/model_factory.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def self.to_blog_preview(strapi_data, _all_data)
6868
title: strapi_data[:title],
6969
excerpt: strapi_data[:excerpt],
7070
publish_date: strapi_data[:publishDate],
71-
featured_image: strapi_data[:featuredImage][:data].nil? ? nil : Models::Images::FeaturedImage.new(**to_featured_image(strapi_data[:featuredImage][:data][:attributes], nil, :small)),
71+
featured_image: strapi_data[:featuredImage][:data].nil? ? nil : Models::Images::FeaturedImage.new(**to_featured_image(strapi_data[:featuredImage], nil, :small)),
7272
slug: strapi_data[:slug]
7373
}
7474
end
@@ -119,7 +119,7 @@ def self.to_enrichment(strapi_data)
119119
end
120120

121121
def self.to_featured_image(strapi_data, _all_data, size = :large)
122-
return nil unless strapi_data[:data][:attributes]
122+
return nil unless strapi_data.dig(:data, :attributes)
123123
image_data = strapi_data[:data][:attributes]
124124
{
125125
url: image_data[:url],
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module Cms
2+
module Providers
3+
module Strapi
4+
module Mocks
5+
module Collections
6+
class BlogPreview < StrapiMock
7+
attribute(:slug) { Faker::Internet.slug }
8+
attribute(:publishDate) { Faker::Date.backward.to_s }
9+
attribute(:excerpt) { Faker::Lorem.paragraph }
10+
attribute(:title) { Faker::Lorem.sentence }
11+
attribute(:featuredImage) { {data: Images::Image.generate_raw_data} }
12+
end
13+
end
14+
end
15+
end
16+
end
17+
end
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
require "rails_helper"
2+
3+
RSpec.describe Cms::Models::Collections::BlogPreview do
4+
it "should render a BlogPreviewComponent" do
5+
@comp = Cms::Providers::Strapi::Factories::ModelFactory.process_model(
6+
{model: Cms::Models::Collections::BlogPreview, key: nil},
7+
Cms::Mocks::Collections::BlogPreview.generate_data
8+
)
9+
expect(@comp.render).to be_instance_of(BlogPreviewComponent)
10+
end
11+
end

spec/services/cms/models/dynamic_components/content_blocks/course_card_section_spec.rb

Lines changed: 0 additions & 83 deletions
This file was deleted.
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
require "rails_helper"
2+
3+
RSpec.describe Cms::Models::DynamicComponents::ContentBlocks::CourseCard do
4+
let!(:activity) { Activity.find_by(stem_activity_code: "CP228") || create(:activity, stem_activity_code: "CP228") }
5+
let!(:new_activity) { Activity.find_by(stem_activity_code: "CP229") || create(:activity, stem_activity_code: "CP229") }
6+
let!(:replaced_activity) { create(:activity, stem_activity_code: "RP228", replaced_by: new_activity) }
7+
let(:valid_course_card) { Cms::Mocks::DynamicComponents::ContentBlocks::CourseCard.generate_data(course_code: "CP228") }
8+
let(:replaced_course_card) { Cms::Mocks::DynamicComponents::ContentBlocks::CourseCard.generate_data(course_code: "RP228") }
9+
let(:invalid_course_card) { Cms::Mocks::DynamicComponents::ContentBlocks::CourseCard.generate_data(course_code: "NV228") }
10+
11+
context "with achiever match" do
12+
before do
13+
stub_course_templates
14+
stub_duration_units
15+
allow(Sentry).to receive(:capture_message)
16+
end
17+
18+
context "with valid activity" do
19+
let(:card_section) { Cms::Providers::Strapi::Factories::ComponentFactory.process_component(Cms::Mocks::DynamicComponents::Blocks::CourseCardSection.generate_raw_data(cards: [valid_course_card])) }
20+
let(:first_block) { card_section.cards_block.first }
21+
22+
it "should render as Cms::CardWrapperComponent" do
23+
expect(card_section.render).to be_a(Cms::CardWrapperComponent)
24+
end
25+
26+
it "should render cards as Cms::DynamicsComponents::CourseCard" do
27+
expect(first_block.render).to be_a(Cms::CourseCardComponent)
28+
end
29+
30+
it "should return true for valid code" do
31+
expect(first_block.render.render?).to be true
32+
end
33+
34+
it "should have correct course instance" do
35+
expect(first_block.course.activity_code).to eq("CP228")
36+
end
37+
38+
it "should not send sentry notification" do
39+
expect(Sentry).not_to have_received(:capture_message)
40+
end
41+
end
42+
43+
context "with invalid activity" do
44+
let(:card_section) { Cms::Providers::Strapi::Factories::ComponentFactory.process_component(Cms::Mocks::DynamicComponents::Blocks::CourseCardSection.generate_raw_data(cards: [invalid_course_card])) }
45+
let(:first_block) { card_section.cards_block.first }
46+
47+
it "should return false for invalid code" do
48+
expect(first_block.render.render?).to be false
49+
end
50+
51+
it "should have no course instance" do
52+
expect(first_block.course).to be_nil
53+
end
54+
55+
it "should not send sentry notification" do
56+
expect(Sentry).not_to have_received(:capture_message)
57+
end
58+
end
59+
60+
context "with replaced activity" do
61+
let!(:card_section) { Cms::Providers::Strapi::Factories::ComponentFactory.process_component(Cms::Mocks::DynamicComponents::Blocks::CourseCardSection.generate_raw_data(cards: [replaced_course_card])) }
62+
let(:first_block) { card_section.cards_block.first }
63+
64+
it "should render as Cms::CardWrapperComponent" do
65+
expect(card_section.render).to be_a(Cms::CardWrapperComponent)
66+
end
67+
68+
it "should render cards as Cms::DynamicsComponents::CourseCard" do
69+
expect(first_block.render).to be_a(Cms::CourseCardComponent)
70+
end
71+
72+
it "should return true for valid code" do
73+
expect(first_block.render.render?).to be true
74+
end
75+
76+
it "should have correct course instance" do
77+
expect(first_block.course.activity_code).to eq("CP229")
78+
end
79+
80+
it "should send sentry notification" do
81+
expect(Sentry).to have_received(:capture_message).once.with("Course card has been found with a now replaced course (RP228 -> CP229) - get comms to update Strapi to new course instance")
82+
end
83+
end
84+
end
85+
86+
context "without achiever" do
87+
before do
88+
stub_failed_course_templates
89+
end
90+
91+
context "with valid activity" do
92+
let(:card_section) { Cms::Providers::Strapi::Factories::ComponentFactory.process_component(Cms::Mocks::DynamicComponents::Blocks::CourseCardSection.generate_raw_data(cards: [valid_course_card])) }
93+
let(:first_block) { card_section.cards_block.first }
94+
95+
it "should render as Cms::CardWrapperComponent" do
96+
expect(card_section.render).to be_a(Cms::CardWrapperComponent)
97+
end
98+
99+
it "should set course to nil" do
100+
expect(first_block.course).to be nil
101+
end
102+
end
103+
end
104+
end
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
require "rails_helper"
2+
3+
RSpec.describe Cms::Models::DynamicComponents::ContentBlocks::FileLink do
4+
before do
5+
@link = Cms::Providers::Strapi::Factories::ComponentFactory.process_component(
6+
Cms::Mocks::DynamicComponents::ContentBlocks::FileLink.generate_raw_data
7+
)
8+
end
9+
10+
it "should render as Cms::FileLinkComponent" do
11+
expect(@link.render).to be_a(Cms::FileComponent)
12+
end
13+
end

spec/services/cms/models/images/featured_image_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
require "rails_helper"
22

33
RSpec.describe Cms::Models::Images::FeaturedImage do
4-
it "should render a Cms::ImageComponent" do
4+
it "should render a FeaturedImageComponent" do
55
@comp = Cms::Providers::Strapi::Factories::ModelFactory.process_model(
66
{model: Cms::Models::Images::FeaturedImage, key: :featuredImage},
77
{featuredImage: {data: Cms::Mocks::Images::Image.generate_raw_data}}

spec/support/achiever/achiever_stubs.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ def stub_age_groups
1919
"https://stemraspberrypiapi.dev3.smartmembership.net/smartconnector.smartconnector.svc/JSON/Get?Page=1&RecordCount=1000&cmd=OptionsetAgeGroups").to_return(body: json_response)
2020
end
2121

22+
def stub_failed_course_templates
23+
json_response = File.read("spec/support/achiever/failure.json")
24+
stub_request(:get,
25+
"https://stemraspberrypiapi.dev3.smartmembership.net/smartconnector.smartconnector.svc/JSON/Get?HideFromweb=0&Page=1&ProgrammeName=ncce&RecordCount=1000&cmd=CourseTemplatesListingByProgramme").to_return(body: json_response)
26+
stub_request(:get,
27+
"https://stemraspberrypiapi.dev3.smartmembership.net/smartconnector.smartconnector.svc/JSON/Get?HideFromweb=0&Page=1&ProgrammeName=PDLP&RecordCount=1000&cmd=CourseTemplatesListingByProgramme").to_return(body: json_response)
28+
stub_request(:get,
29+
"https://stemraspberrypiapi.dev3.smartmembership.net/smartconnector.smartconnector.svc/JSON/Get?HideFromweb=0&Page=1&ProgrammeName=Computing%20Clusters&RecordCount=1000&cmd=CourseTemplatesListingByProgramme").to_return(body: json_response)
30+
end
31+
2232
def stub_course_templates
2333
json_response = File.new("spec/support/achiever/courses/templates.json")
2434
stub_request(:get,

0 commit comments

Comments
 (0)