diff --git a/app/controllers/forms/make_language_live_controller.rb b/app/controllers/forms/make_language_live_controller.rb index 29d983b4d9..0e76722c8e 100644 --- a/app/controllers/forms/make_language_live_controller.rb +++ b/app/controllers/forms/make_language_live_controller.rb @@ -56,7 +56,7 @@ def make_language_live_input_params end def render_new(status: :ok) - render "new", status:, locals: { current_form:, language: params[:language] } + render "new", status:, locals: { current_form:, language: params[:language], page_title: new_page_title, page_body: new_page_body } end def render_confirmation(status: :ok) @@ -73,5 +73,21 @@ def render_confirmation(status: :ok) def go_to_make_welsh_live_input_params params.require(:forms_go_to_make_welsh_live_input).permit(:confirm) end + + def new_page_title + return I18n.t("page_titles.make_your_changes_to_english_live") if making_english_changes_live? + + I18n.t("page_titles.make_language_live.#{params[:language]}") + end + + def new_page_body + return t("make_language_live.en.make_your_changes_to_english_live.body_html", submission_email: @current_form.submission_email) if making_english_changes_live? + + t("make_language_live.#{params[:language]}.new.body_html", submission_email: @current_form.submission_email) + end + + def making_english_changes_live? + @current_form.is_live? && params[:language] == "en" + end end end diff --git a/app/models/form.rb b/app/models/form.rb index 589baa21b7..76cba5f88f 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -232,6 +232,16 @@ def can_make_language_live?(language:) can_make_welsh_version_live? if language == "cy" end + def changed_from_live_version?(language:) + live_document = language == "cy" ? live_welsh_form_document : live_form_document + return false if live_document.blank? + + ignored_keys = %w[live_at available_languages updated_at] + return false if live_document.content.except(*ignored_keys) == as_form_document(language:).except(*ignored_keys) + + true + end + private def set_external_id @@ -296,7 +306,15 @@ def can_make_english_version_live? end def can_make_welsh_version_live? - has_live_version && all_ready_for_live? && welsh_completed? && live_form_document.present? && live_welsh_form_document.blank? + english_version_has_been_made_live? && !changed_from_live_version?(language: "en") && welsh_version_ready? && live_welsh_form_document.blank? + end + + def english_version_has_been_made_live? + has_live_version && live_form_document.present? + end + + def welsh_version_ready? + all_ready_for_live? && welsh_completed? end def after_archive diff --git a/app/services/form_task_list_service.rb b/app/services/form_task_list_service.rb index 5cc49a9c7b..afe7a6008b 100644 --- a/app/services/form_task_list_service.rb +++ b/app/services/form_task_list_service.rb @@ -193,14 +193,20 @@ def group_upgrade_url def make_form_live_section_tasks [ - { - task_name: share_preview_task_name, - path: share_preview_path(@form.id), - status: @task_statuses[:share_preview_status], - active: @form.pages.any?, - }, - make_live_task, - ] + share_preview_task, + (make_live_task unless display_make_languages_live_tasks?), + (make_only_english_live_task if display_make_languages_live_tasks?), + (make_only_welsh_live_task if display_make_languages_live_tasks?), + ].compact + end + + def share_preview_task + { + task_name: share_preview_task_name, + path: share_preview_path(@form.id), + status: @task_statuses[:share_preview_status], + active: @form.pages.any?, + } end def make_live_task @@ -215,6 +221,37 @@ def make_live_task } end + def make_only_english_live_task + status = @task_statuses[:make_only_english_live_status] + can_make_form_live = status == :not_started + english_changes_to_make_live = @form.is_live? && @form.changed_from_live_version?(language: "en") + + task_name = english_changes_to_make_live ? I18n.t("forms.task_list_edit.make_form_live_section.make_english_form_live") : I18n.t("forms.task_list_create.make_form_live_section.make_english_form_live") + + { + task_name:, + path: can_make_form_live ? make_language_live_path(@form.id, language: "en") : "", + status:, + active: can_make_form_live, + } + end + + def make_only_welsh_live_task + status = @task_statuses[:make_only_welsh_live_status] + can_make_form_live = status == :not_started + + { + task_name: I18n.t("forms.task_list_create.make_form_live_section.make_welsh_form_live"), + path: can_make_form_live ? make_language_live_path(@form.id, language: "cy") : "", + status:, + active: can_make_form_live, + } + end + + def display_make_languages_live_tasks? + @form.live_welsh_form_document.blank? && @form.has_welsh_translation? + end + def live_title_name return I18n.t("forms.task_list_create.make_form_live_section.title") if @form.is_archived? diff --git a/app/services/task_status_service.rb b/app/services/task_status_service.rb index 4ad99ec195..1f78e5b610 100644 --- a/app/services/task_status_service.rb +++ b/app/services/task_status_service.rb @@ -36,6 +36,8 @@ def all_task_statuses batch_submissions_status:, share_preview_status:, make_live_status:, + make_only_english_live_status:, + make_only_welsh_live_status:, welsh_language_status:, submission_email_status:, confirm_submission_email_status:, @@ -139,6 +141,20 @@ def make_live_status :completed if @form.has_live_version end + def make_only_english_live_status + return :completed if @form.has_live_version && !@form.changed_from_live_version?(language: "en") + return :not_started if @form.can_make_language_live?(language: "en") + + :cannot_start + end + + def make_only_welsh_live_status + return :not_started if @form.can_make_language_live?(language: "cy") + return :completed if @form.live_welsh_form_document.present? + + :cannot_start + end + def make_live_status_for_draft # If the form has a live Welsh version, we ignore missing Welsh translations # and show the make live task and link. In this case, we will show a warning diff --git a/app/state_machines/form_state_machine.rb b/app/state_machines/form_state_machine.rb index f61ff3782d..add00e514e 100644 --- a/app/state_machines/form_state_machine.rb +++ b/app/state_machines/form_state_machine.rb @@ -73,7 +73,7 @@ def event_path(from:, to:) before :before_make_english_live after :after_make_english_live - transitions from: %i[draft live live_with_draft archived_with_draft], to: :live, guard: :can_make_english_version_live? + transitions from: %i[draft live live_with_draft archived_with_draft], to: :live_with_draft, guard: :can_make_english_version_live? end event :make_welsh_version_live do diff --git a/app/views/forms/make_language_live/new.html.erb b/app/views/forms/make_language_live/new.html.erb index be655c1248..74241c28a7 100644 --- a/app/views/forms/make_language_live/new.html.erb +++ b/app/views/forms/make_language_live/new.html.erb @@ -1,4 +1,4 @@ -<% set_page_title(title_with_error_prefix(t("page_titles.make_language_live.#{language}"), @make_language_live_input.errors.any?)) %> +<% set_page_title(title_with_error_prefix((page_title), @make_language_live_input.errors.any?)) %> <% content_for :back_link, govuk_back_link_to(form_path, t("back_link.form_create")) %>
@@ -10,10 +10,10 @@

