Skip to content
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

UINV-557: Improve error message when attempting to save an invoice line when no budget for the fiscal year exists #809

Merged
merged 12 commits into from
Oct 8, 2024

Conversation

alisher-epam
Copy link
Contributor

Purpose

UINV-557: Improve error message when attempting to save an invoice line when no budget for the fiscal year exists

Approach

Screen.Recording.2024-09-26.at.20.36.08.mp4

Screenshots

Pre-Merge Checklist

Before merging this PR, please go through the following list and take appropriate actions.

  • I've added appropriate record to the CHANGELOG.md
  • Does this PR meet or exceed the expected quality standards?
    • Code coverage on new code is 80% or greater
    • Duplications on new code is 3% or less
    • There are no major code smells or security issues
  • Does this introduce breaking changes?
    • If any API-related changes - okapi interfaces and permissions are reviewed/changed correspondingly
    • There are no breaking changes in this PR.

If there are breaking changes, please STOP and consider the following:

  • What other modules will these changes impact?
  • Do JIRAs exist to update the impacted modules?
    • If not, please create them
    • Do they contain the appropriate level of detail? Which endpoints/schemas changed, etc.
    • Do they have all they appropriate links to blocked/related issues?
  • Are the JIRAs under active development?
    • If not, contact the project's PO and make sure they're aware of the urgency.
  • Do PRs exist for these changes?
    • If so, have they been approved?

Ideally all of the PRs involved in breaking changes would be merged in the same day to avoid breaking the folio-testing environment. Communication is paramount if that is to be achieved, especially as the number of intermodule and inter-team dependencies increase.

While it's helpful for reviewers to help identify potential problems, ensuring that it's safe to merge is ultimately the responsibility of the PR assignee.

Copy link

github-actions bot commented Sep 26, 2024

Jest Unit Test Statistics

    1 files  ±0  115 suites  ±0   3m 42s ⏱️ +7s
364 tests ±0  364 ✔️ ±0  0 💤 ±0  0 ±0 
369 runs  ±0  369 ✔️ ±0  0 💤 ±0  0 ±0 

Results for commit a424a91. ± Comparison against base commit 97d39cb.

♻️ This comment has been updated with latest results.

Copy link

github-actions bot commented Sep 26, 2024

BigTest Unit Test Statistics

0 tests  ±0   0 ✔️ ±0   0s ⏱️ ±0s
0 suites ±0   0 💤 ±0 
0 files   ±0   0 ±0 

Results for commit a424a91. ± Comparison against base commit 97d39cb.

♻️ This comment has been updated with latest results.

@alisher-epam alisher-epam self-assigned this Sep 27, 2024
@alisher-epam alisher-epam requested review from usavkov-epam and a team September 27, 2024 10:33
@alisher-epam
Copy link
Contributor Author

@usavkov-epam @folio-org/fe-tl-reviewers please review

Copy link
Contributor

@usavkov-epam usavkov-epam left a comment

Choose a reason for hiding this comment

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

The PR has quality gates issue: https://sonarcloud.io/project/issues?sinceLeakPeriod=true&issueStatuses=OPEN%2CCONFIRMED&pullRequest=809&id=org.folio%3Aui-invoice&open=AZIzCX26_UrPZE2OH8d2

This code is becoming increasingly bulky and challenging to maintain. In my view, the logic should be moved out to separate "resolver" functions that will handle errors for a specific error code, and then the switch-case construction will map the code to a specific resolver.

E.g.

case ERROR_CODES.budgetNotFoundByFundIdAndFiscalYearId: {
  await handleSomeError(<data>);
  break;
}

src/invoices/InvoiceDetails/utils.js Outdated Show resolved Hide resolved
@@ -126,6 +126,7 @@ describe('InvoiceForm component', () => {
const accountLabel = `${accountNo} (${appSystemNo})`;

expect(container.querySelector('#selected-accounting-code-selection-item')).toHaveTextContent('');
await userEvent.click(screen.getAllByText('stripes-components.selection.controlLabel')[4]);
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there another way to bind to an element other than the index in an array of elements of the same type? This is a fairly brittle method that can break tests when new elements are added.

Applicable for all places in this file

Copy link
Contributor

Choose a reason for hiding this comment

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

And this not resolved as well. Please use specific anchors for selections like screen.getByRole('button', { name: <name> })

src/invoices/InvoiceDetails/utils.js Outdated Show resolved Hide resolved
Copy link
Contributor

@usavkov-epam usavkov-epam left a comment

Choose a reason for hiding this comment

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

Except the comment

@@ -179,6 +139,7 @@ export const handleInvoiceLineErrors = async ({
requestData = [],
responses = [],
showCallout,
ky = noop,
Copy link
Contributor

Choose a reason for hiding this comment

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

noop.get() -> TypeError: noop.get is not a function. ky it's an object, not the function

Copy link
Contributor Author

Choose a reason for hiding this comment

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

updated

Copy link

sonarcloud bot commented Oct 8, 2024

@alisher-epam alisher-epam merged commit 6b8a6c6 into master Oct 8, 2024
6 checks passed
@alisher-epam alisher-epam deleted the UINV-557 branch October 8, 2024 15:01
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.

3 participants