Skip to content
This repository is currently being migrated. It's locked while the migration is in progress.

VACMS-20193: Re-adds Germany and South Korea as states#23705

Open
Becapa wants to merge 7 commits into
mainfrom
VACMS-20193-countries-as-states
Open

VACMS-20193: Re-adds Germany and South Korea as states#23705
Becapa wants to merge 7 commits into
mainfrom
VACMS-20193-countries-as-states

Conversation

@Becapa
Copy link
Copy Markdown
Contributor

@Becapa Becapa commented Mar 12, 2026

Description

Relates to #20193 and #23432.

Generated description

This pull request expands the functionality of the address module by allowing multiple countries to be added as US states, rather than just the Philippines. It also updates the service and test files to reflect this broader scope. The most important changes are grouped below by theme:

Feature Expansion:

  • The event subscriber class was renamed from AddPhilippinesAsStateSubscriber to AddCountriesAsStatesSubscriber, and its logic was updated to add Germany (DEU) and South Korea (KR) as US subdivisions alongside the Philippines (PH). The subdivisions are now sorted by name for consistency. [1] [2]

Service Registration:

  • The service definition in va_gov_address.services.yml was updated to reference the new class name, ensuring the correct event subscriber is registered.

Testing Updates:

  • The unit test file was renamed and updated to test for the inclusion of Germany and South Korea as subdivisions in addition to the Philippines, and all references were changed to the new class name. [1] [2] [3]

Testing done

Screenshots

QA steps

As an admin

  1. Edit the page - Pre-Discharge Site at Landstuhl Regional Medical Center
    • Validate that Both Germany and Delaware show up in the 'State' dropdown under 'Address'
    • Select 'Germany' from the 'State' dropdown
    • Validate that you can save the page without errors
  2. Then edit the page - Pre-Discharge Site at U.S. Army Garrison Humphreys
    • Select 'South Korea' from the 'Sate dropdown under 'Address'
    • Validate that you can save the page without errors
  3. The create a new 'Event' - /node/add/event
    • Fill in all required fields
    • For 'Location type' select 'At a non-VA location
    • Enter an address in Germany
    • Validate that you can save the event without errors
  4. Edit the same event
    • Change the address to an address in South Korea
    • Validate that you can save the page without errors.
  5. Create a News release - /node/add/press_release
    • Fill in all required fields
    • Enter a location in Germany
    • Validate that you can save without errors
  6. Edit the News release
    • Change the location to South Korea
    • Validate that you can save without errors

Definition of Done

  • Documentation has been updated, if applicable.
  • Tests have been added if necessary.
  • Automated tests have passed.
  • Code Quality Tests have passed.
  • Acceptance Criteria in related issue are met.
  • Manual Code Review Approved.
  • If there are field changes, front end output has been thoroughly checked.

Select Team for PR review

  • CMS Team
  • Public websites
  • Facilities
  • User support
  • Accelerated Publishing

Is this PR blocked by another PR?

  • DO NOT MERGE

Does this PR need review from a Product Owner

  • Needs PO review

CMS user-facing announcement

Is an announcement needed to let editors know of this change?

  • Yes, and it's written in issue ____ and queued for publication.
    • Merge and ping the UX writer so they are ready to publish after deployment
  • Yes, but it hasn't yet been written
    • Don't merge yet -- ping the UX writer to write and queue content
  • No announcement is needed for this code change.
    • Merge & carry on unburdened by announcements

Copilot AI review requested due to automatic review settings March 12, 2026 15:25
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 12, 2026 15:25 Destroyed
@github-actions
Copy link
Copy Markdown

Checking composer.lock changes...

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Expands the va_gov_address customization of Drupal Address subdivisions so that additional countries can be selected/saved via the US “State” dropdown (intended to include Germany and South Korea in addition to the Philippines).

Changes:

  • Renames/updates the address subdivisions event subscriber to support adding multiple countries as US subdivisions.
  • Updates the service definition to register the renamed subscriber.
  • Updates unit tests to validate the additional subdivisions.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
docroot/modules/custom/va_gov_address/src/EventSubscriber/AddCountriesAsStatesSubscriber.php Adds additional subdivisions (Germany, South Korea) to the US subdivisions list and sorts by name.
docroot/modules/custom/va_gov_address/va_gov_address.services.yml Registers the renamed event subscriber service.
tests/phpunit/va_gov_address/unit/EventSubscriber/AddCountriesAsStatesSubscriberTest.php Updates unit coverage to reflect the renamed subscriber and expanded subdivision set.
Comments suppressed due to low confidence (1)

