Skip to content

Commit

Permalink
Update error type from UnknownError to NotFoundError in projections t…
Browse files Browse the repository at this point in the history
…ests (#362)
  • Loading branch information
w1am authored Mar 20, 2024
1 parent 3543b83 commit 7cf6ed0
Show file tree
Hide file tree
Showing 10 changed files with 90 additions and 24 deletions.
6 changes: 4 additions & 2 deletions samples/projection-management.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
/** @jest-environment ./src/__test__/utils/enableVersionCheck.ts */

import { v4 as uuid } from "uuid";

import { EventStoreDBClient, isCommandError } from "@eventstore/db-client";
import { createTestNode, delay, jsonTestEvents } from "@test-utils";
import { createTestNode, delay, jsonTestEvents, matchServerVersion, optionalDescribe } from "@test-utils";

describe("[sample] projection-management", () => {
optionalDescribe(matchServerVersion`<=23.10`)("[sample] projection-management", () => {
const noop = (...args: unknown[]) => {
// do nothing
};
Expand Down
15 changes: 11 additions & 4 deletions src/__test__/projections/deleteProjection.test.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import { createTestNode } from "@test-utils";
/** @jest-environment ./src/__test__/utils/enableVersionCheck.ts */

import { createTestNode, matchServerVersion } from "@test-utils";

import {
EventStoreDBClient,
RUNNING,
DELETING,
STOPPED,
ABORTED,
NotFoundError,
UnknownError,
} from "@eventstore/db-client";

Expand Down Expand Up @@ -80,17 +83,21 @@ describe("deleteProjection", () => {
expect(afterDetails.projectionStatus).toBe(DELETING);
} catch (error) {
// projection is already deleted
expect(error).toBeInstanceOf(UnknownError); // https://github.com/EventStore/EventStore/issues/2732
expect(error).toBeInstanceOf(
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
}
});

describe("errors", () => {
test("projection doesnt exist", async () => {
test.only("projection doesnt exist", async () => {
const PROJECTION_NAME = "doesnt exist";

await expect(
client.deleteProjection(PROJECTION_NAME)
).rejects.toThrowError(UnknownError); // https://github.com/EventStore/EventStore/issues/2732
).rejects.toThrowError(
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
});
});
});
9 changes: 7 additions & 2 deletions src/__test__/projections/disableProjection.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { createTestNode, matchServerVersion } from "@test-utils";
import {
ABORTED,
EventStoreDBClient,
NotFoundError,
RUNNING,
STOPPED,
UnknownError,
Expand Down Expand Up @@ -71,7 +72,9 @@ describe("disable / abort", () => {

await expect(
client.disableProjection(PROJECTION_NAME)
).rejects.toThrowError(UnknownError); // https://github.com/EventStore/EventStore/issues/2732
).rejects.toThrowError(
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
});
});

Expand Down Expand Up @@ -107,7 +110,9 @@ describe("disable / abort", () => {

await expect(
client.abortProjection(PROJECTION_NAME)
).rejects.toThrowError(UnknownError); // https://github.com/EventStore/EventStore/issues/2732
).rejects.toThrowError(
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
});
});
});
Expand Down
5 changes: 3 additions & 2 deletions src/__test__/projections/enableProjection.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { createTestNode, matchServerVersion } from "@test-utils";
import {
ABORTED,
EventStoreDBClient,
NotFoundError,
RUNNING,
STOPPED,
UnknownError,
Expand Down Expand Up @@ -69,7 +70,7 @@ describe("enableProjection", () => {
const PROJECTION_NAME = "doesnt exist";

await expect(client.enableProjection(PROJECTION_NAME)).rejects.toThrowError(
UnknownError
); // https://github.com/EventStore/EventStore/issues/2732
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
});
});
16 changes: 13 additions & 3 deletions src/__test__/projections/getProjectionResult.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
import { createTestNode, delay, jsonTestEvents } from "@test-utils";
/** @jest-environment ./src/__test__/utils/enableVersionCheck.ts */

import {
createTestNode,
delay,
jsonTestEvents,
matchServerVersion,
} from "@test-utils";

import {
UnknownError,
RUNNING,
EventStoreDBClient,
jsonEvent,
NotFoundError,
UnknownError,
} from "@eventstore/db-client";

describe("getProjectionResult", () => {
Expand Down Expand Up @@ -162,7 +170,9 @@ describe("getProjectionResult", () => {

await expect(
client.getProjectionResult(PROJECTION_NAME)
).rejects.toThrowError(UnknownError); // https://github.com/EventStore/EventStore/issues/2732
).rejects.toThrowError(
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
});
});
});
14 changes: 12 additions & 2 deletions src/__test__/projections/getProjectionState.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
import { createTestNode, delay, jsonTestEvents } from "@test-utils";
/** @jest-environment ./src/__test__/utils/enableVersionCheck.ts */

