Skip to content

Commit 547a0e5

Browse files
authored
Merge pull request #1725 from alphagov/forms-pages-via-repository
Add FormRepository pages method
2 parents 78787e2 + 00d02d4 commit 547a0e5

39 files changed

+83
-313
lines changed

app/controllers/forms_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def show
1111

1212
def mark_pages_section_completed
1313
authorize current_form, :can_view_form?
14-
@pages = current_form.pages
14+
@pages = FormRepository.pages(current_form)
1515
@mark_complete_input = Forms::MarkPagesSectionCompleteInput.new(mark_complete_input_params)
1616

1717
if @mark_complete_input.submit

app/controllers/pages/routes_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class Pages::RoutesController < PagesController
22
def show
33
back_link_url = form_pages_path(current_form.id)
4-
render locals: { current_form:, page:, pages: current_form.pages, back_link_url: }
4+
render locals: { current_form:, page:, pages: FormRepository.pages(current_form), back_link_url: }
55
end
66

77
def delete

app/controllers/pages/secondary_skip_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,6 @@ def ensure_secondary_skip_blank
9797
end
9898

9999
def secondary_skip_condition
100-
@secondary_skip_condition ||= current_form.pages.flat_map(&:routing_conditions).compact_blank.find { |c| c.secondary_skip? && c.check_page_id == page.id }
100+
@secondary_skip_condition ||= FormRepository.pages(current_form).flat_map(&:routing_conditions).compact_blank.find { |c| c.secondary_skip? && c.check_page_id == page.id }
101101
end
102102
end

app/controllers/pages_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ class PagesController < ApplicationController
44
after_action :verify_authorized
55

66
def index
7-
@pages = current_form.pages
7+
@pages = FormRepository.pages(current_form)
88
@mark_complete_input = Forms::MarkPagesSectionCompleteInput.new(form: current_form).assign_form_values
99
render :index, locals: { current_form: }
1010
end
@@ -16,7 +16,7 @@ def delete
1616
@item_name = @page.question_text
1717
@back_url = edit_question_path(current_form.id, @page.id)
1818

19-
all_form_conditions = current_form.pages.flat_map(&:routing_conditions).compact_blank
19+
all_form_conditions = FormRepository.pages(current_form).flat_map(&:routing_conditions).compact_blank
2020
@page_goto_conditions = all_form_conditions.select { |condition| condition.goto_page_id == @page.id }
2121

2222
if @page.routing_conditions.any? && @page.routing_conditions.first.secondary_skip?

app/input_objects/pages/conditions_input.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def routing_answer_options
3737
end
3838

3939
def goto_page_options
40-
page_options = pages_after_current_page(form.pages, page).map { |p| OpenStruct.new(id: p.id, question_text: p.question_with_number) }
40+
page_options = pages_after_current_page(FormRepository.pages(form), page).map { |p| OpenStruct.new(id: p.id, question_text: p.question_with_number) }
4141
page_options << OpenStruct.new(id: "check_your_answers", question_text: I18n.t("page_conditions.check_your_answers"))
4242

4343
page_options

app/input_objects/pages/delete_condition_input.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ def submit
1616
def goto_page_question_text
1717
return I18n.t("page_conditions.check_your_answers") if goto_page_id.nil? && record.skip_to_end
1818

19-
form.pages.filter { |p| p.id == goto_page_id }.first&.question_text
19+
FormRepository.pages(form).filter { |p| p.id == goto_page_id }.first&.question_text
2020
end
2121
end

app/input_objects/pages/routes/delete_confirmation_input.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def to_partial_path
1818
private
1919

2020
def delete_routes
21-
all_form_routing_conditions = form.pages.flat_map(&:routing_conditions).compact_blank
21+
all_form_routing_conditions = FormRepository.pages(form).flat_map(&:routing_conditions).compact_blank
2222
page_routes = all_form_routing_conditions.select { |rc| rc.check_page_id == page.id }
2323
page_routes.each do |rc|
2424
rc.prefix_options[:form_id] = form.id

app/input_objects/pages/secondary_skip_input.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,17 @@ def submit
4646

4747
def goto_page_options
4848
[
49-
*pages_after_current_page(form.pages, page).map { |p| OpenStruct.new(id: p.id, question_text: p.question_with_number) },
49+
*pages_after_current_page(FormRepository.pages(form), page).map { |p| OpenStruct.new(id: p.id, question_text: p.question_with_number) },
5050
OpenStruct.new(id: "check_your_answers", question_text: I18n.t("page_conditions.check_your_answers")),
5151
]
5252
end
5353

5454
def routing_page_options
55-
pages_after_current_page(form.pages, page).map { |p| OpenStruct.new(id: p.id, question_text: p.question_with_number) }
55+
pages_after_current_page(FormRepository.pages(form), page).map { |p| OpenStruct.new(id: p.id, question_text: p.question_with_number) }
5656
end
5757

5858
def page_name(page_id)
59-
target_page = form.pages.find { |page| page.id == page_id }
59+
target_page = FormRepository.pages(form).find { |page| page.id == page_id }
6060

6161
page_name = target_page.question_text
6262
page_position = target_page.position
@@ -99,8 +99,8 @@ def goto_question_page?
9999
def pages_in_valid_order
100100
if routing_page_id.present? && goto_page_id.present?
101101

102-
routing_page = form.pages.find { |page| page.id.to_s == routing_page_id.to_s }
103-
goto_page = form.pages.find { |page| page.id.to_s == goto_page_id.to_s }
102+
routing_page = FormRepository.pages(form).find { |page| page.id.to_s == routing_page_id.to_s }
103+
goto_page = FormRepository.pages(form).find { |page| page.id.to_s == goto_page_id.to_s }
104104

105105
if goto_page_id == routing_page_id
106106
errors.add(:goto_page_id, :equal, message: I18n.t("activemodel.errors.models.pages/secondary_skip_input.attributes.goto_page_id.equal"))

app/policies/form_policy.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def can_view_form?
1717
alias_method :destroy?, :delete?
1818

1919
def can_add_page_routing_conditions?
20-
form_has_two_or_more_pages = form.pages.length >= 2
20+
form_has_two_or_more_pages = FormRepository.pages(form).length >= 2
2121
form_has_qualifying_pages = form.qualifying_route_pages.any?
2222

2323
form_has_two_or_more_pages && form_has_qualifying_pages

app/services/form_repository.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,10 @@ def destroy(record)
4242
form = Form.new(record.attributes, true)
4343
form.destroy # rubocop:disable Rails/SaveBang
4444
end
45+
46+
def pages(record)
47+
form = Form.new(record.attributes, true)
48+
form.pages
49+
end
4550
end
4651
end

0 commit comments

Comments
 (0)