Skip to content

Commit

Permalink
Simplify links and update accredited provider spec
Browse files Browse the repository at this point in the history
  • Loading branch information
inulty-dfe committed Dec 18, 2024
1 parent fa8c12c commit 50f56e3
Show file tree
Hide file tree
Showing 7 changed files with 236 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@ def update
@accredited_provider_select_form = AccreditedProviderSelectForm.new(provider_id: accredited_provider_select_params[:provider_id])

if @accredited_provider_select_form.valid?
redirect_to new_support_recruitment_cycle_provider_accredited_partner_path(accredited_provider_id: accredited_provider_select_params[:provider_id])
if Settings.features.provider_partnerships
redirect_to new_support_recruitment_cycle_provider_accredited_partner_path(accredited_provider_id: accredited_provider_select_params[:provider_id])
else
redirect_to new_support_recruitment_cycle_provider_accredited_provider_path(accredited_provider_id: accredited_provider_select_params[:provider_id])
end
else
@accredited_provider_search = ::AccreditedProviders::SearchService.call(query:, recruitment_cycle_year: params[:recruitment_cycle_year])
render :results
Expand Down Expand Up @@ -76,7 +80,11 @@ def search_result_title_component
end

def redirect_to_next_step
redirect_to new_support_recruitment_cycle_provider_accredited_partner_path(accredited_provider_id:)
if Settings.features.provider_partnerships
redirect_to new_support_recruitment_cycle_provider_accredited_partner_path(accredited_provider_id:)
else
redirect_to new_support_recruitment_cycle_provider_accredited_provider_path(accredited_provider_id:)
end
end
end
end
Expand Down
60 changes: 30 additions & 30 deletions app/helpers/goto_confirmation_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,42 +20,42 @@ def back_link_for_onboarding_path(param_form_key:, params:, recruitment_cycle_ye
end

def back_link_for_adding_accredited_partner_path(param_form_key:, params:, recruitment_cycle_year:, provider:)
if goto_confirmation?(param_form_key:, params:)
check_support_recruitment_cycle_provider_accredited_partners_path(recruitment_cycle_year, provider)
elsif param_form_key == :support_accredited_provider_form
search_support_recruitment_cycle_provider_accredited_partners_path
else
support_recruitment_cycle_provider_accredited_partners_path(recruitment_cycle_year, provider)
end
end

def back_link_for_adding_accrediting_provider_path(param_form_key:, params:, recruitment_cycle_year:, provider:)
if goto_confirmation?(param_form_key:, params:)
check_support_recruitment_cycle_provider_accredited_providers_path(recruitment_cycle_year, provider)
elsif param_form_key == :support_accredited_provider_form
search_support_recruitment_cycle_provider_accredited_providers_path
if Settings.features.provider_partnerships
if goto_confirmation?(param_form_key:, params:)
check_support_recruitment_cycle_provider_accredited_partners_path(recruitment_cycle_year, provider)
elsif param_form_key == :support_accredited_provider_form
search_support_recruitment_cycle_provider_accredited_partners_path
else
support_recruitment_cycle_provider_accredited_partners_path(recruitment_cycle_year, provider)
end
else
support_recruitment_cycle_provider_accredited_providers_path(recruitment_cycle_year, provider)
end
end

def publish_back_link_for_adding_accrediting_provider_path(param_form_key:, params:, recruitment_cycle_year:, provider:)
if goto_confirmation?(param_form_key:, params:)
check_publish_provider_recruitment_cycle_accredited_providers_path(provider.provider_code, recruitment_cycle_year)
elsif param_form_key == :publish_accredited_provider_form
search_publish_provider_recruitment_cycle_accredited_providers_path(provider.provider_code, recruitment_cycle_year)
else
publish_provider_recruitment_cycle_accredited_providers_path(provider.provider_code, recruitment_cycle_year)
if goto_confirmation?(param_form_key:, params:)
check_support_recruitment_cycle_provider_accredited_providers_path(recruitment_cycle_year, provider)
elsif param_form_key == :support_accredited_provider_form
search_support_recruitment_cycle_provider_accredited_providers_path
else
support_recruitment_cycle_provider_accredited_providers_path(recruitment_cycle_year, provider)
end
end
end

def publish_back_link_for_adding_provider_partnership_path(param_form_key:, params:, recruitment_cycle_year:, provider:)
if goto_confirmation?(param_form_key:, params:)
check_publish_provider_recruitment_cycle_provider_partnerships_path(provider.provider_code, recruitment_cycle_year)
elsif param_form_key == :publish_accredited_provider_form
search_publish_provider_recruitment_cycle_provider_partnerships_path(provider.provider_code, recruitment_cycle_year)
if Settings.features.provider_partnerships
if goto_confirmation?(param_form_key:, params:)
check_publish_provider_recruitment_cycle_provider_partnerships_path(provider.provider_code, recruitment_cycle_year)
elsif param_form_key == :publish_accredited_provider_form
search_publish_provider_recruitment_cycle_provider_partnerships_path(provider.provider_code, recruitment_cycle_year)
else
publish_provider_recruitment_cycle_provider_partnerships_path(provider.provider_code, recruitment_cycle_year)
end
else
publish_provider_recruitment_cycle_provider_partnerships_path(provider.provider_code, recruitment_cycle_year)
if goto_confirmation?(param_form_key:, params:)
check_publish_provider_recruitment_cycle_accredited_providers_path(provider.provider_code, recruitment_cycle_year)
elsif param_form_key == :publish_accredited_provider_form
search_publish_provider_recruitment_cycle_accredited_providers_path(provider.provider_code, recruitment_cycle_year)
else
publish_provider_recruitment_cycle_accredited_providers_path(provider.provider_code, recruitment_cycle_year)
end
end
end
end
6 changes: 1 addition & 5 deletions app/helpers/publish/back_link_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,7 @@ def study_mode_path(course)
end

def accredited_provider_search_path(param_form_key:, params:, provider:, recruitment_cycle_year:)
if Settings.features.provider_partnerships
publish_back_link_for_adding_provider_partnership_path(param_form_key:, params:, recruitment_cycle_year:, provider:)
else
publish_back_link_for_adding_accrediting_provider_path(param_form_key:, params:, recruitment_cycle_year:, provider:)
end
publish_back_link_for_adding_provider_partnership_path(param_form_key:, params:, recruitment_cycle_year:, provider:)
end

private
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<div class="govuk-grid-column-two-thirds">

<% content_for :before_content do %>
<%= govuk_back_link_to(publish_back_link_for_adding_accrediting_provider_path(param_form_key: f.object_name.to_sym, params:, recruitment_cycle_year: @recruitment_cycle.year, provider: @provider)) %>
<%= govuk_back_link_to(publish_back_link_for_adding_accredited_partner_path(param_form_key: f.object_name.to_sym, params:, recruitment_cycle_year: @recruitment_cycle.year, provider: @provider)) %>
<% end %>

<%= f.govuk_text_area(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<%= content_for(:breadcrumbs) do %>
<%= render GovukComponent::BackLinkComponent.new(
text: "Back",
href: back_link_for_adding_accrediting_provider_path(param_form_key: f.object_name.to_sym, params:, recruitment_cycle_year: @recruitment_cycle.year, provider: @provider)
href: back_link_for_adding_accredited_partner_path(param_form_key: f.object_name.to_sym, params:, recruitment_cycle_year: @recruitment_cycle.year, provider: @provider)
) %>
<% end %>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

require 'rails_helper'

feature 'Searching for an accredited provider' do
feature 'Searching for an accredited provider enrichments' do
before do
allow(Settings.features).to receive(:provider_partnerships).and_return(false)
given_i_am_authenticated_as_an_admin_user
and_there_are_accredited_providers_in_the_database
end
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
# frozen_string_literal: true

require 'rails_helper'

feature 'Searching for an accredited provider' do
before do
allow(Settings.features).to receive(:provider_partnerships).and_return(true)
given_i_am_authenticated_as_an_admin_user
and_there_are_accredited_providers_in_the_database
end

scenario 'i can search for an accredited provider by query' do
when_i_visit_the_accredited_provider_search_page
and_i_search_with_an_invalid_query
then_i_should_see_an_error_message

when_i_search_for_an_accredited_provider_with_a_valid_query
then_i_see_the_provider_i_searched_for

when_i_continue_without_selecting_an_accredited_provider
then_i_should_see_an_error_message('Select an accredited provider')
and_i_should_still_see_the_provider_i_searched_for

when_i_select_the_provider
and_i_continue_without_entering_a_description
then_i_should_see_an_error_message('Enter details about the accredited partnership')

when_i_enter_a_description
and_i_confirm_the_changes
then_i_should_be_taken_to_the_index_page
and_i_should_see_a_success_message
and_i_should_see_the_accredited_providers
end

scenario 'back links behaviour' do
when_i_am_on_the_confirm_page
and_i_click_the_change_link_for('accredited partner name')
then_i_should_be_taken_to_the_accredited_provider_search_page
when_i_click_the_back_link
then_i_should_be_taken_back_to_the_confirm_page

when_i_am_on_the_confirm_page
and_i_click_the_change_link_for('accredited partner description')
then_i_should_be_taken_to_the_accredited_provider_description_page
when_i_click_the_back_link
then_i_should_be_taken_back_to_the_confirm_page
end

private

def given_i_am_authenticated_as_an_admin_user
given_i_am_authenticated(user: create(:user, :admin))
end

def and_there_are_accredited_providers_in_the_database
@accredited_provider = create(:provider, :accredited_provider, provider_name: 'UCL', users: [create(:user)])
@accredited_provider_two = create(:provider, :accredited_provider, provider_name: 'Accredited provider two')
@accredited_provider_three = create(:provider, :accredited_provider, provider_name: 'Accredited provider three')
end

def when_i_visit_the_accredited_provider_search_page
visit search_support_recruitment_cycle_provider_accredited_providers_path(
recruitment_cycle_year: Settings.current_recruitment_cycle_year,
provider_id: provider.id
)
end

def when_i_search_for_an_accredited_provider_with_a_valid_query
fill_in form_title, with: @accredited_provider.provider_name
click_continue
end

def then_i_see_the_provider_i_searched_for
expect(page).to have_content(@accredited_provider.provider_name)
expect(page).to have_no_content(@accredited_provider_two.provider_name)
expect(page).to have_no_content(@accredited_provider_three.provider_name)
end

def when_i_select_the_provider
choose @accredited_provider.provider_name
click_continue
end

def then_i_should_be_taken_to_the_index_page
expect(page).to have_current_path(
support_recruitment_cycle_provider_accredited_partners_path(
recruitment_cycle_year: Settings.current_recruitment_cycle_year,
provider_id: provider.id
)
)
end

def and_i_search_with_an_invalid_query
fill_in form_title, with: ''
click_continue
end

def then_i_should_see_an_error_message(error_message = form_title)
expect(page).to have_content(error_message)
end

def when_i_continue_without_selecting_an_accredited_provider
click_continue
end

def and_i_should_still_see_the_provider_i_searched_for
expect(page).to have_content(@accredited_provider.provider_name)
expect(page).to have_no_content(@accredited_provider_two.provider_name)
expect(page).to have_no_content(@accredited_provider_three.provider_name)
end

def when_i_enter_a_description
fill_in 'About the accredited partner', with: 'This is a description'
click_continue
end

def and_i_confirm_the_changes
expect do
click_link_or_button 'Add accredited partner'
end.to have_enqueued_email(Users::OrganisationMailer, :added_as_an_organisation_to_training_partner)
end

def and_i_should_see_a_success_message
expect(page).to have_content('Accredited partner added')
end

def and_i_should_see_the_accredited_providers
expect(page).to have_css('.govuk-summary-card', count: 1)
expect(page).to have_content(@accredited_provider.provider_name)
end

def click_continue
click_link_or_button 'Continue'
end

def when_i_am_on_the_confirm_page
when_i_visit_the_accredited_provider_search_page
when_i_search_for_an_accredited_provider_with_a_valid_query
when_i_select_the_provider
when_i_enter_a_description
end

def and_i_click_the_change_link_for(field)
within '.govuk-summary-list' do
click_link_or_button "Change #{field}"
end
end

def then_i_should_be_taken_to_the_accredited_provider_search_page
expect(page).to have_current_path(
search_support_recruitment_cycle_provider_accredited_providers_path(
recruitment_cycle_year: Settings.current_recruitment_cycle_year,
provider_id: provider.id,
goto_confirmation: true
)
)
end

def then_i_should_be_taken_to_the_accredited_provider_description_page
expect(page).to have_current_path(
new_support_recruitment_cycle_provider_accredited_partner_path(
recruitment_cycle_year: Settings.current_recruitment_cycle_year,
provider_id: provider.id,
goto_confirmation: true
)
)
end

def when_i_click_the_back_link
click_link_or_button 'Back'
end

def then_i_should_be_taken_back_to_the_confirm_page
expect(page).to have_current_path(
check_support_recruitment_cycle_provider_accredited_partners_path(
recruitment_cycle_year: Settings.current_recruitment_cycle_year,
provider_id: provider.id
)
)
end

def provider
@provider ||= create(:provider)
end

def form_title
'Enter a provider name, UKPRN or postcode'
end

alias_method :and_i_continue_without_entering_a_description, :click_continue
end

0 comments on commit 50f56e3

Please sign in to comment.