<%= @make_language_live_input.form.name %> - <%= t("page_titles.make_language_live.#{language}") %> + <%= page_title %>

- <%= t("make_language_live.#{language}.new.body_html", submission_email: @make_language_live_input.form.submission_email) %> + <%= page_body %> <%= f.govuk_collection_radio_buttons :confirm, @make_language_live_input.values, ->(option) { option }, ->(option) { t("helpers.label.confirm_action_input.options.#{option}") }, diff --git a/config/locales/en.yml b/config/locales/en.yml index 1afb8dc77b..df76d3a7df 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -554,7 +554,9 @@ en: A group admin can request to upgrade the group so forms can be made live. You can view the members of the group to find a group admin. no_org_admin: You cannot make this form live because it’s in a ‘trial’ group. + make_english_form_live: Make your English form live make_live: Make your form live + make_welsh_form_live: Make your Welsh form live share_preview: Share a preview of your draft form title: Make your form live user_cannot_administer: @@ -588,6 +590,7 @@ en: submission_attachments: Get a CSV or JSON file of each completed form title: Change how you get completed forms make_form_live_section: + make_english_form_live: Make changes to your English form live make_live: Make your changes live share_preview: Share a preview of your draft form title: Make your changes live @@ -1235,6 +1238,10 @@ en:

