From d2149484c9c32b1e1e87a1d093882eb410a84e50 Mon Sep 17 00:00:00 2001
From: zandercymatics <141044360+zandercymatics@users.noreply.github.com>
Date: Fri, 13 Dec 2024 11:31:22 -0700
Subject: [PATCH] fix tests + cleanup
---
.../src/js/getgov/portfolio-member-page.js | 9 +------
src/registrar/assets/src/js/getgov/radios.js | 5 +---
src/registrar/forms/portfolio.py | 3 +++
src/registrar/tests/test_views_portfolio.py | 24 +++++++++----------
4 files changed, 17 insertions(+), 24 deletions(-)
diff --git a/src/registrar/assets/src/js/getgov/portfolio-member-page.js b/src/registrar/assets/src/js/getgov/portfolio-member-page.js
index 16017959f..e7d797441 100644
--- a/src/registrar/assets/src/js/getgov/portfolio-member-page.js
+++ b/src/registrar/assets/src/js/getgov/portfolio-member-page.js
@@ -98,28 +98,21 @@ export function initAddNewMemberPageListeners() {
// Get all permission sections (divs with h3 and radio inputs)
const permissionSections = document.querySelectorAll(`#${permission_details_div_id} > h3`);
- console.log(`what is the id? ${permission_details_div_id}`)
- console.log(`what is the permissionSections? ${permissionSections}`)
-
permissionSections.forEach(section => {
- console.log(`what is the section? ${section}`)
// Find the
element text
const sectionTitle = section.textContent;
// Find the associated radio buttons container (next fieldset)
const fieldset = section.nextElementSibling;
- console.log(`what is the fieldset? ${fieldset}`)
if (fieldset && fieldset.tagName.toLowerCase() === 'fieldset') {
// Get the selected radio button within this fieldset
const selectedRadio = fieldset.querySelector('input[type="radio"]:checked');
- console.log(`what is the selectedRadio? ${selectedRadio.id}`)
// If a radio button is selected, get its label text
let selectedPermission = "No permission selected";
if (selectedRadio) {
const label = fieldset.querySelector(`label[for="${selectedRadio.id}"]`);
selectedPermission = label ? label.textContent : "No permission selected";
}
- console.log(`what is the selectedPermission? ${selectedPermission}`)
// Create new elements for the modal content
const titleElement = document.createElement("h4");
@@ -149,7 +142,7 @@ export function initAddNewMemberPageListeners() {
// Get selected radio button for access level
let selectedAccess = document.querySelector('input[name="role"]:checked');
- console.log(`selectedAccess" ${selectedAccess} vs value ${selectedAccess.value}`)
+
// Set the selected permission text to 'Basic' or 'Admin' (the value of the selected radio button)
// This value does not have the first letter capitalized so let's capitalize it
let accessText = "No access level selected";
diff --git a/src/registrar/assets/src/js/getgov/radios.js b/src/registrar/assets/src/js/getgov/radios.js
index c81d18fd2..055bdf621 100644
--- a/src/registrar/assets/src/js/getgov/radios.js
+++ b/src/registrar/assets/src/js/getgov/radios.js
@@ -39,7 +39,6 @@ export function hookupYesNoListener(radioButtonName, elementIdToShowIfYes, eleme
export function hookupRadioTogglerListener(radioButtonName, valueToElementMap) {
// Get the radio buttons
let radioButtons = document.querySelectorAll(`input[name="${radioButtonName}"]`);
- console.log(`what are the radio buttons? ${radioButtons} vs name: ${radioButtonName}`)
// Extract the list of all element IDs from the valueToElementMap
let allElementIds = Object.values(valueToElementMap);
@@ -50,12 +49,10 @@ export function hookupRadioTogglerListener(radioButtonName, valueToElementMap) {
let selectedValue = radioButtonChecked ? radioButtonChecked.value : null;
// Hide all elements by default
- console.log(`what are the elementids? ${allElementIds}`)
allElementIds.forEach(function (elementId) {
let element = document.getElementById(elementId);
- console.log(`id? ${elementId} what is the element? ${element}`)
if (element) {
- hideElement(element);
+ hideElement(element);
}
});
diff --git a/src/registrar/forms/portfolio.py b/src/registrar/forms/portfolio.py
index 4a7417318..5549aa11e 100644
--- a/src/registrar/forms/portfolio.py
+++ b/src/registrar/forms/portfolio.py
@@ -124,6 +124,7 @@ class BasePortfolioMemberForm(forms.Form):
)
domain_request_permission_admin = forms.ChoiceField(
+ # nosec B308 - required_star is a hardcoded HTML string
label=mark_safe(f"Select permission {required_star}"),
choices=[
(UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value, "View all requests"),
@@ -137,6 +138,7 @@ class BasePortfolioMemberForm(forms.Form):
)
member_permission_admin = forms.ChoiceField(
+ # nosec B308 - required_star is a hardcoded HTML string
label=mark_safe(f"Select permission {required_star}"),
choices=[
(UserPortfolioPermissionChoices.VIEW_MEMBERS.value, "View all members"),
@@ -150,6 +152,7 @@ class BasePortfolioMemberForm(forms.Form):
)
domain_request_permission_member = forms.ChoiceField(
+ # nosec B308 - required_star is a hardcoded HTML string
label=mark_safe(f"Select permission {required_star}"),
choices=[
(UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS.value, "View all requests"),
diff --git a/src/registrar/tests/test_views_portfolio.py b/src/registrar/tests/test_views_portfolio.py
index 801dc8791..834e1d049 100644
--- a/src/registrar/tests/test_views_portfolio.py
+++ b/src/registrar/tests/test_views_portfolio.py
@@ -2568,17 +2568,19 @@ class TestPortfolioInviteNewMemberView(TestWithUser, WebTest):
reverse("new-member"),
{
"role": "organization_member",
- "basic_org_domain_request_permissions": "view_only",
+ "domain_request_permission_member": "view_all_requests",
"email": self.new_member_email,
},
)
# Ensure the final submission is successful
self.assertEqual(final_response.status_code, 302) # redirects after success
-
# Validate Database Changes
portfolio_invite = PortfolioInvitation.objects.filter(
- email=self.new_member_email, portfolio=self.portfolio
+ email=self.new_member_email,
+ portfolio=self.portfolio,
+ roles__exact=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER],
+ additional_permissions__exact=[UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS],
).first()
self.assertIsNotNone(portfolio_invite)
self.assertEqual(portfolio_invite.email, self.new_member_email)
@@ -2601,14 +2603,13 @@ class TestPortfolioInviteNewMemberView(TestWithUser, WebTest):
reverse("new-member"),
{
"role": "organization_member",
- "basic_org_domain_request_permissions": "view_only",
+ "domain_request_permission_member": "view_all_requests",
"email": self.invited_member_email,
},
)
- self.assertEqual(response.status_code, 302) # Redirects
-
- # TODO: verify messages
-
+ # Unsucessful form submissions return the same page with a 200
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.context["form"].errors["email"][0], "An invitation already exists for this user.")
# Validate Database has not changed
invite_count_after = PortfolioInvitation.objects.count()
self.assertEqual(invite_count_after, invite_count_before)
@@ -2631,13 +2632,12 @@ class TestPortfolioInviteNewMemberView(TestWithUser, WebTest):
reverse("new-member"),
{
"role": "organization_member",
- "basic_org_domain_request_permissions": "view_only",
+ "domain_request_permissions_member": "view_all_requests",
"email": self.user.email,
},
)
- self.assertEqual(response.status_code, 302) # Redirects
-
- # TODO: verify messages
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.context["form"].errors["email"][0], "User is already a member of this portfolio.")
# Validate Database has not changed
invite_count_after = PortfolioInvitation.objects.count()