diff --git a/app/views/idv/inherited_proofing/_cancel.html.erb b/app/views/idv/inherited_proofing/_cancel.html.erb new file mode 100644 index 00000000000..52947a558bc --- /dev/null +++ b/app/views/idv/inherited_proofing/_cancel.html.erb @@ -0,0 +1,7 @@ +<%# +locals: +* step: Current step, used in analytics logging. +%> +<%= render PageFooterComponent.new do %> + <%= link_to cancel_link_text, idv_inherited_proofing_cancel_path(step: local_assigns[:step]) %> +<% end %> diff --git a/app/views/idv/inherited_proofing/agreement.html.erb b/app/views/idv/inherited_proofing/agreement.html.erb index 2bd7a54bc3d..e74f11a9206 100644 --- a/app/views/idv/inherited_proofing/agreement.html.erb +++ b/app/views/idv/inherited_proofing/agreement.html.erb @@ -38,3 +38,5 @@ ) %> <%= f.submit t('inherited_proofing.buttons.continue'), class: 'margin-top-4' %> <% end %> + +<%= render 'idv/inherited_proofing/cancel', step: 'agreement' %> diff --git a/app/views/idv/inherited_proofing/get_started.html.erb b/app/views/idv/inherited_proofing/get_started.html.erb index 1f690e32bcf..221ea356fff 100644 --- a/app/views/idv/inherited_proofing/get_started.html.erb +++ b/app/views/idv/inherited_proofing/get_started.html.erb @@ -59,4 +59,6 @@ ), ) %>

+ + <%= render 'shared/cancel', link: idv_inherited_proofing_cancel_path(step: 'get_started') %> <% end %> diff --git a/app/views/idv/inherited_proofing/verify_info.html.erb b/app/views/idv/inherited_proofing/verify_info.html.erb index 2c745139b6b..517c81f2153 100644 --- a/app/views/idv/inherited_proofing/verify_info.html.erb +++ b/app/views/idv/inherited_proofing/verify_info.html.erb @@ -7,7 +7,6 @@ <%= f.submit t('inherited_proofing.buttons.continue') %> <% end %> - <%= render( 'shared/troubleshooting_options', heading_tag: :h3, @@ -20,3 +19,5 @@ }, ].select(&:present?), ) %> + +<%= render 'idv/inherited_proofing/cancel', step: 'verify_info' %> diff --git a/app/views/idv/inherited_proofing_cancellations/new.html.erb b/app/views/idv/inherited_proofing_cancellations/new.html.erb index 957673fa5b1..d8803427e38 100644 --- a/app/views/idv/inherited_proofing_cancellations/new.html.erb +++ b/app/views/idv/inherited_proofing_cancellations/new.html.erb @@ -8,7 +8,7 @@

<%= t('inherited_proofing.cancel.description.start_over') %>

