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()