The form will not be indexed by search engines, so people will not be able to find it easily. Contact your GOV.UK publishing team to publish links to your form on GOV.UK so people can find it.

Completed forms will be sent to: %{submission_email}

en: + make_your_changes_to_english_live: + body_html: | +

The form will not be indexed by search engines, so people will not be able to find it easily. Contact your GOV.UK publishing team to publish links to your form on GOV.UK so people can find it.

+

Completed forms will be sent to: %{submission_email}

new: body_html: |

When you make your form live you’ll get a new URL for the English version.

diff --git a/spec/models/form_spec.rb b/spec/models/form_spec.rb index e86e7636f6..771375f23a 100644 --- a/spec/models/form_spec.rb +++ b/spec/models/form_spec.rb @@ -1020,6 +1020,8 @@ welsh_language_status: :optional, share_preview_status: :completed, make_live_status: :completed, + make_only_english_live_status: :completed, + make_only_welsh_live_status: :cannot_start, } expect(form.all_task_statuses).to eq expected_hash end @@ -1642,7 +1644,7 @@ context "when the Welsh task is still in progress" do let(:form) { create :form, :ready_for_live, :with_welsh_translation, state: "live", welsh_completed: false } - it "returns true" do + it "returns false" do expect(form.can_make_language_live?(language:)).to be false end end @@ -1653,6 +1655,36 @@ it "returns true" do expect(form.can_make_language_live?(language:)).to be true end + + context "when there are changes which have not yet been made live on the English version" do + before do + form.name = "A new form name" + form.save_draft! + + form.share_preview_completed = true + form.save_draft! + end + + it "returns false" do + expect(form.can_make_language_live?(language:)).to be false + end + end + end + + context "when the Welsh task has been completed since the English form was made live" do + let(:form) { create :form, :ready_for_live, :with_welsh_translation, state: "live", welsh_completed: false } + + before do + form.welsh_completed = true + form.save_draft! + + form.share_preview_completed = true + form.save_draft! + end + + it "returns true" do + expect(form.can_make_language_live?(language:)).to be true + end end end diff --git a/spec/requests/forms/make_language_live_controller_spec.rb b/spec/requests/forms/make_language_live_controller_spec.rb index 2698ae39f0..faa05c5ca5 100644 --- a/spec/requests/forms/make_language_live_controller_spec.rb +++ b/spec/requests/forms/make_language_live_controller_spec.rb @@ -24,14 +24,19 @@ get make_language_live_path(form_id: form.id, language:) expect(response).to render_template("make_language_live/new") expect(response).to have_http_status(:ok) + expect(response.body).to include(I18n.t("page_titles.make_language_live.en")) + expect(response.body).to include(I18n.t("make_language_live.en.new.body_html", submission_email: form.submission_email)) end context "when editing a draft of an existing live form" do - let(:form) { create(:form, :live) } + let(:form) { create(:form, :live_with_draft) } - it "redirects to the form task list" do + it "renders make your form live" do get make_language_live_path(form_id: form.id, language:) - expect(response).to redirect_to(form_path(form_id: form.id)) + expect(response).to render_template("make_language_live/new") + expect(response).to have_http_status(:ok) + expect(response.body).to include(I18n.t("page_titles.make_your_changes_to_english_live")) + expect(response.body).to include(I18n.t("make_language_live.en.make_your_changes_to_english_live.body_html", submission_email: form.submission_email)) end end @@ -80,7 +85,7 @@ expect { post(make_language_live_path(form_id: form.id, language:), params: form_params) }.to change { FormDocument.where(language:).count }.by(1) - .and change { form.reload.state }.to("live") + .and change { form.reload.state }.to("live_with_draft") end it "sets the English FormDocument's live_at time to be equal to the form's updated_at time" do @@ -127,7 +132,7 @@ expect { post(make_language_live_path(form_id: form.id, language:), params: form_params) }.to change { FormDocument.where(language:).count }.by(1) - .and change { form.reload.state }.to("live") + .and change { form.reload.state }.to("live_with_draft") end end end diff --git a/spec/services/form_task_list_service_spec.rb b/spec/services/form_task_list_service_spec.rb index d1c7729868..808248a8f9 100644 --- a/spec/services/form_task_list_service_spec.rb +++ b/spec/services/form_task_list_service_spec.rb @@ -472,11 +472,27 @@ it "has the correct default status" do expect(section_rows.second[:status]).to eq :not_started end + + context "when the form has Welsh translations" do + let(:form) { create(:form, :ready_for_live, :with_welsh_translation, welsh_completed: false) } + + it "has a link to make the English form live" do + expect(section_rows.second[:task_name]).to eq I18n.t("forms.task_list_create.make_form_live_section.make_english_form_live") + expect(section_rows.second[:path]).to eq "/forms/#{form.id}/make-live/en" + expect(section_rows.second[:status]).to eq :not_started + end + + it "has the make Welsh live task without a link" do + expect(section_rows.third[:task_name]).to eq I18n.t("forms.task_list_create.make_form_live_section.make_welsh_form_live") + expect(section_rows.third[:path]).to eq "" + expect(section_rows.third[:status]).to eq :cannot_start + end + end end context "when form is live" do before do - allow(form).to receive(:is_live?).and_return(true) + allow(form).to receive_messages(is_live?: true, has_live_version: true) end it "has tasks" do @@ -490,6 +506,74 @@ it "describes the task correctly" do expect(section_rows.second[:task_name]).to eq I18n.t("forms.task_list_edit.make_form_live_section.make_live") end + + context "when the form has a draft with welsh translations" do + before do + allow(form).to receive(:has_welsh_translation?).and_return(true) + end + + context "when the form has English changes that are not yet live" do + before do + allow(form).to receive(:changed_from_live_version?).with(language: "en").and_return(true) + end + + it "has a link to make the English form live" do + expect(section_rows.second[:task_name]).to eq I18n.t("forms.task_list_edit.make_form_live_section.make_english_form_live") + expect(section_rows.second[:path]).to eq "/forms/#{form.id}/make-live/en" + expect(section_rows.second[:status]).to eq :not_started + end + + it "has the make Welsh live task without a link" do + expect(section_rows.third[:task_name]).to eq I18n.t("forms.task_list_create.make_form_live_section.make_welsh_form_live") + expect(section_rows.third[:path]).to eq "" + expect(section_rows.third[:status]).to eq :cannot_start + end + + context "when the Welsh version can be made live" do + before do + allow(form).to receive(:can_make_language_live?).with(language: "en").and_return(true) + allow(form).to receive(:can_make_language_live?).with(language: "cy").and_return(true) + end + + it "has a link to make the Welsh form live" do + expect(section_rows.third[:task_name]).to eq "Make your Welsh form live" + expect(section_rows.third[:path]).to eq "/forms/#{form.id}/make-live/cy" + expect(section_rows.third[:status]).to eq :not_started + end + end + end + + context "when the form has no draft English changes" do + before do + allow(form).to receive(:changed_from_live_version?).with(language: "en").and_return(false) + end + + it "has the make English live task without a link" do + expect(section_rows.second[:task_name]).to eq I18n.t("forms.task_list_create.make_form_live_section.make_english_form_live") + expect(section_rows.second[:path]).to eq "" + expect(section_rows.second[:status]).to eq :completed + end + + it "has the make Welsh live task without a link" do + expect(section_rows.third[:task_name]).to eq I18n.t("forms.task_list_create.make_form_live_section.make_welsh_form_live") + expect(section_rows.third[:path]).to eq "" + expect(section_rows.third[:status]).to eq :cannot_start + end + + context "when the Welsh version can be made live" do + before do + allow(form).to receive(:can_make_language_live?).with(language: "en").and_return(true) + allow(form).to receive(:can_make_language_live?).with(language: "cy").and_return(true) + end + + it "has a link to make the Welsh form live" do + expect(section_rows.third[:task_name]).to eq "Make your Welsh form live" + expect(section_rows.third[:path]).to eq "/forms/#{form.id}/make-live/cy" + expect(section_rows.third[:status]).to eq :not_started + end + end + end + end end context "when the form is archived" do @@ -499,6 +583,26 @@ expect(section_rows.second[:task_name]).to eq "Make your form live" expect(section_rows.second[:path]).to eq "/forms/#{form.id}/make-live" end + + context "when the form has a draft with welsh translations" do + let(:form) { create(:form, :archived_with_draft) } + + before do + allow(form).to receive(:has_welsh_translation?).and_return(true) + end + + it "has a link to make the English form live" do + expect(section_rows.second[:task_name]).to eq I18n.t("forms.task_list_create.make_form_live_section.make_english_form_live") + expect(section_rows.second[:path]).to eq "/forms/#{form.id}/make-live/en" + expect(section_rows.second[:status]).to eq :not_started + end + + it "has the make Welsh live task without a link" do + expect(section_rows.third[:task_name]).to eq I18n.t("forms.task_list_create.make_form_live_section.make_welsh_form_live") + expect(section_rows.third[:path]).to eq "" + expect(section_rows.third[:status]).to eq :cannot_start + end + end end end end diff --git a/spec/services/make_form_live_service_spec.rb b/spec/services/make_form_live_service_spec.rb index 1c3c0f9b0b..a3b2b78609 100644 --- a/spec/services/make_form_live_service_spec.rb +++ b/spec/services/make_form_live_service_spec.rb @@ -64,7 +64,7 @@ it "makes the English form live" do expect { make_form_live_service.make_language_live - }.to change(current_form, :state).to("live") + }.to change(current_form, :state).to("live_with_draft") .and change(FormDocument.where(form: current_form, tag: "live", language: "en"), :count).by(1) .and not_change(FormDocument.where(form: current_form, tag: "live", language: "cy"), :count) end @@ -80,10 +80,10 @@ let(:language) { "cy" } context "when the form has a live English version" do - let(:current_form) { create :form, :ready_for_live, :with_welsh_translation, state: "live" } + let(:current_form) { create :form, :ready_for_live, :with_welsh_translation } before do - create :form_document, :live, form: current_form, language: "en", content: current_form.as_form_document + current_form.make_english_version_live! end it "makes the Welsh form live" do diff --git a/spec/services/task_status_service_spec.rb b/spec/services/task_status_service_spec.rb index 3d2c9d37a7..b3f9154608 100644 --- a/spec/services/task_status_service_spec.rb +++ b/spec/services/task_status_service_spec.rb @@ -9,6 +9,10 @@ let(:current_user) { build(:user, role: :standard) } + before do + form.set_task_status_service(task_status_service) + end + describe "statuses" do describe "name status" do let(:form) { build(:form, :new_form, :with_group, group:) } @@ -391,6 +395,143 @@ end end end + + describe "make_only_english_live_status" do + let(:can_make_english_live) { false } + let(:can_make_welsh_live) { false } + let(:changed_from_live_version) { false } + + let(:form) { build(:form, :with_group, group:) } + + before do + allow(form).to receive(:can_make_language_live?).with(language: "en").and_return(can_make_english_live) + allow(form).to receive(:changed_from_live_version?).with(language: "en").and_return(changed_from_live_version) + allow(form).to receive(:can_make_language_live?).with(language: "cy").and_return(can_make_welsh_live) + end + + context "with a new form" do + let(:form) { build(:form, :new_form, :with_group, group:) } + + it "returns the correct default value" do + expect(task_status_service.all_task_statuses[:make_only_english_live_status]).to eq :cannot_start + end + end + + context "when the English version can be made live" do + let(:can_make_english_live) { true } + + it "returns not started" do + expect(task_status_service.all_task_statuses[:make_only_english_live_status]).to eq :not_started + end + end + + context "when the English version cannot be made live" do + let(:can_make_english_live) { false } + + context "when the form is live" do + let(:form) { build(:form, :live, :with_group, group:) } + + it "returns completed" do + expect(task_status_service.all_task_statuses[:make_only_english_live_status]).to eq :completed + end + end + + context "when the form is live with draft" do + let(:form) { build(:form, :live_with_draft, :with_group, group:) } + + context "when there are changes from the English form document" do + let(:changed_from_live_version) { true } + + it "returns cannot_start" do + expect(task_status_service.all_task_statuses[:make_only_english_live_status]).to eq :cannot_start + end + end + + context "when there are no changes from the English form document" do + let(:changed_from_live_version) { false } + + it "returns completed" do + expect(task_status_service.all_task_statuses[:make_only_english_live_status]).to eq :completed + end + end + end + + context "when the form is a draft" do + let(:form) { build(:form, :ready_for_live, :with_group, group:) } + + it "returns cannot_start" do + expect(task_status_service.all_task_statuses[:make_only_english_live_status]).to eq :cannot_start + end + end + + context "when the form is archived" do + let(:form) { build(:form, :archived, :with_group, group:) } + + it "returns cannot_start" do + expect(task_status_service.all_task_statuses[:make_only_english_live_status]).to eq :cannot_start + end + end + + context "when the form is archived with draft" do + let(:form) { build(:form, :archived_with_draft, :with_group, group:) } + + it "returns cannot_start" do + expect(task_status_service.all_task_statuses[:make_only_english_live_status]).to eq :cannot_start + end + end + end + end + + describe "make_only_welsh_live_status" do + let(:can_make_english_live) { true } + let(:can_make_welsh_live) { false } + + let(:form) { build(:form, :with_group, group:) } + + before do + allow(form).to receive(:can_make_language_live?).with(language: "en").and_return(can_make_english_live) + allow(form).to receive(:can_make_language_live?).with(language: "cy").and_return(can_make_welsh_live) + end + + context "with a new form" do + let(:form) { build(:form, :new_form, :with_group, group:) } + + it "returns the correct default value" do + expect(task_status_service.all_task_statuses[:make_only_welsh_live_status]).to eq :cannot_start + end + end + + context "when the Welsh version can be made live" do + let(:can_make_welsh_live) { true } + + it "returns not started" do + expect(task_status_service.all_task_statuses[:make_only_welsh_live_status]).to eq :not_started + end + end + + context "when the Welsh version cannot be made live" do + let(:can_make_welsh_live) { false } + let(:welsh_form_document) { build(:form_document, :live, form:, language: "cy", content: form.as_form_document) } + + before do + allow(form).to receive(:live_welsh_form_document).and_return(welsh_form_document) + end + + context "when the form already has a live Welsh version" do + it "returns completed" do + expect(task_status_service.all_task_statuses[:make_only_welsh_live_status]).to eq :completed + end + end + + context "when the form does not have a live Welsh version" do + let(:welsh_form_document) { nil } + + it "returns cannot start" do + expect(task_status_service.all_task_statuses[:make_only_welsh_live_status]).to eq :cannot_start + end + end + end + end end describe "#mandatory_tasks_completed" do @@ -537,6 +678,8 @@ share_preview_status: :completed, submission_email_status: :completed, confirm_submission_email_status: :completed, + make_only_english_live_status: :completed, + make_only_welsh_live_status: :cannot_start, } expect(task_status_service.all_task_statuses).to eq expected_hash end diff --git a/spec/state_machines/form_state_machine_spec.rb b/spec/state_machines/form_state_machine_spec.rb index e0f6155bbb..47faa2721c 100644 --- a/spec/state_machines/form_state_machine_spec.rb +++ b/spec/state_machines/form_state_machine_spec.rb @@ -118,7 +118,7 @@ def after_archive; end end it "transitions to live state" do - expect(form).to transition_from(form_state).to(:live).on_event(:make_english_version_live) + expect(form).to transition_from(form_state).to(:live_with_draft).on_event(:make_english_version_live) end it "calls the before_make_english_live callback" do diff --git a/spec/views/forms/make_language_live/new.html.erb_spec.rb b/spec/views/forms/make_language_live/new.html.erb_spec.rb index 23ad8356aa..fde800564d 100644 --- a/spec/views/forms/make_language_live/new.html.erb_spec.rb +++ b/spec/views/forms/make_language_live/new.html.erb_spec.rb @@ -15,22 +15,24 @@ context "when there are no errors" do before do - render template: "forms/make_language_live/new", locals: { current_form:, language: } + render template: "forms/make_language_live/new", locals: { current_form:, language:, page_title:, page_body: } end context "when the language being made live is English" do let(:language) { "en" } + let(:page_title) { t("page_titles.make_language_live.en") } + let(:page_body) { t("make_language_live.en.new.body_html", submission_email: current_form.submission_email) } it "has the correct page title" do - expect(view.content_for(:title)).to eq t("page_titles.make_language_live.en") + expect(view.content_for(:title)).to eq page_title end it "contains a heading" do - expect(rendered).to have_css("h1", text: t("page_titles.make_language_live.en")) + expect(rendered).to have_css("h1", text: page_title) end it "contains the body text" do - expect(rendered).to include(t("make_language_live.en.new.body_html", submission_email: current_form.submission_email)) + expect(rendered).to include page_body end it "renders radio buttons for making the draft changes live" do @@ -46,17 +48,19 @@ context "when the language being made live is Welsh" do let(:language) { "cy" } + let(:page_title) { t("page_titles.make_language_live.cy") } + let(:page_body) { t("make_language_live.cy.new.body_html", submission_email: current_form.submission_email) } it "has the correct page title" do - expect(view.content_for(:title)).to eq t("page_titles.make_language_live.cy") + expect(view.content_for(:title)).to eq page_title end it "contains a heading" do - expect(rendered).to have_css("h1", text: t("page_titles.make_language_live.cy")) + expect(rendered).to have_css("h1", text: page_title) end it "contains the body text" do - expect(rendered).to include(t("make_language_live.cy.new.body_html", submission_email: current_form.submission_email)) + expect(rendered).to include page_body end it "renders radio buttons for making the draft changes live" do @@ -76,11 +80,13 @@ make_language_live_input.errors.add(:confirm, "An error") assign(:make_language_live_input, make_language_live_input) - render template: "forms/make_language_live/new", locals: { current_form:, language: } + render template: "forms/make_language_live/new", locals: { current_form:, language:, page_title:, page_body: } end context "when the language being made live is English" do let(:language) { "en" } + let(:page_title) { t("page_titles.make_language_live.en") } + let(:page_body) { t("make_language_live.en.new.body_html", submission_email: current_form.submission_email) } it "displays the error summary" do expect(rendered).to have_selector(".govuk-error-summary") @@ -91,12 +97,14 @@ end it "sets the page title with error prefix" do - expect(view.content_for(:title)).to eq(title_with_error_prefix(t("page_titles.make_language_live.en"), true)) + expect(view.content_for(:title)).to eq(title_with_error_prefix(page_title, true)) end end context "when the language being made live is Welsh" do let(:language) { "cy" } + let(:page_title) { t("page_titles.make_language_live.cy") } + let(:page_body) { t("make_language_live.cy.new.body_html", submission_email: current_form.submission_email) } it "displays the error summary" do expect(rendered).to have_selector(".govuk-error-summary") @@ -107,7 +115,7 @@ end it "sets the page title with error prefix" do - expect(view.content_for(:title)).to eq(title_with_error_prefix(t("page_titles.make_language_live.cy"), true)) + expect(view.content_for(:title)).to eq(title_with_error_prefix(page_title, true)) end end end