Update from views to models to testing in backend

This commit is contained in:
Rebecca Hsieh 2024-05-22 13:36:20 -07:00
parent 0effa81988
commit 27906bc310
No known key found for this signature in database
4 changed files with 660 additions and 325 deletions

View file

@ -938,3 +938,107 @@ class DomainRequest(TimeStampedModel):
for field in opts.many_to_many:
data[field.name] = field.value_from_object(self)
return data
def _is_federal_complete(self):
# Federal -> "Federal government branch" page can't be empty + Federal Agency selection can't be None
return not (self.federal_type is None or self.federal_agency is None)
def _is_interstate_complete(self):
# Interstate -> "About your organization" page can't be empty
return self.about_your_organization is not None
def _is_state_or_territory_complete(self):
# State -> ""Election office" page can't be empty
return self.is_election_board is not None
def _is_tribal_complete(self):
# Tribal -> "Tribal name" and "Election office" page can't be empty
return self.tribe_name is not None and self.is_election_board is not None
def _is_county_complete(self):
# County -> "Election office" page can't be empty
return self.is_election_board is not None
def _is_city_complete(self):
# City -> "Election office" page can't be empty
return self.is_election_board is not None
def _is_special_district_complete(self):
# Special District -> "Election office" and "About your organization" page can't be empty
return (
self.is_election_board is not None
and self.about_your_organization is not None
)
def _is_organization_name_and_address_complete(self):
return not (
self.organization_name is None
or self.address_line1 is None
or self.city is None
or self.state_territory is None
or self.zipcode is None
)
def _is_authorizing_official_complete(self):
return self.authorizing_official is not None
def _is_requested_domain_complete(self):
return self.requested_domain is not None
def _is_purpose_complete(self):
return self.purpose is not None
def _is_submitter_complete(self):
return self.submitter is not None
def _is_other_contacts_complete(self):
return self.other_contacts is not None
def _is_additional_details_complete(self):
return not (
self.has_cisa_representative is None
or self.has_anything_else_text is None
# RARE EDGE CASE: You click yes on having a cisa rep, but you dont type in email (should block in form)
or (
self.has_cisa_representative is True
and self.cisa_representative_email is None
)
or self.is_policy_acknowledged is None
)
def _is_general_form_complete(self):
return (
self._is_organization_name_and_address_complete()
and self._is_authorizing_official_complete()
and self._is_requested_domain_complete()
and self._is_purpose_complete()
and self._is_submitter_complete()
and self._is_other_contacts_complete()
and self._is_additional_details_complete()
)
def _form_complete(self):
if self.generic_org_type == DomainRequest.OrganizationChoices.FEDERAL:
is_complete = self._is_federal_complete()
elif self.generic_org_type == DomainRequest.OrganizationChoices.INTERSTATE:
is_complete = self._is_interstate_complete()
elif self.generic_org_type == DomainRequest.OrganizationChoices.STATE_OR_TERRITORY:
is_complete = self._is_state_or_territory_complete()
elif self.generic_org_type == DomainRequest.OrganizationChoices.TRIBAL:
is_complete = self._is_tribal_complete()
elif self.generic_org_type == DomainRequest.OrganizationChoices.COUNTY:
is_complete = self._is_county_complete()
elif self.generic_org_type == DomainRequest.OrganizationChoices.CITY:
is_complete = self._is_city_complete()
elif self.generic_org_type == DomainRequest.OrganizationChoices.SPECIAL_DISTRICT:
is_complete = self._is_special_district_complete()
else:
# NOTE: This shouldn't happen, this is only if somehow they didn't choose an org type
is_complete = False
if not is_complete or not self._is_general_form_complete():
print("!!!! We are in the False if statement - form is not complete")
return False
print("!!!! We are in the True if statement - form is complete")
return True

View file

