Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions src/routes/AgreementCreateRoute/AgreementCreateRoute.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
useClaim,
useGetAccess
} from '@folio/stripes-erm-components';
import { parseErrorResponse } from '@k-int/stripes-kint-components';

import queryString from 'query-string';
import { splitRelatedAgreements } from '../utilities/processRelatedAgreements';
Expand Down Expand Up @@ -128,13 +129,24 @@
)
});
})
.catch((claimError) => {
.catch(async (claimError) => {
let errorMessage = claimError.message;

if (claimError.response) {
try {
const errorResp = await parseErrorResponse(claimError.response);
errorMessage = errorResp?.message || errorMessage;
} catch (parseError) {
console.error('Error parsing response:', parseError);

Check warning on line 140 in src/routes/AgreementCreateRoute/AgreementCreateRoute.js

View workflow job for this annotation

GitHub Actions / ui / Install and lint / Install and lint

Unexpected console statement
}
}

callout.sendCallout({
type: 'error',
message: (
<FormattedMessage
id="ui-agreements.agreements.claimPolicies.update.error.callout"
values={{ name, error: claimError.message }}
values={{ name, error: errorMessage }}
/>
),
timeout: 0,
Expand Down
33 changes: 33 additions & 0 deletions src/routes/AgreementCreateRoute/AgreementCreateRoute.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,39 @@ describe('AgreementCreateRoute', () => {
});
});

describe('handling claim errors', () => {
beforeEach(() => {
mockKyJson
.mockResolvedValueOnce({ id: 'my-agreement-id', name: 'Test Agreement' })
.mockRejectedValueOnce({
message: 'Something went wrong',
response: {
json: async () => {
throw new Error('Invalid JSON');
},
},
});

renderComponent = renderWithIntl(
<MemoryRouter>
<AgreementCreateRoute {...data} />
</MemoryRouter>,
translationsProperties
);
});

test('clicking the submit button shows error callouts', async () => {
await waitFor(async () => {
await Button('SubmitButton').click();
});

await waitFor(async () => {
const { getByText } = renderComponent;
expect(getByText(/Acquisition units for agreement {name} were not updated: {error}/)).toBeInTheDocument();
});
});
});

describe('rendering loading view', () => {
beforeEach(() => {
useAddFromBasket.mockImplementation(() => ({
Expand Down