diff --git a/src/registrar/tests/test_views.py b/src/registrar/tests/test_views.py index 9ab40ebd9..178474866 100644 --- a/src/registrar/tests/test_views.py +++ b/src/registrar/tests/test_views.py @@ -558,6 +558,7 @@ class FinishUserProfileTests(TestWithUser, WebTest): return page.follow() if follow else page @less_console_noise_decorator + @override_flag("profile_feature", active=True) def test_full_name_initial_value(self): """Test that full_name initial value is empty when first_name or last_name is empty. This will later be displayed as "unknown" using javascript.""" @@ -611,8 +612,8 @@ class FinishUserProfileTests(TestWithUser, WebTest): incomplete_regular_user.delete() @less_console_noise_decorator - def test_new_user_is_directed_to_profile_setup_page(self): - """Tests that a new user is redirected to the profile setup page""" + def test_new_user_with_profile_feature_on(self): + """Tests that a new user is redirected to the profile setup page when profile_feature is on""" username_regular_incomplete = "test_regular_user_incomplete" first_name_2 = "Incomplete" email_2 = "unicorn@igorville.com" @@ -625,39 +626,39 @@ class FinishUserProfileTests(TestWithUser, WebTest): ) self.app.set_user(incomplete_regular_user.username) + with override_flag("profile_feature", active=True): + # This will redirect the user to the setup page. + # Follow implicity checks if our redirect is working. + finish_setup_page = self.app.get(reverse("home")).follow() + self._set_session_cookie() - # This will redirect the user to the setup page. - # Follow implicity checks if our redirect is working. - finish_setup_page = self.app.get(reverse("home")).follow() - self._set_session_cookie() + # Assert that we're on the right page + self.assertContains(finish_setup_page, "Finish setting up your profile") - # Assert that we're on the right page - self.assertContains(finish_setup_page, "Finish setting up your profile") + finish_setup_page = self._submit_form_webtest(finish_setup_page.form) - finish_setup_page = self._submit_form_webtest(finish_setup_page.form) + self.assertEqual(finish_setup_page.status_code, 200) - self.assertEqual(finish_setup_page.status_code, 200) + # We're missing a phone number, so the page should tell us that + self.assertContains(finish_setup_page, "Enter your phone number.") - # We're missing a phone number, so the page should tell us that - self.assertContains(finish_setup_page, "Enter your phone number.") + # Check for the name of the save button + self.assertContains(finish_setup_page, "user_setup_save_button") - # Check for the name of the save button - self.assertContains(finish_setup_page, "user_setup_save_button") + # Add a phone number + finish_setup_form = finish_setup_page.form + finish_setup_form["phone"] = "(201) 555-0123" + finish_setup_form["title"] = "CEO" + finish_setup_form["last_name"] = "example" + save_page = self._submit_form_webtest(finish_setup_form, follow=True) - # Add a phone number - finish_setup_form = finish_setup_page.form - finish_setup_form["phone"] = "(201) 555-0123" - finish_setup_form["title"] = "CEO" - finish_setup_form["last_name"] = "example" - save_page = self._submit_form_webtest(finish_setup_form, follow=True) + self.assertEqual(save_page.status_code, 200) + self.assertContains(save_page, "Your profile has been updated.") - self.assertEqual(save_page.status_code, 200) - self.assertContains(save_page, "Your profile has been updated.") - - # Try to navigate back to the home page. - # This is the same as clicking the back button. - completed_setup_page = self.app.get(reverse("home")) - self.assertContains(completed_setup_page, "Manage your domain") + # Try to navigate back to the home page. + # This is the same as clicking the back button. + completed_setup_page = self.app.get(reverse("home")) + self.assertContains(completed_setup_page, "Manage your domain") incomplete_regular_user.delete() @less_console_noise_decorator @@ -674,43 +675,46 @@ class FinishUserProfileTests(TestWithUser, WebTest): verification_type=User.VerificationTypeChoices.REGULAR, ) self.app.set_user(incomplete_regular_user.username) - finish_setup_page = self.app.get(reverse("home")).follow() - self._set_session_cookie() + with override_flag("profile_feature", active=True): + # This will redirect the user to the setup page. + # Follow implicity checks if our redirect is working. + finish_setup_page = self.app.get(reverse("home")).follow() + self._set_session_cookie() - # Assert that we're on the right page - self.assertContains(finish_setup_page, "Finish setting up your profile") + # Assert that we're on the right page + self.assertContains(finish_setup_page, "Finish setting up your profile") - finish_setup_page = self._submit_form_webtest(finish_setup_page.form) + finish_setup_page = self._submit_form_webtest(finish_setup_page.form) - self.assertEqual(finish_setup_page.status_code, 200) + self.assertEqual(finish_setup_page.status_code, 200) - # We're missing a phone number, so the page should tell us that - self.assertContains(finish_setup_page, "Enter your phone number.") + # We're missing a phone number, so the page should tell us that + self.assertContains(finish_setup_page, "Enter your phone number.") - # Check for the name of the save button - self.assertContains(finish_setup_page, "user_setup_save_button") + # Check for the name of the save button + self.assertContains(finish_setup_page, "user_setup_save_button") - # Add a phone number - finish_setup_form = finish_setup_page.form - finish_setup_form["first_name"] = "test" - finish_setup_form["last_name"] = "test2" - finish_setup_form["phone"] = "(201) 555-0123" - finish_setup_form["title"] = "CEO" - finish_setup_form["last_name"] = "example" - save_page = self._submit_form_webtest(finish_setup_form, follow=True) + # Add a phone number + finish_setup_form = finish_setup_page.form + finish_setup_form["first_name"] = "test" + finish_setup_form["last_name"] = "test2" + finish_setup_form["phone"] = "(201) 555-0123" + finish_setup_form["title"] = "CEO" + finish_setup_form["last_name"] = "example" + save_page = self._submit_form_webtest(finish_setup_form, follow=True) - self.assertEqual(save_page.status_code, 200) - self.assertContains(save_page, "Your profile has been updated.") + self.assertEqual(save_page.status_code, 200) + self.assertContains(save_page, "Your profile has been updated.") - # Try to navigate back to the home page. - # This is the same as clicking the back button. - completed_setup_page = self.app.get(reverse("home")) - self.assertContains(completed_setup_page, "Manage your domain") + # Try to navigate back to the home page. + # This is the same as clicking the back button. + completed_setup_page = self.app.get(reverse("home")) + self.assertContains(completed_setup_page, "Manage your domain") incomplete_regular_user.delete() @less_console_noise_decorator - def test_new_user_goes_to_domain_request(self): - """Tests that a new user is redirected to the domain request page""" + def test_new_user_goes_to_domain_request_with_profile_feature_on(self): + """Tests that a new user is redirected to the domain request page when profile_feature is on""" username_regular_incomplete = "test_regular_user_incomplete" first_name_2 = "Incomplete" email_2 = "unicorn@igorville.com" @@ -722,50 +726,50 @@ class FinishUserProfileTests(TestWithUser, WebTest): verification_type=User.VerificationTypeChoices.REGULAR, ) self.app.set_user(incomplete_regular_user.username) - # This will redirect the user to the setup page - finish_setup_page = self.app.get(reverse("domain-request:")).follow() - self._set_session_cookie() + with override_flag("profile_feature", active=True): + # This will redirect the user to the setup page + finish_setup_page = self.app.get(reverse("domain-request:")).follow() + self._set_session_cookie() - # Assert that we're on the right page - self.assertContains(finish_setup_page, "Finish setting up your profile") + # Assert that we're on the right page + self.assertContains(finish_setup_page, "Finish setting up your profile") - finish_setup_page = self._submit_form_webtest(finish_setup_page.form) + finish_setup_page = self._submit_form_webtest(finish_setup_page.form) - self.assertEqual(finish_setup_page.status_code, 200) + self.assertEqual(finish_setup_page.status_code, 200) - # We're missing a phone number, so the page should tell us that - self.assertContains(finish_setup_page, "Enter your phone number.") + # We're missing a phone number, so the page should tell us that + self.assertContains(finish_setup_page, "Enter your phone number.") - # Check for the name of the save button - self.assertContains(finish_setup_page, "user_setup_save_button") + # Check for the name of the save button + self.assertContains(finish_setup_page, "user_setup_save_button") - # Add a phone number - finish_setup_form = finish_setup_page.form - finish_setup_form["first_name"] = "firstname" - finish_setup_form["phone"] = "(201) 555-0123" - finish_setup_form["title"] = "CEO" - finish_setup_form["last_name"] = "example" - completed_setup_page = self._submit_form_webtest(finish_setup_page.form, follow=True) + # Add a phone number + finish_setup_form = finish_setup_page.form + finish_setup_form["first_name"] = "firstname" + finish_setup_form["phone"] = "(201) 555-0123" + finish_setup_form["title"] = "CEO" + finish_setup_form["last_name"] = "example" + completed_setup_page = self._submit_form_webtest(finish_setup_page.form, follow=True) - self.assertEqual(completed_setup_page.status_code, 200) + self.assertEqual(completed_setup_page.status_code, 200) - finish_setup_form = completed_setup_page.form + finish_setup_form = completed_setup_page.form - # Submit the form using the specific submit button to execute the redirect - completed_setup_page = self._submit_form_webtest( - finish_setup_form, follow=True, name="user_setup_submit_button" - ) - self.assertEqual(completed_setup_page.status_code, 200) + # Submit the form using the specific submit button to execute the redirect + completed_setup_page = self._submit_form_webtest( + finish_setup_form, follow=True, name="user_setup_submit_button" + ) + self.assertEqual(completed_setup_page.status_code, 200) - # Assert that we are still on the - # Assert that we're on the domain request page - self.assertNotContains(completed_setup_page, "Finish setting up your profile") - self.assertNotContains(completed_setup_page, "What contact information should we use to reach you?") + # Assert that we are still on the + # Assert that we're on the domain request page + self.assertNotContains(completed_setup_page, "Finish setting up your profile") + self.assertNotContains(completed_setup_page, "What contact information should we use to reach you?") - self.assertContains(completed_setup_page, "You’re about to start your .gov domain request") + self.assertContains(completed_setup_page, "You’re about to start your .gov domain request") incomplete_regular_user.delete() - class FinishUserProfileForOtherUsersTests(TestWithUser, WebTest): """A series of tests that target the user profile page intercept for incomplete IAL1 user profiles.""" @@ -803,6 +807,83 @@ class FinishUserProfileForOtherUsersTests(TestWithUser, WebTest): self._set_session_cookie() return page.follow() if follow else page + @less_console_noise_decorator + def test_new_user_with_profile_feature_on(self): + """Tests that a new user is redirected to the profile setup page when profile_feature is on, + and testing that the confirmation modal is present""" + username_other_incomplete = "test_other_user_incomplete" + first_name_2 = "Incomplete" + email_2 = "unicorn@igorville.com" + # in the case below, other user is representative of GRANDFATHERED, + # VERIFIED_BY_STAFF, INVITED, FIXTURE_USER, ie. IAL1 + incomplete_other_user = get_user_model().objects.create( + username=username_other_incomplete, + first_name=first_name_2, + email=email_2, + verification_type=User.VerificationTypeChoices.VERIFIED_BY_STAFF, + ) + self.app.set_user(incomplete_other_user.username) + with override_flag("profile_feature", active=True): + # This will redirect the user to the user profile page. + # Follow implicity checks if our redirect is working. + user_profile_page = self.app.get(reverse("home")).follow() + self._set_session_cookie() + + # Assert that we're on the right page by testing for the modal + self.assertContains(user_profile_page, "domain registrants must maintain accurate contact information") + + user_profile_page = self._submit_form_webtest(user_profile_page.form) + + self.assertEqual(user_profile_page.status_code, 200) + + # Assert that modal does not appear on subsequent submits + self.assertNotContains(user_profile_page, "domain registrants must maintain accurate contact information") + # Assert that unique error message appears by testing the message in a specific div + html_content = user_profile_page.content.decode("utf-8") + # Normalize spaces and line breaks in the HTML content + normalized_html_content = " ".join(html_content.split()) + # Expected string without extra spaces and line breaks + expected_string = "Before you can manage your domain, we need you to add contact information." + # Check for the presence of the