|
1 | 1 | require "rails_helper" |
2 | 2 |
|
3 | 3 | 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) } |
4 | 7 | 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") } |
5 | 9 | let(:invalid_course_card) { Cms::Mocks::DynamicComponents::CourseCard.generate_data(course_code: "NV228") } |
6 | 10 |
|
7 | 11 | before do |
|
10 | 14 | end |
11 | 15 |
|
12 | 16 | 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 } |
16 | 19 |
|
17 | 20 | 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) |
19 | 22 | end |
20 | 23 |
|
21 | 24 | 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) |
23 | 26 | end |
24 | 27 |
|
25 | 28 | 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") |
27 | 34 | end |
28 | 35 | end |
29 | 36 |
|
30 | 37 | 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 } |
34 | 40 |
|
35 | 41 | 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") |
37 | 68 | end |
38 | 69 | end |
39 | 70 | end |
0 commit comments