fix(ui): keep a Slack upstream fault inside the action's answer

- Await the refusal mapping so a server fault becomes the action's own
  error instead of escaping the catch
- Expect the refusal code the actions now carry in their unit tests
This commit is contained in:
Pablo F.G
2026-08-18 17:46:57 +02:00
parent cbc6d23444
commit ac3dbd1959
2 changed files with 14 additions and 5 deletions
+5 -2
View File
@@ -456,7 +456,7 @@ describe("getSlackChannels", () => {
const result = await getSlackChannels(SLACK_INTEGRATION_ID);
expect(result).toEqual({ error: RATE_LIMITED_MESSAGE });
expect(result).toEqual({ error: RATE_LIMITED_MESSAGE, code: null });
});
});
@@ -633,6 +633,8 @@ describe("sendSlackTestMessage", () => {
expect(result).toEqual({
error: SLACK_ERROR_MESSAGES[SLACK_ERROR_CODE.NOT_IN_CHANNEL],
// The reason travels on as the class it is, not only as its sentence.
code: SLACK_ERROR_CODE.NOT_IN_CHANNEL,
});
});
@@ -730,7 +732,8 @@ describe.each(COPY_ONLY_ACTIONS)("$name", ({ call }) => {
expect(captureExceptionMock).not.toHaveBeenCalled();
expect(captureMessageMock).not.toHaveBeenCalled();
expect(result).toEqual({ error: refusal.expected });
// `code` travels alongside the copy; none of these refusals names one.
expect(result).toEqual({ error: refusal.expected, code: null });
});
});
+9 -3
View File
@@ -452,7 +452,9 @@ export const setSlackDefaultChannel = async (
});
if (!response.ok) {
return refusalFrom(
// Awaited inside the `try`: unawaited, a 5xx's rejection would skip
// this `catch`.
return await refusalFrom(
response,
`Unable to save the destination channel: ${response.statusText}`,
);
@@ -509,7 +511,9 @@ export const sendSlackTestMessage = async (
const response = await fetch(url.toString(), { method: "POST", headers });
if (!response.ok) {
return refusalFrom(
// Awaited inside the `try`: unawaited, a 5xx's rejection would skip
// this `catch`.
return await refusalFrom(
response,
`Unable to send the test message: ${response.statusText}`,
);
@@ -610,7 +614,9 @@ export const disconnectSlackIntegration = async (
const response = await fetch(url.toString(), { method: "DELETE", headers });
if (!response.ok) {
return refusalFrom(
// Awaited inside the `try`: unawaited, a 5xx's rejection would skip
// this `catch`.
return await refusalFrom(
response,
`Unable to disconnect the Slack workspace: ${response.statusText}`,
);