-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(citizenship): wrong path error fix #16251
Conversation
WalkthroughThe changes in this pull request focus on the Changes
Possibly related PRs
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (4)
libs/application/templates/directorate-of-immigration/citizenship/src/forms/CitizenshipForm/ChildrenSupportingDocuments/ChildrenOtherDocumentsSubSection.ts (4)
Line range hint
78-89
: LGTM with a minor suggestion for improvementThe change from
${Routes.SUPPORTINGDOCUMENTS}
to${Routes.CHILDSUPPORTINGDOCUMENTS}
aligns with the PR objective of fixing the wrong path error. This update ensures consistency with the child supporting documents context.Consider extracting the age check logic into a separate function for improved readability and reusability:
const isWrittenConsentRequired = (age: number | null) => !!age && age >= MIN_AGE_WRITTEN_CONSENT; // Then in the defaultValue function: return isWrittenConsentRequired(age) ? 'true' : 'false';This change would enhance code clarity and potentially improve reusability across the application.
Line range hint
113-134
: Approved with suggestions for improvementThe change from
${Routes.SUPPORTINGDOCUMENTS}
to${Routes.CHILDSUPPORTINGDOCUMENTS}
correctly addresses the wrong path error, ensuring consistency with the child supporting documents context.To improve code clarity and maintainability, consider refactoring the complex logic for determining if written consent from the other parent is required:
- Extract the logic into a separate function:
const isWrittenConsentFromOtherParentRequired = ( selectedInCustody: any[], index: number, customAddedParent: string ) => { const thisChild = selectedInCustody && selectedInCustody[index - 1]; const hasOtherParent = thisChild && !!thisChild.otherParent; return hasOtherParent || !!customAddedParent; };
- Use this function in the
defaultValue
:defaultValue: (application: Application) => { const answers = application.answers as Citizenship; const selectedInCustody = getSelectedCustodyChildren( application.externalData, answers ); const customAddedParent = getValueViaPath( answers, `selectedChildrenExtraData[${index}].otherParentName`, '' ) as string; return isWrittenConsentFromOtherParentRequired(selectedInCustody, index, customAddedParent) ? 'true' : 'false'; },This refactoring would improve code readability and make the logic easier to test and maintain.
Line range hint
174-189
: Approved with suggestions for consistency and reusabilityThe change from
${Routes.SUPPORTINGDOCUMENTS}
to${Routes.CHILDSUPPORTINGDOCUMENTS}
correctly addresses the wrong path error, maintaining consistency with the child supporting documents context.To improve code consistency and reusability, consider the following refactoring:
- Extract the common logic for checking if a child has another parent into a reusable function:
const hasOtherParent = (selectedInCustody: any[], index: number) => { const thisChild = selectedInCustody && selectedInCustody[index - 1]; return thisChild && !!thisChild.otherParent; };
- Use this function in both the
custodyDocumentsRequired
andwrittenConsentFromOtherParentRequired
logic:defaultValue: (application: Application) => { const answers = application.answers as Citizenship; const selectedInCustody = getSelectedCustodyChildren( application.externalData, answers ); return hasOtherParent(selectedInCustody, index) ? 'true' : 'false'; },This refactoring would improve code consistency across different sections and enhance reusability, adhering to the DRY principle.
Line range hint
1-224
: Summary of changes and overall impactThe changes in this file consistently address the wrong path error mentioned in the PR objectives by updating the IDs of hidden input fields from
${Routes.SUPPORTINGDOCUMENTS}
to${Routes.CHILDSUPPORTINGDOCUMENTS}
. This update ensures that the routing aligns correctly with the context of the child's supporting documents section.While the changes effectively fix the immediate issue, consider the following architectural advice to further improve the code:
- Implement a centralized route management system to prevent similar path-related errors in the future.
- Create utility functions for common logic patterns (as suggested in the individual comments) to improve code reusability across the application.
- Consider using TypeScript's enum or const assertions for the
Routes
object to provide better type safety and autocompletion when referencing routes.These improvements would enhance the overall maintainability and scalability of the codebase while adhering to the reusability requirements for components in the
libs/**/*
path pattern.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (1)
- libs/application/templates/directorate-of-immigration/citizenship/src/forms/CitizenshipForm/ChildrenSupportingDocuments/ChildrenOtherDocumentsSubSection.ts (3 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
libs/application/templates/directorate-of-immigration/citizenship/src/forms/CitizenshipForm/ChildrenSupportingDocuments/ChildrenOtherDocumentsSubSection.ts (1)
Pattern
libs/**/*
: "Confirm that the code adheres to the following:
- Reusability of components and hooks across different NextJS apps.
- TypeScript usage for defining props and exporting types.
- Effective tree-shaking and bundling practices."
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #16251 +/- ##
==========================================
- Coverage 36.93% 36.92% -0.01%
==========================================
Files 6781 6781
Lines 140002 140009 +7
Branches 39809 39810 +1
==========================================
Hits 51703 51703
- Misses 88299 88306 +7
Flags with carried forward coverage won't be shown. Click here to find out more. see 1 file with indirect coverage changes Continue to review full report in Codecov by Sentry.
|
Datadog ReportAll test runs ✅ 5 Total Test Services: 0 Failed, 5 Passed Test Services
|
...
Attach a link to issue if relevant
What
Specify what you're trying to achieve
Why
Specify why you need to achieve this
Screenshots / Gifs
Attach Screenshots / Gifs to help reviewers understand the scope of the pull request
Checklist:
Summary by CodeRabbit
New Features
Bug Fixes