Skip to content

Commit b06cfae

Browse files
committed
Adding replaced by logic to the course card component (done in the mapping layer) and then updating tests
1 parent 877b5f3 commit b06cfae

File tree

2 files changed

+55
-14
lines changed

2 files changed

+55
-14
lines changed

app/services/cms/dynamic_components/course_card.rb

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,23 @@ def initialize(title:, banner_text:, course_code:, description:, image:)
88
@banner_text = banner_text
99
@description = description
1010
@image = image
11-
@course = begin
12-
Achiever::Course::Template.find_by_activity_code(course_code)
13-
rescue ActiveRecord::RecordNotFound
14-
nil
11+
12+
activity = Activity.find_by(stem_activity_code: course_code)
13+
@course = if activity
14+
if activity.replaced_by
15+
get_achiever_course(activity.replaced_by)
16+
elsif activity
17+
get_achiever_course(activity)
18+
end
1519
end
1620
end
1721

22+
def get_achiever_course(activity)
23+
Achiever::Course::Template.find_by_activity_code(activity.stem_activity_code)
24+
rescue ActiveRecord::RecordNotFound
25+
nil
26+
end
27+
1828
def render
1929
Cms::CourseCardComponent.new(title:, banner_text:, course:, description:, image:)
2030
end
Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
require "rails_helper"
22

33
RSpec.describe Cms::DynamicComponents::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) }
47
let(:valid_course_card) { Cms::Mocks::DynamicComponents::CourseCard.generate_data(course_code: "CP228") }
8+
let(:replaced_course_card) { Cms::Mocks::DynamicComponents::CourseCard.generate_data(course_code: "RP228") }
59
let(:invalid_course_card) { Cms::Mocks::DynamicComponents::CourseCard.generate_data(course_code: "NV228") }
610

711
before do
@@ -10,30 +14,57 @@
1014
end
1115

1216
context "with valid activity" do
13-
before do
14-
@card_section = Cms::Providers::Strapi::Factories::ComponentFactory.process_component(Cms::Mocks::CourseCardSection.generate_raw_data(cards: [valid_course_card]))
15-
end
17+
let(:card_section) { Cms::Providers::Strapi::Factories::ComponentFactory.process_component(Cms::Mocks::CourseCardSection.generate_raw_data(cards: [valid_course_card])) }
18+
let(:first_block) { card_section.cards_block.first }
1619

1720
it "should render as Cms::CardWrapperComponent" do
18-
expect(@card_section.render).to be_a(Cms::CardWrapperComponent)
21+
expect(card_section.render).to be_a(Cms::CardWrapperComponent)
1922
end
2023

2124
it "should render cards as Cms::DynamicsComponents::CourseCard" do
22-
expect(@card_section.cards_block.first.render).to be_a(Cms::CourseCardComponent)
25+
expect(first_block.render).to be_a(Cms::CourseCardComponent)
2326
end
2427

2528
it "should return true for valid code" do
26-
expect(@card_section.cards_block.first.render.render?).to be true
29+
expect(first_block.render.render?).to be true
30+
end
31+
32+
it "should have correct course instance" do
33+
expect(first_block.course.activity_code).to eq("CP228")
2734
end
2835
end
2936

3037
context "with invalid activity" do
31-
before do
32-
@card_section = Cms::Providers::Strapi::Factories::ComponentFactory.process_component(Cms::Mocks::CourseCardSection.generate_raw_data(cards: [invalid_course_card]))
33-
end
38+
let(:card_section) { Cms::Providers::Strapi::Factories::ComponentFactory.process_component(Cms::Mocks::CourseCardSection.generate_raw_data(cards: [invalid_course_card])) }
39+
let(:first_block) { card_section.cards_block.first }
3440

3541
it "should return false for invalid code" do
36-
expect(@card_section.cards_block.first.render.render?).to be false
42+
expect(first_block.render.render?).to be false
43+
end
44+
45+
it "should have no course instance" do
46+
expect(first_block.course).to be_nil
47+
end
48+
end
49+
50+
context "with replaced activity" do
51+
let(:card_section) { Cms::Providers::Strapi::Factories::ComponentFactory.process_component(Cms::Mocks::CourseCardSection.generate_raw_data(cards: [replaced_course_card])) }
52+
let(:first_block) { card_section.cards_block.first }
53+
54+
it "should render as Cms::CardWrapperComponent" do
55+
expect(card_section.render).to be_a(Cms::CardWrapperComponent)
56+
end
57+
58+
it "should render cards as Cms::DynamicsComponents::CourseCard" do
59+
expect(first_block.render).to be_a(Cms::CourseCardComponent)
60+
end
61+
62+
it "should return true for valid code" do
63+
expect(first_block.render.render?).to be true
64+
end
65+
66+
it "should have correct course instance" do
67+
expect(first_block.course.activity_code).to eq("CP229")
3768
end
3869
end
3970
end

0 commit comments

Comments
 (0)