Skip to content

Commit dcdbcf5

Browse files
committed
Some refactoring in the component
Updating the mock Adding stub into system and request tests Updating footer testing
1 parent 70338d5 commit dcdbcf5

File tree

9 files changed

+54
-85
lines changed

9 files changed

+54
-85
lines changed

app/components/cms/footer_component.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def link_blocks
3030
private
3131

3232
def data_models_by_type(type)
33-
data.data_models.select { |model| model.is_a?(type) }
33+
data.select { |model| model.is_a?(type) }
3434
end
3535

3636
def find_text_field(index)

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,6 @@ def self.to_menu(strapi_data, _all_data)
160160
def self.to_footer(strapi_data, _all_data)
161161
{
162162
link_blocks: strapi_data.map do |link|
163-
byebug
164163
link[:link].map {
165164
Models::DynamicComponents::ContentBlocks::LinkWithIcon.new(
166165
link_text: _1[:linkText],
@@ -171,7 +170,7 @@ def self.to_footer(strapi_data, _all_data)
171170
caption: _1[:icon][:data][:attributes][:caption],
172171
default_size: :small,
173172
formats: _1[:icon][:data][:attributes][:formats]
174-
),
173+
)
175174
)
176175
}
177176
end

app/services/cms/providers/strapi/mocks/meta/footer_link_block.rb

Lines changed: 0 additions & 13 deletions
This file was deleted.

app/services/cms/providers/strapi/mocks/singles/footer.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@ module Strapi
44
module Mocks
55
module Singles
66
class Footer < StrapiMock
7-
attribute(:companyLogo) { Mocks::Images::Image.as_model }
8-
attribute(:funderLogo) { Mocks::Images::Image.as_model }
7+
attribute(:companyLogo) { {data: Mocks::Images::Image.generate_raw_data} }
8+
attribute(:funderLogo) { {data: Mocks::Images::Image.generate_raw_data} }
99
attribute(:companyLogoLink) { Faker::Internet.url }
1010
attribute(:funderLogoLink) { Faker::Internet.url }
11-
attribute(:linkBlock) { Meta::FooterLinkBlock.generate_data }
11+
attribute(:linkBlock) { Array.new(4) { FooterLinkBlock.generate_data } }
12+
end
13+
14+
class FooterLinkBlock < StrapiMock
15+
attribute(:link) { Array.new(4) { DynamicComponents::ContentBlocks::LinkWithIcon.generate_data } }
1216
end
1317
end
1418
end
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<footer class="govuk-footer ncce-footer">
22
<% if @cms_footer %>
3-
<%= render Cms::FooterComponent.new(data: @cms_footer) %>
3+
<%= render Cms::FooterComponent.new(data: @cms_footer.data_models) %>
44
<% end %>
55
</footer>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# frozen_string_literal: true
2+
3+
require "rails_helper"
4+
5+
RSpec.describe Cms::FooterComponent, type: :component do
6+
before do
7+
render_inline(described_class.new(data: [
8+
Cms::Models::Data::TextField.new(value: Faker::Lorem.word),
9+
Cms::Models::Data::TextField.new(value: Faker::Lorem.word),
10+
Cms::Mocks::Images::Image.as_model,
11+
Cms::Mocks::Images::Image.as_model,
12+
Cms::Models::Meta::FooterLinkBlock.new(
13+
link_blocks: Array.new(4) do
14+
Array.new(5) { Cms::Mocks::DynamicComponents::ContentBlocks::LinkWithIcon.as_model }
15+
end
16+
)
17+
]))
18+
end
19+
20+
it "renders the component" do
21+
expect(page).to have_css(".cms-footer-component")
22+
end
23+
24+
it "renders company and funder logo images" do
25+
expect(page).to have_css("img", count: 2)
26+
end
27+
28+
it "renders the link blocks" do
29+
expect(page).to have_css(".cms-footer-component__link-block", count: 4)
30+
end
31+
end

spec/rails_helper.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,12 @@ def page
100100
config.before(:each, type: :system) do
101101
driven_by selenium_driver
102102
stub_strapi_header
103+
stub_strapi_footer
103104
end
104105

105106
config.before(:each, type: :request) do
106107
stub_strapi_header
108+
stub_strapi_footer
107109
end
108110

109111
config.after(:each, js: true, type: :system) do |_spec|
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
require "rails_helper"
2+
3+
RSpec.describe Cms::Providers::Strapi::Queries::FooterLinkBlock do
4+
it_should_behave_like "a strapi graphql embed", {key: "footer",
5+
required_fields: %w[
6+
link
7+
]}
8+
end

spec/views/components/_footer_spec.rb

Lines changed: 3 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -6,70 +6,8 @@
66
assign(:cms_footer, Cms::Singles::Footer.get)
77
end
88

9-
it "has a contact link" do
10-
expect(rendered).to have_link("Email", href: "mailto:info@teachcomputing.org")
11-
end
12-
13-
it "has a courses link" do
14-
expect(rendered).to have_link("Courses", href: "/courses")
15-
end
16-
17-
it "has a resources link" do
18-
expect(rendered).to have_link("Teaching resources", href: "/curriculum")
19-
end
20-
21-
it "has a news link" do
22-
expect(rendered).to have_link("News", href: cms_posts_path)
23-
end
24-
25-
it "has a privacy link" do
26-
expect(rendered).to have_link("Privacy", href: "/privacy")
27-
end
28-
29-
it "has a terms and conditions link" do
30-
expect(rendered).to have_link("Terms and Conditions", href: "/terms-conditions")
31-
end
32-
it "has an accessibility statement link" do
33-
expect(rendered).to have_link("Accessibility", href: "/accessibility-statement")
34-
end
35-
36-
it "has an about link" do
37-
expect(rendered).to have_link("About us", href: "/about")
38-
end
39-
40-
it "has a get involved link" do
41-
expect(rendered).to have_link("Get involved", href: "/get-involved")
42-
end
43-
44-
it "has a pedagogy link" do
45-
expect(rendered).to have_link("Pedagogy", href: "/pedagogy")
46-
end
47-
48-
it "has a ITE providers link" do
49-
expect(rendered).to have_link("ITE providers", href: "/support-for-ite-providers")
50-
end
51-
52-
it "has a LinkedIn link" do
53-
expect(rendered).to have_link("LinkedIn", href: %r{linkedin.com/company/national-centre-for-computing-education})
54-
end
55-
56-
it "has an X link" do
57-
expect(rendered).to have_link("X", href: %r{twitter.com/WeAreComputing})
58-
end
59-
60-
it "has a facebook link" do
61-
expect(rendered).to have_link("Facebook", href: %r{facebook.com/WeAreComputing})
62-
end
63-
64-
it "has a LinkedIn icon" do
65-
expect(rendered).to have_xpath('//img[contains(@class, "ncce-link__icon--footer")][contains(@alt, "LinkedIn logo")]')
66-
end
67-
68-
it "has an X icon" do
69-
expect(rendered).to have_xpath('//img[contains(@class, "ncce-link__icon--footer")][contains(@alt, "X logo")]')
70-
end
71-
72-
it "has a facebook icon" do
73-
expect(rendered).to have_xpath('//img[contains(@class, "ncce-link__icon--footer")][contains(@alt, "Facebook logo")]')
9+
it "renders the footer component" do
10+
render
11+
expect(rendered).to have_css(".cms-footer-component")
7412
end
7513
end

0 commit comments

Comments
 (0)