docroot/modules/custom/va_gov_address/src/EventSubscriber/AddCountriesAsStatesSubscriber.php:51

  • Germany is being added under subdivision key/code 'DEU' (ISO alpha-3), but the expected value for saving in the Address widget is typically ISO alpha-2 ('DE') (and the updated unit test/acceptance criteria expect 'DE|Germany'). Using 'DEU' here will both fail the unit test and likely produce the wrong stored subdivision value. Switch the subdivision key/code/id to 'DE'.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docroot/modules/custom/va_gov_address/va_gov_address.services.yml
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 12, 2026 15:51 Destroyed
@github-actions
Copy link
Copy Markdown

Checking composer.lock changes...

@r-bartlett-gsa r-bartlett-gsa linked an issue Mar 12, 2026 that may be closed by this pull request
17 tasks
@r-bartlett-gsa r-bartlett-gsa linked an issue Mar 12, 2026 that may be closed by this pull request
17 tasks
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 13, 2026 08:28 Destroyed
Copy link
Copy Markdown

@SnowboardTechie SnowboardTechie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

…AsStatesSubscriberTest.php

Co-authored-by: Bryan Thompson <18094023+bryan-thompsoncodes@users.noreply.github.com>
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 13, 2026 18:33 Destroyed
@github-actions
Copy link
Copy Markdown

Checking composer.lock changes...

@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 14, 2026 08:25 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 15, 2026 08:26 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 16, 2026 08:25 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 17, 2026 08:26 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 19, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 20, 2026 08:26 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 21, 2026 08:25 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 22, 2026 08:26 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat March 23, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 15, 2026 01:56 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 15, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 16, 2026 03:21 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 16, 2026 08:29 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 17, 2026 08:31 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 18, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 19, 2026 08:28 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 20, 2026 08:28 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 21, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 22, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 23, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 24, 2026 08:26 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 25, 2026 08:26 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 26, 2026 08:26 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 27, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 28, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 29, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat April 30, 2026 08:26 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 1, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 2, 2026 08:27 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 3, 2026 08:28 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 4, 2026 08:28 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 5, 2026 08:26 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 6, 2026 08:28 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 7, 2026 08:28 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 8, 2026 08:28 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 9, 2026 08:29 Destroyed
@va-cms-bot va-cms-bot temporarily deployed to Tugboat May 10, 2026 08:28 Destroyed
@va-cms-bot
Copy link
Copy Markdown
Collaborator

Cypress Accessibility Violations

/test-data-sed

ID: button-name
Impact: critical
Tags: cat.name-role-value, wcag2a, wcag412, section508, section508.22.a, TTv5, TT6.a, EN-301-549, EN-9.4.1.2, ACT
Description: Ensure buttons have discernible text
Help: Buttons must have discernible text
Nodes:

  • HTML: <button class="proofing-element-help" role="tooltip" data-proofing-help-title="About 'Page introduction' field" data-proofing-help="Add an introduction that helps visitors understand if information on the page is relevant to them."> <span aria-hidden="true">i</span> </button>
    Impact: critical
    Target: .field--name-field-intro-text-limited-html > .field__label > .proofing-element-help[role="tooltip"]
    Summary: Fix any of the following:
    Element does not have inner text that is visible to screen readers
    aria-label attribute does not exist or is empty
    aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty
    Element has no title attribute
    Element does not have an implicit (wrapped) <label>
    Element does not have an explicit <label>
    Element's default semantics were not overridden with role="none" or role="presentation"

  • HTML: <button class="proofing-element-help" role="tooltip" data-proofing-help-title="About 'Generate a table of contents from major headings' field" data-proofing-help="By checking this box, all h2's below this point on the page will be linked with with anchor links. This helps users navigate content on very long pages. Do not check this box unless there is at least 2 h2's on the page.">
    Impact: critical
    Target: .field--name-field-table-of-contents-boolean > .field__label > .proofing-element-help[role="tooltip"]
    Summary: Fix any of the following:
    Element does not have inner text that is visible to screen readers
    aria-label attribute does not exist or is empty
    aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty
    Element has no title attribute
    Element does not have an implicit (wrapped) <label>
    Element does not have an explicit <label>
    Element's default semantics were not overridden with role="none" or role="presentation"

  • HTML: <button class="proofing-element-help" role="tooltip" data-proofing-help-title="About 'Main content' field" data-proofing-help="The main body of the page, which appears below the featured content."> <span aria-hidden="true">i</span> </button>
    Impact: critical
    Target: button[data-proofing-help-title="About 'Main content' field"]
    Summary: Fix any of the following:
    Element does not have inner text that is visible to screen readers
    aria-label attribute does not exist or is empty
    aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty
    Element has no title attribute
    Element does not have an implicit (wrapped) <label>
    Element does not have an explicit <label>
    Element's default semantics were not overridden with role="none" or role="presentation"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update Drupal Address Module to support South Korean addresses Update Drupal Address Module to support German addresses

7 participants