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