import {
createTestNode,
delay,
jsonTestEvents,
matchServerVersion,
} from "@test-utils";

import {
EventStoreDBClient,
jsonEvent,
NotFoundError,
RUNNING,
UnknownError,
} from "@eventstore/db-client";
Expand Down Expand Up @@ -161,6 +169,8 @@ describe("getProjectionState", () => {

await expect(
client.getProjectionState(PROJECTION_NAME)
).rejects.toThrowError(UnknownError); // https://github.com/EventStore/EventStore/issues/2732
).rejects.toThrowError(
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
});
});
14 changes: 11 additions & 3 deletions src/__test__/projections/getProjectionStatus.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import { createTestNode } from "@test-utils";
/** @jest-environment ./src/__test__/utils/enableVersionCheck.ts */

import { EventStoreDBClient, UnknownError } from "@eventstore/db-client";
import { createTestNode, matchServerVersion } from "@test-utils";

import {
EventStoreDBClient,
NotFoundError,
UnknownError,
} from "@eventstore/db-client";

describe("getProjectionStatus", () => {
const node = createTestNode();
Expand Down Expand Up @@ -48,7 +54,9 @@ describe("getProjectionStatus", () => {
const REQUESTED_NAME = "some-non-existant-projection";
await expect(
client.getProjectionStatus(REQUESTED_NAME)
).rejects.toThrowError(UnknownError); // https://github.com/EventStore/EventStore/issues/2732
).rejects.toThrowError(
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
});
});
});
14 changes: 11 additions & 3 deletions src/__test__/projections/resetProjection.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import { createTestNode } from "@test-utils";
/** @jest-environment ./src/__test__/utils/enableVersionCheck.ts */

import { EventStoreDBClient, UnknownError } from "@eventstore/db-client";
import { createTestNode, matchServerVersion } from "@test-utils";

import {
EventStoreDBClient,
NotFoundError,
UnknownError,
} from "@eventstore/db-client";

describe("resetProjection", () => {
const node = createTestNode();
Expand Down Expand Up @@ -41,7 +47,9 @@ describe("resetProjection", () => {
const PROJECTION_NAME = "doesnt exist";
await expect(
client.resetProjection(PROJECTION_NAME)
).rejects.toThrowError(UnknownError); // https://github.com/EventStore/EventStore/issues/2732
).rejects.toThrowError(
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
});
});
});
14 changes: 11 additions & 3 deletions src/__test__/projections/updateProjection.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import { createTestNode } from "@test-utils";
/** @jest-environment ./src/__test__/utils/enableVersionCheck.ts */

import { EventStoreDBClient, UnknownError } from "@eventstore/db-client";
import { createTestNode, matchServerVersion } from "@test-utils";

import {
EventStoreDBClient,
NotFoundError,
UnknownError,
} from "@eventstore/db-client";

describe("resetProjection", () => {
const node = createTestNode();
Expand Down Expand Up @@ -62,7 +68,9 @@ describe("resetProjection", () => {
const PROJECTION_NAME = "doesnt exist";
await expect(
client.updateProjection(PROJECTION_NAME, projection)
).rejects.toThrowError(UnknownError); // https://github.com/EventStore/EventStore/issues/2732
).rejects.toThrowError(
matchServerVersion`<=23.10` ? UnknownError : NotFoundError
);
});
});
});
7 changes: 7 additions & 0 deletions src/utils/CommandError.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export enum ErrorType {
NOT_LEADER = "not-leader",
STREAM_NOT_FOUND = "stream-not-found",
NO_STREAM = "no-stream",
NOT_FOUND = "not-found",
ACCESS_DENIED = "access-denied",
INVALID_ARGUMENT = "invalid-argument",
INVALID_TRANSACTION = "invalid-transaction",
Expand Down Expand Up @@ -71,6 +72,10 @@ export class CancelledError extends CommandErrorBase {
public type: ErrorType.CANCELLED = ErrorType.CANCELLED;
}

export class NotFoundError extends CommandErrorBase {
public type: ErrorType.NOT_FOUND = ErrorType.NOT_FOUND;
}

export class UnknownError extends CommandErrorBase {
public type: ErrorType.UNKNOWN = ErrorType.UNKNOWN;
}
Expand Down Expand Up @@ -479,6 +484,8 @@ export const convertToCommandError = (error: Error): CommandError | Error => {
return new UnavailableError(error);
case StatusCode.UNAUTHENTICATED:
return new AccessDeniedError(error);
case StatusCode.NOT_FOUND:
return new NotFoundError(error);
case StatusCode.CANCELLED: {
if (isClientCancellationError(error)) break;
return new CancelledError(error);
Expand Down

0 comments on commit 7cf6ed0

Please sign in to comment.