@ -1,6 +1,7 @@
from django.test import TestCase
from django.db.utils import IntegrityError
from unittest.mock import patch
from django.contrib.auth import get_user_model
from registrar.models import (
Contact,
@ -1602,3 +1603,197 @@ class TestDomainInformationCustomSave(TestCase):
)
self.assertEqual(domain_information_election.is_election_board, True)
self.assertEqual(domain_information_election.generic_org_type, DomainRequest.OrganizationChoices.CITY)
class TestDomainRequestIncomplete(TestCase):
def setUp(self):
super().setUp()
username = "test_user"
first_name = "First"
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
)
ao, _ = Contact.objects.get_or_create(
first_name="Meowy",
last_name="Meoward",
title="Chief Cat",
email="meoward@chiefcat.com",
phone="(206) 206 2060",
)
draft_domain, _ = DraftDomain.objects.get_or_create(name="MeowardMeowardMeoward.gov")
you, _ = Contact.objects.get_or_create(
first_name="Testy you",
last_name="Tester you",
title="Admin Tester",
email="testy-admin@town.com",
phone="(555) 555 5556",
)
other, _ = Contact.objects.get_or_create(
first_name="Testy2",
last_name="Tester2",
title="Another Tester",
email="testy2@town.com",
phone="(555) 555 5557",
)
# domain, _ = Domain.objects.get_or_create(name="MeowardMeowardMeoward.gov")
alt, _ = Website.objects.get_or_create(website="MeowardMeowardMeoward1.gov")
current, _ = Website.objects.get_or_create(website="MeowardMeowardMeoward.com")
self.domain_request = DomainRequest.objects.create(
generic_org_type=DomainRequest.OrganizationChoices.FEDERAL,
federal_type="executive",
federal_agency=FederalAgency.objects.get(agency="AMTRAK"),
about_your_organization="Some description",
is_election_board=True,
tribe_name="Some tribe name",
organization_name="Some organization",
address_line1="address 1",
state_territory="CA",
zipcode="94044",
authorizing_official=ao,
requested_domain=draft_domain,
purpose="Some purpose",
submitter=you,
has_cisa_representative=False,
has_anything_else_text="Some text",
is_policy_acknowledged=True,
creator=self.user,
)
self.domain_request.other_contacts.add(other)
self.domain_request.current_websites.add(current)
self.domain_request.alternative_domains.add(alt)
def test_is_federal_complete(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.FEDERAL
self.assertTrue(self.domain_request._is_federal_complete())
self.domain_request.federal_type = None
self.assertFalse(self.domain_request._is_federal_complete())
def test_is_interstate_complete(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.INTERSTATE
self.assertTrue(self.domain_request._is_interstate_complete())
self.domain_request.about_your_organization = None
self.assertFalse(self.domain_request._is_interstate_complete())
def test_is_state_or_territory_complete(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.STATE_OR_TERRITORY
self.assertTrue(self.domain_request._is_state_or_territory_complete())
self.domain_request.is_election_board = None
self.assertFalse(self.domain_request._is_state_or_territory_complete())
def test_is_tribal_complete(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.TRIBAL
self.assertTrue(self.domain_request._is_tribal_complete())
self.domain_request.tribe_name = None
self.assertFalse(self.domain_request._is_tribal_complete())
def test_is_county_complete(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.COUNTY
self.assertTrue(self.domain_request._is_county_complete())
self.domain_request.is_election_board = None
self.assertFalse(self.domain_request._is_county_complete())
def test_is_city_complete(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.CITY
self.assertTrue(self.domain_request._is_city_complete())
self.domain_request.is_election_board = None
self.assertFalse(self.domain_request._is_city_complete())
def test_is_special_district_complete(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.SPECIAL_DISTRICT
self.assertTrue(self.domain_request._is_special_district_complete())
self.domain_request.about_your_organization = None
self.assertFalse(self.domain_request._is_special_district_complete())
def test_is_organization_name_and_address_complete(self):
self.assertTrue(self.domain_request._is_organization_name_and_address_complete())
self.domain_request.organization_name = None
self.assertFalse(self.domain_request._is_organization_name_and_address_complete())
def test_is_authorizing_official_complete(self):
self.assertTrue(self.domain_request._is_authorizing_official_complete())
self.domain_request.authorizing_official = None
self.assertFalse(self.domain_request._is_authorizing_official_complete())
def test_is_requested_domain_complete(self):
self.assertTrue(self.domain_request._is_requested_domain_complete())
self.domain_request.requested_domain = None
self.assertFalse(self.domain_request._is_requested_domain_complete())
def test_is_purpose_complete(self):
self.assertTrue(self.domain_request._is_purpose_complete())
self.domain_request.purpose = None
self.assertFalse(self.domain_request._is_purpose_complete())
def test_is_submitter_complete(self):
self.assertTrue(self.domain_request._is_submitter_complete())
self.domain_request.submitter = None
self.assertFalse(self.domain_request._is_submitter_complete())
def test_is_other_contacts_complete(self):
self.assertTrue(self.domain_request._is_other_contacts_complete())
none_other_contacts, _ = Contact.objects.get_or_create(
first_name=None,
last_name=None,
title=None,
email=None,
phone=None,
)
self.domain_request.other_contacts.add(none_other_contacts)
self.assertFalse(self.domain_request._is_other_contacts_complete())
def test_is_additional_details_complete(self):
self.assertTrue(self.domain_request._is_additional_details_complete())
self.domain_request.has_cisa_representative = None
self.assertFalse(self.domain_request._is_additional_details_complete())
self.domain_request.has_cisa_representative = True
self.domain_request.cisa_representative_email = None
self.assertFalse(self.domain_request._is_additional_details_complete())
def test_is_general_form_complete(self):
self.assertTrue(self.domain_request._is_general_form_complete())
self.domain_request.organization_name = None
self.assertFalse(self.domain_request._is_general_form_complete())
def test_form_complete_for_federal(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.FEDERAL
self.assertTrue(self.domain_request._form_complete())
self.domain_request.federal_type = None
self.assertFalse(self.domain_request._form_complete())
def test_form_complete_for_interstate(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.INTERSTATE
self.assertTrue(self.domain_request._form_complete())
self.domain_request.about_your_organization = None
self.assertFalse(self.domain_request._form_complete())
def test_form_complete_for_state_or_territory(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.STATE_OR_TERRITORY
self.assertTrue(self.domain_request._form_complete())
self.domain_request.is_election_board = None
self.assertFalse(self.domain_request._form_complete())
def test_form_complete_for_tribal(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.TRIBAL
self.assertTrue(self.domain_request._form_complete())
self.domain_request.tribe_name = None
self.assertFalse(self.domain_request._form_complete())
def test_form_complete_for_county(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.COUNTY
self.assertTrue(self.domain_request._form_complete())
self.domain_request.is_election_board = None
self.assertFalse(self.domain_request._form_complete())
def test_form_complete_for_city(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.CITY
self.assertTrue(self.domain_request._form_complete())
self.domain_request.is_election_board = None
self.assertFalse(self.domain_request._form_complete())
def test_form_complete_for_special_district(self):
self.domain_request.generic_org_type = DomainRequest.OrganizationChoices.SPECIAL_DISTRICT
self.assertTrue(self.domain_request._form_complete())
self.domain_request.about_your_organization = None
self.assertFalse(self.domain_request._form_complete())

View file

@ -511,271 +511,306 @@ class DomainRequestTests(TestWithUser, WebTest):
type_result = type_form.submit()
# should see results in db
domain_request = DomainRequest.objects.get() # there's only one
session = self.client.session
print("$$$$$$$$$$$$$$$$$$$ 514!!!!!!", session.values())
self.assertEqual(domain_request.generic_org_type, "tribal")
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(type_result.status_code, 302)
self.assertEqual(type_result["Location"], "/request/tribal_government/")
num_pages_tested += 1
# num_pages_tested += 1
# -- TRIBAL PAGE --
# We want to skip the tribal page right?? but how do we not fill it out.............
type_form = type_page.forms[0]
type_form["generic_org_type-generic_org_type"] = DomainRequest.OrganizationChoices.TRIBAL
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
type_result = type_form.submit()
# the tribal government page comes immediately afterwards
self.assertIn("/tribal_government", type_result.headers["Location"])
# follow first redirect
# session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]"
url = reverse("domain-request:review")
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
tribal_government_page = type_result.follow()
session = self.client.session
# print("$$$$$$$$$$$$$$$$$$$ BEFORE", session.request)
print("$$$$$$$$$$$$$$$$$$$ BEFORE", session.values())
# and the step is on the sidebar list.
self.assertContains(tribal_government_page, self.TITLES[Step.TRIBAL_GOVERNMENT])
# ---- ORG CONTACT PAGE ----
# Follow the redirect to the next form page
review_page = self.client.get(url, follow=True)
session = self.client.session
# print("$$$$$$$$$$$$$$$$$$$ AFTER", session.request)
print("$$$$$$$$$$$$$$$$$$$ AFTER", session.values())
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
org_contact_page = type_result.follow()
org_contact_form = org_contact_page.forms[0]
# federal agency so we have to fill in federal_agency
# federal_agency, _ = FederalAgency.objects.get_or_create(agency="General Services Administration")
# org_contact_form["organization_contact-federal_agency"] = federal_agency.id
org_contact_form["organization_contact-organization_name"] = "Testorg"
org_contact_form["organization_contact-address_line1"] = "address 1"
org_contact_form["organization_contact-address_line2"] = "address 2"
org_contact_form["organization_contact-city"] = "NYC"
org_contact_form["organization_contact-state_territory"] = "NY"
org_contact_form["organization_contact-zipcode"] = "10002"
org_contact_form["organization_contact-urbanization"] = "URB Royal Oaks"
# Org type is filled in
self.assertContains(review_page, "Tribal")
self.assertContains(review_page, "Incomplete", count=9)
# test next button
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
org_contact_result = org_contact_form.submit()
# validate that data from this step are being saved
domain_request = DomainRequest.objects.get() # there's only one
self.assertEqual(domain_request.organization_name, "Testorg")
self.assertEqual(domain_request.address_line1, "address 1")
self.assertEqual(domain_request.address_line2, "address 2")
self.assertEqual(domain_request.city, "NYC")
self.assertEqual(domain_request.state_territory, "NY")
self.assertEqual(domain_request.zipcode, "10002")
self.assertEqual(domain_request.urbanization, "URB Royal Oaks")
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(org_contact_result.status_code, 302)
self.assertEqual(org_contact_result["Location"], "/request/authorizing_official/")
num_pages_tested += 1
# In theory we just need to check that tribal is incomplete
# I don't need to re-look at any of these underneath
# self.assertContains(review_page, "Executive")
# self.assertContains(review_page, "You cant submit this request")
# ---- AUTHORIZING OFFICIAL PAGE ----
# Follow the redirect to the next form page
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
ao_page = org_contact_result.follow()
ao_form = ao_page.forms[0]
ao_form["authorizing_official-first_name"] = "Testy ATO"
ao_form["authorizing_official-last_name"] = "Tester ATO"
ao_form["authorizing_official-title"] = "Chief Tester"
ao_form["authorizing_official-email"] = "testy@town.com"
# # final submission results in a redirect to the "finished" URL
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# with less_console_noise():
# review_result = review_form.submit()
# print("!!!!!!!!!!!!!!!!!!! review_result", review_result)
# test next button
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
ao_result = ao_form.submit()
# validate that data from this step are being saved
domain_request = DomainRequest.objects.get() # there's only one
self.assertEqual(domain_request.authorizing_official.first_name, "Testy ATO")
self.assertEqual(domain_request.authorizing_official.last_name, "Tester ATO")
self.assertEqual(domain_request.authorizing_official.title, "Chief Tester")
self.assertEqual(domain_request.authorizing_official.email, "testy@town.com")
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(ao_result.status_code, 302)
self.assertEqual(ao_result["Location"], "/request/current_sites/")
num_pages_tested += 1
# print("!!!!!!!!!!!!!!!!!!! review_result.status_code", review_result.status_code)
# print("!!!!!!!!!!!!!!!!!!! review_results location", review_result["Location"])
# ---- CURRENT SITES PAGE ----
# Follow the redirect to the next form page
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
current_sites_page = ao_result.follow()
current_sites_form = current_sites_page.forms[0]
current_sites_form["current_sites-0-website"] = "www.city.com"
# self.assertEqual(review_result.status_code, 302)
# self.assertEqual(review_result["Location"], "/request/finished/")
# test next button
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
current_sites_result = current_sites_form.submit()
# validate that data from this step are being saved
domain_request = DomainRequest.objects.get() # there's only one
self.assertEqual(
domain_request.current_websites.filter(website="http://www.city.com").count(),
1,
)
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(current_sites_result.status_code, 302)
self.assertEqual(current_sites_result["Location"], "/request/dotgov_domain/")
num_pages_tested += 1
# type_result = type_form.submit()
# # the tribal government page comes immediately afterwards
# self.assertIn("/tribal_government", type_result.headers["Location"])
# # follow first redirect
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# tribal_government_page = type_result.follow()
# ---- DOTGOV DOMAIN PAGE ----
# Follow the redirect to the next form page
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
dotgov_page = current_sites_result.follow()
dotgov_form = dotgov_page.forms[0]
dotgov_form["dotgov_domain-requested_domain"] = "city"
dotgov_form["dotgov_domain-0-alternative_domain"] = "city1"
# # and the step is on the sidebar list.
# self.assertContains(tribal_government_page, self.TITLES[Step.TRIBAL_GOVERNMENT])
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
dotgov_result = dotgov_form.submit()
# validate that data from this step are being saved
domain_request = DomainRequest.objects.get() # there's only one
self.assertEqual(domain_request.requested_domain.name, "city.gov")
self.assertEqual(domain_request.alternative_domains.filter(website="city1.gov").count(), 1)
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(dotgov_result.status_code, 302)
self.assertEqual(dotgov_result["Location"], "/request/purpose/")
num_pages_tested += 1
# ---- PURPOSE PAGE ----
# Follow the redirect to the next form page
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
purpose_page = dotgov_result.follow()
purpose_form = purpose_page.forms[0]
purpose_form["purpose-purpose"] = "For all kinds of things."
# # ---- ORG CONTACT PAGE ----
# # Follow the redirect to the next form page
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# org_contact_page = type_result.follow()
# org_contact_form = org_contact_page.forms[0]
# # federal agency so we have to fill in federal_agency
# # federal_agency, _ = FederalAgency.objects.get_or_create(agency="General Services Administration")
# # org_contact_form["organization_contact-federal_agency"] = federal_agency.id
# org_contact_form["organization_contact-organization_name"] = "Testorg"
# org_contact_form["organization_contact-address_line1"] = "address 1"
# org_contact_form["organization_contact-address_line2"] = "address 2"
# org_contact_form["organization_contact-city"] = "NYC"
# org_contact_form["organization_contact-state_territory"] = "NY"
# org_contact_form["organization_contact-zipcode"] = "10002"
# org_contact_form["organization_contact-urbanization"] = "URB Royal Oaks"
# test next button
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
purpose_result = purpose_form.submit()
# validate that data from this step are being saved
domain_request = DomainRequest.objects.get() # there's only one
self.assertEqual(domain_request.purpose, "For all kinds of things.")
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(purpose_result.status_code, 302)
self.assertEqual(purpose_result["Location"], "/request/your_contact/")
num_pages_tested += 1
# # test next button
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# org_contact_result = org_contact_form.submit()
# # validate that data from this step are being saved
# domain_request = DomainRequest.objects.get() # there's only one
# self.assertEqual(domain_request.organization_name, "Testorg")
# self.assertEqual(domain_request.address_line1, "address 1")
# self.assertEqual(domain_request.address_line2, "address 2")
# self.assertEqual(domain_request.city, "NYC")
# self.assertEqual(domain_request.state_territory, "NY")
# self.assertEqual(domain_request.zipcode, "10002")
# self.assertEqual(domain_request.urbanization, "URB Royal Oaks")
# # the post request should return a redirect to the next form in
# # the domain request page
# self.assertEqual(org_contact_result.status_code, 302)
# self.assertEqual(org_contact_result["Location"], "/request/authorizing_official/")
# num_pages_tested += 1
# ---- YOUR CONTACT INFO PAGE ----
# Follow the redirect to the next form page
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
your_contact_page = purpose_result.follow()
your_contact_form = your_contact_page.forms[0]
# # ---- AUTHORIZING OFFICIAL PAGE ----
# # Follow the redirect to the next form page
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# ao_page = org_contact_result.follow()
# ao_form = ao_page.forms[0]
# ao_form["authorizing_official-first_name"] = "Testy ATO"
# ao_form["authorizing_official-last_name"] = "Tester ATO"
# ao_form["authorizing_official-title"] = "Chief Tester"
# ao_form["authorizing_official-email"] = "testy@town.com"
your_contact_form["your_contact-first_name"] = "Testy you"
your_contact_form["your_contact-last_name"] = "Tester you"
your_contact_form["your_contact-title"] = "Admin Tester"
your_contact_form["your_contact-email"] = "testy-admin@town.com"
your_contact_form["your_contact-phone"] = "(201) 555 5556"
# # test next button
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# ao_result = ao_form.submit()
# # validate that data from this step are being saved
# domain_request = DomainRequest.objects.get() # there's only one
# self.assertEqual(domain_request.authorizing_official.first_name, "Testy ATO")
# self.assertEqual(domain_request.authorizing_official.last_name, "Tester ATO")
# self.assertEqual(domain_request.authorizing_official.title, "Chief Tester")
# self.assertEqual(domain_request.authorizing_official.email, "testy@town.com")
# # the post request should return a redirect to the next form in
# # the domain request page
# self.assertEqual(ao_result.status_code, 302)
# self.assertEqual(ao_result["Location"], "/request/current_sites/")
# num_pages_tested += 1
# test next button
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
your_contact_result = your_contact_form.submit()
# validate that data from this step are being saved
domain_request = DomainRequest.objects.get() # there's only one
self.assertEqual(domain_request.submitter.first_name, "Testy you")
self.assertEqual(domain_request.submitter.last_name, "Tester you")
self.assertEqual(domain_request.submitter.title, "Admin Tester")
self.assertEqual(domain_request.submitter.email, "testy-admin@town.com")
self.assertEqual(domain_request.submitter.phone, "(201) 555 5556")
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(your_contact_result.status_code, 302)
self.assertEqual(your_contact_result["Location"], "/request/other_contacts/")
num_pages_tested += 1
# # ---- CURRENT SITES PAGE ----
# # Follow the redirect to the next form page
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# current_sites_page = ao_result.follow()
# current_sites_form = current_sites_page.forms[0]
# current_sites_form["current_sites-0-website"] = "www.city.com"
# ---- OTHER CONTACTS PAGE ----
# Follow the redirect to the next form page
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
other_contacts_page = your_contact_result.follow()
# # test next button
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# current_sites_result = current_sites_form.submit()
# # validate that data from this step are being saved
# domain_request = DomainRequest.objects.get() # there's only one
# self.assertEqual(
# domain_request.current_websites.filter(website="http://www.city.com").count(),
# 1,
# )
# # the post request should return a redirect to the next form in
# # the domain request page
# self.assertEqual(current_sites_result.status_code, 302)
# self.assertEqual(current_sites_result["Location"], "/request/dotgov_domain/")
# num_pages_tested += 1
# This page has 3 forms in 1.
# Let's set the yes/no radios to enable the other contacts fieldsets
other_contacts_form = other_contacts_page.forms[0]
# # ---- DOTGOV DOMAIN PAGE ----
# # Follow the redirect to the next form page
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# dotgov_page = current_sites_result.follow()
# dotgov_form = dotgov_page.forms[0]
# dotgov_form["dotgov_domain-requested_domain"] = "city"
# dotgov_form["dotgov_domain-0-alternative_domain"] = "city1"
other_contacts_form["other_contacts-has_other_contacts"] = "True"
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# dotgov_result = dotgov_form.submit()
# # validate that data from this step are being saved
# domain_request = DomainRequest.objects.get() # there's only one
# self.assertEqual(domain_request.requested_domain.name, "city.gov")
# self.assertEqual(domain_request.alternative_domains.filter(website="city1.gov").count(), 1)
# # the post request should return a redirect to the next form in
# # the domain request page
# self.assertEqual(dotgov_result.status_code, 302)
# self.assertEqual(dotgov_result["Location"], "/request/purpose/")
# num_pages_tested += 1
other_contacts_form["other_contacts-0-first_name"] = "Testy2"
other_contacts_form["other_contacts-0-last_name"] = "Tester2"
other_contacts_form["other_contacts-0-title"] = "Another Tester"
other_contacts_form["other_contacts-0-email"] = "testy2@town.com"
other_contacts_form["other_contacts-0-phone"] = "(201) 555 5557"
# # ---- PURPOSE PAGE ----
# # Follow the redirect to the next form page
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# purpose_page = dotgov_result.follow()
# purpose_form = purpose_page.forms[0]
# purpose_form["purpose-purpose"] = "For all kinds of things."
# test next button
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
other_contacts_result = other_contacts_form.submit()
# validate that data from this step are being saved
domain_request = DomainRequest.objects.get() # there's only one
self.assertEqual(
domain_request.other_contacts.filter(
first_name="Testy2",
last_name="Tester2",
title="Another Tester",
email="testy2@town.com",
phone="(201) 555 5557",
).count(),
1,
)
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(other_contacts_result.status_code, 302)
self.assertEqual(other_contacts_result["Location"], "/request/additional_details/")
num_pages_tested += 1
# # test next button
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# purpose_result = purpose_form.submit()
# # validate that data from this step are being saved
# domain_request = DomainRequest.objects.get() # there's only one
# self.assertEqual(domain_request.purpose, "For all kinds of things.")
# # the post request should return a redirect to the next form in
# # the domain request page
# self.assertEqual(purpose_result.status_code, 302)
# self.assertEqual(purpose_result["Location"], "/request/your_contact/")
# num_pages_tested += 1
# ---- ADDITIONAL DETAILS PAGE ----
# Follow the redirect to the next form page
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
additional_details_page = other_contacts_result.follow()
additional_details_form = additional_details_page.forms[0]
# # ---- YOUR CONTACT INFO PAGE ----
# # Follow the redirect to the next form page
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# your_contact_page = purpose_result.follow()
# your_contact_form = your_contact_page.forms[0]
# load inputs with test data
# your_contact_form["your_contact-first_name"] = "Testy you"
# your_contact_form["your_contact-last_name"] = "Tester you"
# your_contact_form["your_contact-title"] = "Admin Tester"
# your_contact_form["your_contact-email"] = "testy-admin@town.com"
# your_contact_form["your_contact-phone"] = "(201) 555 5556"
additional_details_form["additional_details-has_cisa_representative"] = "True"
additional_details_form["additional_details-has_anything_else_text"] = "True"
additional_details_form["additional_details-cisa_representative_email"] = "FakeEmail@gmail.com"
additional_details_form["additional_details-anything_else"] = "Nothing else."
# # test next button
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# your_contact_result = your_contact_form.submit()
# # validate that data from this step are being saved
# domain_request = DomainRequest.objects.get() # there's only one
# self.assertEqual(domain_request.submitter.first_name, "Testy you")
# self.assertEqual(domain_request.submitter.last_name, "Tester you")
# self.assertEqual(domain_request.submitter.title, "Admin Tester")
# self.assertEqual(domain_request.submitter.email, "testy-admin@town.com")
# self.assertEqual(domain_request.submitter.phone, "(201) 555 5556")
# # the post request should return a redirect to the next form in
# # the domain request page
# self.assertEqual(your_contact_result.status_code, 302)
# self.assertEqual(your_contact_result["Location"], "/request/other_contacts/")
# num_pages_tested += 1
# test next button
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
additional_details_result = additional_details_form.submit()
# validate that data from this step are being saved
domain_request = DomainRequest.objects.get() # there's only one
self.assertEqual(domain_request.cisa_representative_email, "FakeEmail@gmail.com")
self.assertEqual(domain_request.anything_else, "Nothing else.")
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(additional_details_result.status_code, 302)
self.assertEqual(additional_details_result["Location"], "/request/requirements/")
num_pages_tested += 1
# # ---- OTHER CONTACTS PAGE ----
# # Follow the redirect to the next form page
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# other_contacts_page = your_contact_result.follow()
# ---- REQUIREMENTS PAGE ----
# Follow the redirect to the next form page
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
requirements_page = additional_details_result.follow()
requirements_form = requirements_page.forms[0]
# # This page has 3 forms in 1.
# # Let's set the yes/no radios to enable the other contacts fieldsets
# other_contacts_form = other_contacts_page.forms[0]
requirements_form["requirements-is_policy_acknowledged"] = True
# other_contacts_form["other_contacts-has_other_contacts"] = "True"
# test next button
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
requirements_result = requirements_form.submit()
# validate that data from this step are being saved
domain_request = DomainRequest.objects.get() # there's only one
self.assertEqual(domain_request.is_policy_acknowledged, True)
# the post request should return a redirect to the next form in
# the domain request page
self.assertEqual(requirements_result.status_code, 302)
self.assertEqual(requirements_result["Location"], "/request/review/")
num_pages_tested += 1
# other_contacts_form["other_contacts-0-first_name"] = "Testy2"
# other_contacts_form["other_contacts-0-last_name"] = "Tester2"
# other_contacts_form["other_contacts-0-title"] = "Another Tester"
# other_contacts_form["other_contacts-0-email"] = "testy2@town.com"
# other_contacts_form["other_contacts-0-phone"] = "(201) 555 5557"
# # test next button
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# other_contacts_result = other_contacts_form.submit()
# # validate that data from this step are being saved
# domain_request = DomainRequest.objects.get() # there's only one
# self.assertEqual(
# domain_request.other_contacts.filter(
# first_name="Testy2",
# last_name="Tester2",
# title="Another Tester",
# email="testy2@town.com",
# phone="(201) 555 5557",
# ).count(),
# 1,
# )
# # the post request should return a redirect to the next form in
# # the domain request page
# self.assertEqual(other_contacts_result.status_code, 302)
# self.assertEqual(other_contacts_result["Location"], "/request/additional_details/")
# num_pages_tested += 1
# # ---- ADDITIONAL DETAILS PAGE ----
# # Follow the redirect to the next form page
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# additional_details_page = other_contacts_result.follow()
# additional_details_form = additional_details_page.forms[0]
# # load inputs with test data
# additional_details_form["additional_details-has_cisa_representative"] = "True"
# additional_details_form["additional_details-has_anything_else_text"] = "True"
# additional_details_form["additional_details-cisa_representative_email"] = "FakeEmail@gmail.com"
# additional_details_form["additional_details-anything_else"] = "Nothing else."
# # test next button
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# additional_details_result = additional_details_form.submit()
# # validate that data from this step are being saved
# domain_request = DomainRequest.objects.get() # there's only one
# self.assertEqual(domain_request.cisa_representative_email, "FakeEmail@gmail.com")
# self.assertEqual(domain_request.anything_else, "Nothing else.")
# # the post request should return a redirect to the next form in
# # the domain request page
# self.assertEqual(additional_details_result.status_code, 302)
# self.assertEqual(additional_details_result["Location"], "/request/requirements/")
# num_pages_tested += 1
# # ---- REQUIREMENTS PAGE ----
# # Follow the redirect to the next form page
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# requirements_page = additional_details_result.follow()
# requirements_form = requirements_page.forms[0]
# requirements_form["requirements-is_policy_acknowledged"] = True
# # test next button
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# requirements_result = requirements_form.submit()
# # validate that data from this step are being saved
# domain_request = DomainRequest.objects.get() # there's only one
# self.assertEqual(domain_request.is_policy_acknowledged, True)
# # the post request should return a redirect to the next form in
# # the domain request page
# self.assertEqual(requirements_result.status_code, 302)
# self.assertEqual(requirements_result["Location"], "/request/review/")
# num_pages_tested += 1
# ---- REVIEW AND FINSIHED PAGES ----
# Follow the redirect to the next form page
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
review_page = requirements_result.follow()
review_form = review_page.forms[0]
print("$$$$$$$$$$$$$$$$$$$$$$", review_page)
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# review_page = requirements_result.follow()
# review_form = review_page.forms[0]
# print("$$$$$$$$$$$$$$$$$$$$$$", review_page)
# Review page contains all the previously entered data
# Let's make sure the long org name is displayed
self.assertContains(review_page, "Incomplete")
# # Review page contains all the previously entered data
# # Let's make sure the long org name is displayed
# self.assertContains(review_page, "Incomplete")
# In theory we just need to check that tribal is incomplete
# I don't need to re-look at any of these underneath
# self.assertContains(review_page, "Executive")
@ -813,22 +848,22 @@ class DomainRequestTests(TestWithUser, WebTest):
# And the existence of the modal's data parked and ready for the js init.
# The next assert also tests for the passed requested domain context from
# the view > domain_request_form > modal
self.assertContains(review_page, "You cant submit this request")
# self.assertContains(review_page, "You cant submit this request")
# final submission results in a redirect to the "finished" URL
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
with less_console_noise():
review_result = review_form.submit()
print("!!!!!!!!!!!!!!!!!!! review_result", review_result)
# # final submission results in a redirect to the "finished" URL
# self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
# with less_console_noise():
# review_result = review_form.submit()
# print("!!!!!!!!!!!!!!!!!!! review_result", review_result)
print("!!!!!!!!!!!!!!!!!!! review_result.status_code", review_result.status_code)
print("!!!!!!!!!!!!!!!!!!! review_results location", review_result["Location"])
# print("!!!!!!!!!!!!!!!!!!! review_result.status_code", review_result.status_code)
# print("!!!!!!!!!!!!!!!!!!! review_results location", review_result["Location"])
self.assertEqual(review_result.status_code, 302)
self.assertEqual(review_result["Location"], "/request/finished/")
# self.assertEqual(review_result.status_code, 302)
# self.assertEqual(review_result["Location"], "/request/finished/")
# self.assertEqual(review_result["Location"], "/tribal_government/")
num_pages_tested += 1
# # self.assertEqual(review_result["Location"], "/tribal_government/")
# num_pages_tested += 1
# following this redirect is a GET request, so include the cookie
# here too.
@ -838,7 +873,7 @@ class DomainRequestTests(TestWithUser, WebTest):
# self.assertContains(final_result, "Thanks for your domain request!")
# check that any new pages are added to this test
self.assertEqual(num_pages, num_pages_tested)
# self.assertEqual(num_pages, num_pages_tested)
# This is the start of a test to check an existing domain_request, it currently
# does not work and results in errors as noted in:

View file

@ -374,108 +374,109 @@ class DomainRequestWizard(DomainRequestWizardPermissionView, TemplateView):
}
return [key for key, value in history_dict.items() if value]
def _is_federal_complete(self):
# Federal -> "Federal government branch" page can't be empty + Federal Agency selection can't be None
return not (self.domain_request.federal_type is None or self.domain_request.federal_agency is None)
# def _is_federal_complete(self):
# # Federal -> "Federal government branch" page can't be empty + Federal Agency selection can't be None
# return not (self.domain_request.federal_type is None or self.domain_request.federal_agency is None)
def _is_interstate_complete(self):
# Interstate -> "About your organization" page can't be empty
return self.domain_request.about_your_organization is not None
# def _is_interstate_complete(self):
# # Interstate -> "About your organization" page can't be empty
# return self.domain_request.about_your_organization is not None
def _is_state_or_territory_complete(self):
# State -> ""Election office" page can't be empty
return self.domain_request.is_election_board is not None
# def _is_state_or_territory_complete(self):
# # State -> ""Election office" page can't be empty
# return self.domain_request.is_election_board is not None
def _is_tribal_complete(self):
# Tribal -> "Tribal name" and "Election office" page can't be empty
return self.domain_request.tribe_name is not None and self.domain_request.is_election_board is not None
# def _is_tribal_complete(self):
# # Tribal -> "Tribal name" and "Election office" page can't be empty
# return self.domain_request.tribe_name is not None and self.domain_request.is_election_board is not None
def _is_county_complete(self):
# County -> "Election office" page can't be empty
return self.domain_request.is_election_board is not None
# def _is_county_complete(self):
# # County -> "Election office" page can't be empty
# return self.domain_request.is_election_board is not None
def _is_city_complete(self):
# City -> "Election office" page can't be empty
return self.domain_request.is_election_board is not None
# def _is_city_complete(self):
# # City -> "Election office" page can't be empty
# return self.domain_request.is_election_board is not None
def _is_special_district_complete(self):
# Special District -> "Election office" and "About your organization" page can't be empty
return (
self.domain_request.is_election_board is not None
and self.domain_request.about_your_organization is not None
)
# def _is_special_district_complete(self):
# # Special District -> "Election office" and "About your organization" page can't be empty
# return (
# self.domain_request.is_election_board is not None
# and self.domain_request.about_your_organization is not None
# )
def _is_organization_name_and_address_complete(self):
return not (
self.domain_request.organization_name is None
or self.domain_request.address_line1 is None
or self.domain_request.city is None
or self.domain_request.state_territory is None
or self.domain_request.zipcode is None
)
# def _is_organization_name_and_address_complete(self):
# return not (
# self.domain_request.organization_name is None
# or self.domain_request.address_line1 is None
# or self.domain_request.city is None
# or self.domain_request.state_territory is None
# or self.domain_request.zipcode is None
# )
def _is_authorizing_official_complete(self):
return self.domain_request.authorizing_official is not None
# def _is_authorizing_official_complete(self):
# return self.domain_request.authorizing_official is not None
def _is_requested_domain_complete(self):
return self.domain_request.requested_domain is not None
# def _is_requested_domain_complete(self):
# return self.domain_request.requested_domain is not None
def _is_purpose_complete(self):
return self.domain_request.purpose is not None
# def _is_purpose_complete(self):
# return self.domain_request.purpose is not None
def _is_submitter_complete(self):
return self.domain_request.submitter is not None
# def _is_submitter_complete(self):
# return self.domain_request.submitter is not None
def _is_other_contacts_complete(self):
return self.domain_request.other_contacts is not None
# def _is_other_contacts_complete(self):
# return self.domain_request.other_contacts is not None
def _is_additional_details_complete(self):
return not (
self.domain_request.has_cisa_representative is None
or self.domain_request.has_anything_else_text is None
# RARE EDGE CASE: You click yes on having a cisa rep, but you dont type in email (should block in form)
or (
self.domain_request.has_cisa_representative is True
and self.domain_request.cisa_representative_email is None
)
or self.domain_request.is_policy_acknowledged is None
)
# def _is_additional_details_complete(self):
# return not (
# self.domain_request.has_cisa_representative is None
# or self.domain_request.has_anything_else_text is None
# # RARE EDGE CASE: You click yes on having a cisa rep, but you dont type in email (should block in form)
# or (
# self.domain_request.has_cisa_representative is True
# and self.domain_request.cisa_representative_email is None
# )
# or self.domain_request.is_policy_acknowledged is None
# )
def _is_general_form_complete(self):
return (
self._is_organization_name_and_address_complete()
and self._is_authorizing_official_complete()
and self._is_requested_domain_complete()
and self._is_purpose_complete()
and self._is_submitter_complete()
and self._is_other_contacts_complete()
and self._is_additional_details_complete()
)
# def _is_general_form_complete(self):
# return (
# self._is_organization_name_and_address_complete()
# and self._is_authorizing_official_complete()
# and self._is_requested_domain_complete()
# and self._is_purpose_complete()
# and self._is_submitter_complete()
# and self._is_other_contacts_complete()
# and self._is_additional_details_complete()
# )
def _form_complete(self):
if self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.FEDERAL:
is_complete = self._is_federal_complete()
elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.INTERSTATE:
is_complete = self._is_interstate_complete()
elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.STATE_OR_TERRITORY:
is_complete = self._is_state_or_territory_complete()
elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.TRIBAL:
is_complete = self._is_tribal_complete()
elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.COUNTY:
is_complete = self._is_county_complete()
elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.CITY:
is_complete = self._is_city_complete()
elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.SPECIAL_DISTRICT:
is_complete = self._is_special_district_complete()
else:
is_complete = False
# def _form_complete(self):
# if self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.FEDERAL:
# is_complete = self._is_federal_complete()
# elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.INTERSTATE:
# is_complete = self._is_interstate_complete()
# elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.STATE_OR_TERRITORY:
# is_complete = self._is_state_or_territory_complete()
# elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.TRIBAL:
# is_complete = self._is_tribal_complete()
# elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.COUNTY:
# is_complete = self._is_county_complete()
# elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.CITY:
# is_complete = self._is_city_complete()
# elif self.domain_request.generic_org_type == DomainRequest.OrganizationChoices.SPECIAL_DISTRICT:
# is_complete = self._is_special_district_complete()
# else:
# # NOTE: This shouldn't happen, this is only if somehow they didn't choose an org type
# is_complete = False
if not is_complete or not self._is_general_form_complete():
print("!!!! We are in the False if statement - form is not complete")
return False
# if not is_complete or not self._is_general_form_complete():
# print("!!!! We are in the False if statement - form is not complete")
# return False
print("!!!! We are in the True if statement - form is complete")
return True
# print("!!!! We are in the True if statement - form is complete")
# return True
def get_context_data(self):
"""Define context for access on all wizard pages."""
@ -483,7 +484,7 @@ class DomainRequestWizard(DomainRequestWizardPermissionView, TemplateView):
# Concatenate the modal header that we'll pass to the modal.
context_stuff = {}
if self._form_complete():
if DomainRequest._form_complete(self.domain_request):
print("!!!!!!!in form complete section")
modal_button = '<button type="submit" ' 'class="usa-button" ' ">Submit request</button>"
context_stuff = {
@ -773,7 +774,7 @@ class Review(DomainRequestWizard):
forms = [] # type: ignore
def get_context_data(self):
if self._form_complete() is False:
if DomainRequest._form_complete(self.domain_request) is False:
logger.warning("User arrived at review page with an incomplete form.")
context = super().get_context_data()
context["Step"] = Step.__members__