- NOTE: Render "Start Over" button here, but first have to create an IP-specific SessionController. + <%# NOTE: Render "Start Over" button here, but first have to create an IP-specific SessionController. %> <%#= render ButtonComponent.new( action: ->(**tag_options, &block) do button_to(idv_session_path(step: @flow_step), **tag_options, &block) diff --git a/spec/features/idv/inherited_proofing/agreement_step_spec.rb b/spec/features/idv/inherited_proofing/agreement_step_spec.rb index abf63f6d5f4..9c8633fd32e 100644 --- a/spec/features/idv/inherited_proofing/agreement_step_spec.rb +++ b/spec/features/idv/inherited_proofing/agreement_step_spec.rb @@ -41,6 +41,13 @@ def expect_inherited_proofing_first_step expect_ip_verify_info_step end + + context 'when clicking on the Cancel link' do + it 'redirects to the Cancellation UI' do + click_link t('links.cancel') + expect(page).to have_current_path(idv_inherited_proofing_cancel_path(step: :agreement)) + end + end end context 'when JS is disabled' do @@ -63,5 +70,12 @@ def expect_inherited_proofing_first_step expect_ip_verify_info_step end + + context 'when clicking on the Cancel link' do + it 'redirects to the Cancellation UI' do + click_link t('links.cancel') + expect(page).to have_current_path(idv_inherited_proofing_cancel_path(step: :agreement)) + end + end end end diff --git a/spec/features/idv/inherited_proofing/get_started_step_spec.rb b/spec/features/idv/inherited_proofing/get_started_step_spec.rb new file mode 100644 index 00000000000..e8ee86e268a --- /dev/null +++ b/spec/features/idv/inherited_proofing/get_started_step_spec.rb @@ -0,0 +1,52 @@ +require 'rails_helper' + +feature 'inherited proofing get started' do + include IdvHelper + include DocAuthHelper + + before do + allow(IdentityConfig.store).to receive(:va_inherited_proofing_mock_enabled).and_return true + allow_any_instance_of(Idv::InheritedProofingController).to \ + receive(:va_inherited_proofing?).and_return true + allow_any_instance_of(Idv::InheritedProofingController).to \ + receive(:va_inherited_proofing_auth_code).and_return auth_code + end + + let(:auth_code) { Idv::InheritedProofing::Va::Mocks::Service::VALID_AUTH_CODE } + + def expect_ip_get_started_step + expect(page).to have_current_path(idv_ip_get_started_step) + end + + def expect_inherited_proofing_get_started_step + expect(page).to have_current_path(idv_ip_get_started_step) + end + + context 'when JS is enabled', :js do + before do + sign_in_and_2fa_user + complete_inherited_proofing_steps_before_get_started_step + end + + context 'when clicking on the Cancel link' do + it 'redirects to the Cancellation UI' do + click_link t('links.cancel') + expect(page).to have_current_path(idv_inherited_proofing_cancel_path(step: :get_started)) + end + end + end + + context 'when JS is disabled' do + before do + sign_in_and_2fa_user + complete_inherited_proofing_steps_before_get_started_step + end + + context 'when clicking on the Cancel link' do + it 'redirects to the Cancellation UI' do + click_link t('links.cancel') + expect(page).to have_current_path(idv_inherited_proofing_cancel_path(step: :get_started)) + end + end + end +end diff --git a/spec/views/idv/inherited_proofing/agreement.html.erb_spec.rb b/spec/views/idv/inherited_proofing/agreement.html.erb_spec.rb index d3a8a0fca59..d8f6ac9c379 100644 --- a/spec/views/idv/inherited_proofing/agreement.html.erb_spec.rb +++ b/spec/views/idv/inherited_proofing/agreement.html.erb_spec.rb @@ -1,14 +1,16 @@ require 'rails_helper' describe 'idv/inherited_proofing/agreement.html.erb' do + include Devise::Test::ControllerHelpers + let(:flow_session) { {} } - let(:sp_name) { nil } - let(:locale) { nil } + let(:sp_name) { 'test' } before do allow(view).to receive(:decorated_session).and_return(@decorated_session) allow(view).to receive(:flow_session).and_return(flow_session) allow(view).to receive(:url_for).and_return('https://www.example.com/') + allow(view).to receive(:user_signing_up?).and_return(true) end it 'renders the Continue button' do @@ -17,6 +19,12 @@ expect(rendered).to have_button(t('inherited_proofing.buttons.continue')) end + it 'renders the Cancel link' do + render template: 'idv/inherited_proofing/agreement' + + expect(rendered).to have_link(t('links.cancel_account_creation')) + end + context 'with or without service provider' do it 'renders content' do render template: 'idv/inherited_proofing/agreement' diff --git a/spec/views/idv/inherited_proofing/get_started.html.erb_spec.rb b/spec/views/idv/inherited_proofing/get_started.html.erb_spec.rb index 5f38a4609fe..d1b9258ba62 100644 --- a/spec/views/idv/inherited_proofing/get_started.html.erb_spec.rb +++ b/spec/views/idv/inherited_proofing/get_started.html.erb_spec.rb @@ -1,9 +1,10 @@ require 'rails_helper' describe 'idv/inherited_proofing/get_started.html.erb' do + include Devise::Test::ControllerHelpers + let(:flow_session) { {} } - let(:sp_name) { nil } - let(:locale) { nil } + let(:sp_name) { 'test' } before do @decorated_session = instance_double(ServiceProviderSessionDecorator) @@ -11,6 +12,8 @@ allow(view).to receive(:decorated_session).and_return(@decorated_session) allow(view).to receive(:flow_session).and_return(flow_session) allow(view).to receive(:url_for).and_return('https://www.example.com/') + allow(view).to receive(:user_fully_authenticated?).and_return(true) + allow(view).to receive(:user_signing_up?).and_return(true) end it 'renders the Continue button' do @@ -19,30 +22,28 @@ expect(rendered).to have_button(t('inherited_proofing.buttons.continue')) end - describe 'I18n' do - before do - view.locale = locale + it 'renders the Cancel link' do + render template: 'idv/inherited_proofing/get_started' + expect(rendered).to have_link(t('links.cancel_account_creation')) + end + + context 'with or without service provider' do + it 'renders troubleshooting options' do render template: 'idv/inherited_proofing/get_started' - end - context 'with or without service provider' do - it 'renders troubleshooting options' do - render template: 'idv/inherited_proofing/get_started' - - expect(rendered).to have_link(t('inherited_proofing.troubleshooting.options.get_va_help')) - expect(rendered).to have_link( - t('inherited_proofing.troubleshooting.options.learn_more_phone_or_mail'), - ) - expect(rendered).not_to have_link(nil, href: idv_inherited_proofing_return_to_sp_path) - expect(rendered).to have_link(t('inherited_proofing.troubleshooting.options.get_va_help')) - expect(rendered).to have_link( - t('inherited_proofing.troubleshooting.options.learn_more_phone_or_mail'), - ) - expect(rendered).to have_link( - t('idv.troubleshooting.options.get_help_at_sp', sp_name: sp_name), - ) - end + expect(rendered).to have_link(t('inherited_proofing.troubleshooting.options.get_va_help')) + expect(rendered).to have_link( + t('inherited_proofing.troubleshooting.options.learn_more_phone_or_mail'), + ) + expect(rendered).not_to have_link(nil, href: idv_inherited_proofing_return_to_sp_path) + expect(rendered).to have_link(t('inherited_proofing.troubleshooting.options.get_va_help')) + expect(rendered).to have_link( + t('inherited_proofing.troubleshooting.options.learn_more_phone_or_mail'), + ) + expect(rendered).to have_link( + t('idv.troubleshooting.options.get_help_at_sp', sp_name: sp_name), + ) end end end