Skip to content

Commit

Permalink
Add TakePartController
Browse files Browse the repository at this point in the history
- add view and helpers
- convert test suite to RSpec on move
  • Loading branch information
KludgeKML committed Sep 5, 2024
1 parent ba93080 commit c8466a7
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 1 deletion.
7 changes: 7 additions & 0 deletions app/controllers/take_part_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class TakePartController < ContentItemsController
helper_method :view_context

def content_item_slug
request.path
end
end
6 changes: 6 additions & 0 deletions app/helpers/machine_readable_metadata_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module MachineReadableMetadataHelper
def machine_readable_metadata(content_item, args)
locals = { content_item: content_item.to_h }.merge(args)
render("govuk_publishing_components/components/machine_readable_metadata", locals)
end
end
10 changes: 10 additions & 0 deletions app/helpers/title_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module TitleHelper
def title_and_context(title, document_type, view_context)
{
title:,
context: I18n.t("content_item.schema_name.#{document_type}", count: 1),
context_locale: view_context.t_locale_fallback("content_item.schema_name.#{document_type}", count: 1),
average_title_length: "long",
}
end
end
37 changes: 37 additions & 0 deletions app/views/take_part/show.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<% content_for :title do %>
<%= @content_item.title %> - GOV.UK
<% end %>
<% content_for :extra_head_content do %>
<%= machine_readable_metadata(@content_item, schema: :article) %>
<% end %>

<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<%= render 'govuk_publishing_components/components/title', title_and_context(@content_item.title, @content_item.document_type, view_context).except(:average_title_length) %>
<%= render 'govuk_publishing_components/components/lead_paragraph', text: @content_item.description %>
</div>

<%= render 'shared/translations' %>
</div>

<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<div class="content-bottom-margin">
<%= render 'components/figure',
src: @content_item.image["url"],
alt: @content_item.image["alt_text"],
credit: @content_item.image["credit"],
caption: @content_item.image["caption"] if @content_item.image %>
<%= render "govuk_publishing_components/components/govspeak", {
direction: page_text_direction
} do %>
<%= raw(@content_item.body) %>
<% end %>
</div>
</div>
<%= render 'shared/sidebar_navigation' %>
</div>

<%= render 'shared/footer_navigation' %>
7 changes: 6 additions & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,12 @@

get "/media/:id/:filename/preview", to: "csv_preview#show", filename: /[^\/]+/

get "/government/placeholder", to: "placeholder#show"
scope "/government" do
get "/placeholder", to: "placeholder#show"
scope "/get-involved" do
get "/take-part/:slug", to: "take_part#show"
end
end

# route API errors to the error handler
constraints ApiErrorRoutingConstraint.new do
Expand Down
24 changes: 24 additions & 0 deletions spec/system/take_part_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
RSpec.describe "TakePart" do
before do
content_store_has_example_item("/government/get-involved/take-part/tp1", schema: :take_part)
end

context "/government/get-involved/take-part/:slug" do
it "displays the take_part page" do
visit "/government/get-involved/take-part/tp1"

expect(page).to have_title("Become a councillor - GOV.UK")

expect(page).to have_css("h1", text: "Become a councillor")
expect(page).to have_text("All councils are led by democratically elected councillors who set the vision and direction, and represent their local community.")

assert page.has_text?("There are roughly 20,000 local councillors in England. Councillors are elected to the local council to represent their own local community, so they must either live or work in the area.")
end

it "does not display a single page notification button" do
visit "/government/get-involved/take-part/tp1"

expect(page).not_to have_css(".gem-c-single-page-notification-button")
end
end
end

0 comments on commit c8466a7

Please sign in to comment.