mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-03 08:22:18 +02:00
Unit test skeleton
This commit is contained in:
parent
4e4d0d0f1e
commit
4c4d5d758e
5 changed files with 140 additions and 7 deletions
|
@ -920,9 +920,11 @@ function hideDeletedForms() {
|
|||
|
||||
function showInputOnErrorFields(){
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
let form = document.querySelector('.main-content-finish-profile');
|
||||
let form = document.querySelector("#finish-profile-setup-form");
|
||||
console.log(`form: ${form}`)
|
||||
// Get all input elements within the form
|
||||
let inputs = form ? form.querySelectorAll('input') : null;
|
||||
let inputs = form ? form.querySelectorAll("input") : null;
|
||||
console.log(`look: ${inputs}`)
|
||||
if (!inputs) {
|
||||
return null;
|
||||
}
|
||||
|
@ -931,6 +933,7 @@ function hideDeletedForms() {
|
|||
inputs.forEach(function(input) {
|
||||
let fieldName = input.name;
|
||||
let errorMessage = document.querySelector(`#id_${fieldName}__error-message`);
|
||||
console.log(`fieldName: ${inputs} vs err message ${errorMessage}`)
|
||||
if (!fieldName || !errorMessage) {
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
</h3>
|
||||
<div class="usa-summary-box__text">
|
||||
<ul>
|
||||
<li>Full name: <b>{{ user.contact.full_name }}</b></li>
|
||||
<li>Full name: <b>{{ user.contact.get_formatted_name }}</b></li>
|
||||
<li>Organization email: <b>{{ user.contact.email }}</b></li>
|
||||
<li>Title or role in your organization: <b>{{ user.contact.title }}</b></li>
|
||||
<li>Phone: <b>{{ user.contact.phone }}</b></li>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<div class="grid-container">
|
||||
<div class="grid-row grid-gap">
|
||||
<div class="tablet:grid-col">
|
||||
<main id="main-content-finish-profile" class="grid-container">
|
||||
<main id="main-content" class="grid-container">
|
||||
|
||||
{% comment %}
|
||||
Form success messages.
|
||||
|
@ -56,7 +56,7 @@
|
|||
</p>
|
||||
{# We use a var called 'remove_margin_top' rather than 'add_margin_top' because most fields use this #}
|
||||
{% include "includes/required_fields.html" with remove_margin_top=True %}
|
||||
<form id="step__{{steps.current}}" class="usa-form usa-form--largest" method="post" novalidate>
|
||||
<form id="finish-profile-setup-form" class="usa-form usa-form--largest" method="post" novalidate>
|
||||
{% csrf_token %}
|
||||
<fieldset class="usa-fieldset">
|
||||
<legend class="usa-sr-only">
|
||||
|
|
|
@ -20,6 +20,7 @@ from django.urls import reverse
|
|||
from registrar.models import (
|
||||
DomainRequest,
|
||||
DomainInformation,
|
||||
Website,
|
||||
)
|
||||
from waffle.testutils import override_flag
|
||||
import logging
|
||||
|
@ -55,7 +56,14 @@ class TestWithUser(MockEppLib):
|
|||
last_name = "Last"
|
||||
email = "info@example.com"
|
||||
self.user = get_user_model().objects.create(
|
||||
username=username, first_name=first_name, last_name=last_name, email=email
|
||||
username=username, first_name=first_name, last_name=last_name, email=email, finished_setup=True
|
||||
)
|
||||
|
||||
username_incomplete = "test_user_incomplete"
|
||||
first_name_2 = "Incomplete"
|
||||
email_2 = "unicorn@igorville.com"
|
||||
self.incomplete_user = get_user_model().objects.create(
|
||||
username=username_incomplete, first_name=first_name_2, email=email_2, finished_setup=False
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
|
@ -64,6 +72,7 @@ class TestWithUser(MockEppLib):
|
|||
DomainRequest.objects.all().delete()
|
||||
DomainInformation.objects.all().delete()
|
||||
self.user.delete()
|
||||
self.incomplete_user.delete()
|
||||
|
||||
|
||||
class TestEnvironmentVariablesEffects(TestCase):
|
||||
|
@ -511,6 +520,126 @@ class HomeTests(TestWithUser):
|
|||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
|
||||
class FinishUserProfileTests(TestWithUser, WebTest):
|
||||
"""A series of tests that target the finish setup page for user profile"""
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.user.title = None
|
||||
self.user.finished_setup = False
|
||||
self.user.save()
|
||||
self.client.force_login(self.user)
|
||||
self.domain, _ = Domain.objects.get_or_create(name="sampledomain.gov", state=Domain.State.READY)
|
||||
self.role, _ = UserDomainRole.objects.get_or_create(
|
||||
user=self.user, domain=self.domain, role=UserDomainRole.Roles.MANAGER
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
super().tearDown()
|
||||
PublicContact.objects.filter(domain=self.domain).delete()
|
||||
self.role.delete()
|
||||
self.domain.delete()
|
||||
Domain.objects.all().delete()
|
||||
Website.objects.all().delete()
|
||||
Contact.objects.all().delete()
|
||||
|
||||
def _set_session_cookie(self):
|
||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
|
||||
def _submit_form_webtest(self, form, **kwargs):
|
||||
page = form.submit(**kwargs)
|
||||
self._set_session_cookie()
|
||||
|
||||
return 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"""
|
||||
self.app.set_user(self.incomplete_user.username)
|
||||
with override_flag("profile_feature", active=True):
|
||||
# This will redirect the user to the setup page
|
||||
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")
|
||||
|
||||
finish_setup_page = self._submit_form_webtest(finish_setup_page.form)
|
||||
|
||||
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.")
|
||||
|
||||
# Check for the name of the save button
|
||||
self.assertContains(finish_setup_page, "contact_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"
|
||||
#complete_setup_page = self._submit_form_webtest(finish_setup_form).follow()
|
||||
# Click the "Save" button
|
||||
complete_setup_page = finish_setup_form.submit(name="contact_setup_save_button").follow()
|
||||
self._set_session_cookie()
|
||||
|
||||
self.assertEqual(complete_setup_page.status_code, 200)
|
||||
self.assertContains(complete_setup_page, "Manage your domains")
|
||||
|
||||
@less_console_noise_decorator
|
||||
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"""
|
||||
|
||||
self.app.set_user(self.incomplete_user.username)
|
||||
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")
|
||||
|
||||
finish_setup_page = self._submit_form_webtest(finish_setup_page.form)
|
||||
|
||||
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.")
|
||||
|
||||
# Check for the name of the save button
|
||||
self.assertContains(finish_setup_page, "contact_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"
|
||||
complete_setup_page = self._submit_form_webtest(finish_setup_form).follow()
|
||||
|
||||
self.assertEqual(complete_setup_page.status_code, 200)
|
||||
# Assert that we're on the domain request page
|
||||
self.assertContains(complete_setup_page, "How we’ll reach you")
|
||||
self.assertContains(complete_setup_page, "Your contact information")
|
||||
|
||||
|
||||
@less_console_noise_decorator
|
||||
def test_new_user_with_profile_feature_off(self):
|
||||
"""Tests that a new user is not redirected to the profile setup page when profile_feature is off"""
|
||||
with override_flag("profile_feature", active=False):
|
||||
response = self.client.get("/")
|
||||
self.assertNotContains(response, "Finish setting up your profile")
|
||||
|
||||
@less_console_noise_decorator
|
||||
def test_new_user_goes_to_domain_request_with_profile_feature_off(self):
|
||||
"""Tests that a new user is redirected to the domain request page
|
||||
when profile_feature is off but not the setup page"""
|
||||
with override_flag("profile_feature", active=False):
|
||||
response = self.client.get("/request/")
|
||||
self.assertContains(response, "How we’ll reach you")
|
||||
self.assertContains(response, "Your contact information")
|
||||
|
||||
|
||||
class UserProfileTests(TestWithUser, WebTest):
|
||||
"""A series of tests that target your profile functionality"""
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ class FinishProfileSetupView(UserProfileView):
|
|||
"""
|
||||
|
||||
# Update redirect type based on the query parameter if present
|
||||
redirect_type = request.GET.get("redirect", self.RedirectType.BACK_TO_SELF)
|
||||
redirect_type = request.GET.get("redirect", str(self.RedirectType.BACK_TO_SELF))
|
||||
|
||||
all_redirect_types = [r.value for r in self.RedirectType]
|
||||
if redirect_type in all_redirect_types:
|
||||
|
@ -240,6 +240,7 @@ class FinishProfileSetupView(UserProfileView):
|
|||
# We only allow this session value to use viewnames,
|
||||
# because this restricts what can be redirected to.
|
||||
desired_view = self.session["redirect_viewname"]
|
||||
self.session.pop("redirect_viewname")
|
||||
base_url = reverse(desired_view)
|
||||
else:
|
||||
base_url = reverse("home")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue