Browse Source

Add a request spec

pull/390/head
baarkerlounger 3 years ago
parent
commit
c4c0467274
  1. 17
      app/controllers/content_controller.rb
  2. 14
      app/helpers/content_helper.rb
  3. 6
      app/views/content/page.html.erb
  4. 13
      spec/helpers/content_helper_spec.rb
  5. 34
      spec/requests/content_controller_spec.rb

17
app/controllers/content_controller.rb

@ -1,6 +1,4 @@
class ContentController < ApplicationController class ContentController < ApplicationController
include ContentHelper
def accessibility_statement def accessibility_statement
render_content_page :accessibility_statement render_content_page :accessibility_statement
end end
@ -8,4 +6,19 @@ class ContentController < ApplicationController
def privacy_notice def privacy_notice
render_content_page :privacy_notice, page_title: "Privacy notice for tenants and buyers of new social housing" render_content_page :privacy_notice, page_title: "Privacy notice for tenants and buyers of new social housing"
end end
private
def render_content_page(page_name, page_title: nil, locals: {})
raw_content = File.read("app/views/content/#{page_name}.md")
content_with_erb_tags_replaced = ApplicationController.renderer.render(
inline: raw_content,
locals:,
)
@page_title = page_title || page_name.to_s.humanize
@page_content = GovukMarkdown.render(content_with_erb_tags_replaced).html_safe
render "content/page"
end
end end

14
app/helpers/content_helper.rb

@ -1,14 +0,0 @@
module ContentHelper
def render_content_page(page_name, page_title: nil, locals: {})
raw_content = File.read("app/views/content/#{page_name}.md")
content_with_erb_tags_replaced = ApplicationController.renderer.render(
inline: raw_content,
locals:,
)
page_title ||= page_name.to_s.humanize
page_content = GovukMarkdown.render(content_with_erb_tags_replaced).html_safe
render "content/page", locals: { page_title:, page_content: }
end
end

6
app/views/content/page.html.erb

@ -1,9 +1,9 @@
<%= content_for :title, page_title %> <%= content_for :title, @page_title %>
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop"> <div class="govuk-grid-column-two-thirds-from-desktop">
<h1 class="govuk-heading-xl"><%= page_title %></h1> <h1 class="govuk-heading-xl"><%= @page_title %></h1>
<%= page_content %> <%= @page_content %>
</div> </div>
</div> </div>

13
spec/helpers/content_helper_spec.rb

@ -1,13 +0,0 @@
require "rails_helper"
RSpec.describe ContentHelper do
let(:page_name) { "privacy_notice" }
describe "render content page" do
it "returns the page" do
expected_html = "Privacy notice"
expect(render_content_page(page_name)).to match(expected_html)
expect(page).to have_title("Privacy notice")
end
end
end

34
spec/requests/content_controller_spec.rb

@ -0,0 +1,34 @@
require "rails_helper"
RSpec.describe ContentController, type: :request do
let(:headers) { { "Accept" => "text/html" } }
let(:page) { Capybara::Node::Simple.new(response.body) }
describe "render privacy notice content page" do
before do
get "/privacy-notice", headers: headers, params: {}
end
it "returns a 200" do
expect(response).to have_http_status(:success)
end
it "returns the page" do
expect(page).to have_title("Privacy notice")
end
end
describe "render accessibility statement content page" do
before do
get "/accessibility-statement", headers: headers, params: {}
end
it "returns a 200" do
expect(response).to have_http_status(:success)
end
it "returns the page" do
expect(page).to have_title("Accessibility statement")
end
end
end
Loading…
Cancel
Save