1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-22 19:07:54 +01:00

ux: return better error message if a segment doesn't exist (#4122)

Catch cases where the segment doesn't exist and populate that error
message with more info: it now says that a segment
with <id> doesn't exist instead of just 'No row'.
This commit is contained in:
Thomas Heartman 2023-06-30 11:02:24 +02:00 committed by GitHub
parent 3a14b97fdd
commit 4a4f14f69b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 1 deletions

View File

@ -0,0 +1,30 @@
import { ISegmentStore } from '../types/stores/segment-store';
import dbInit from '../../test/e2e/helpers/database-init';
import getLogger from '../../test/fixtures/no-logger';
import NotFoundError from '../error/notfound-error';
let stores;
let db;
let segmentStore: ISegmentStore;
beforeAll(async () => {
db = await dbInit('segment_store_serial', getLogger);
stores = db.stores;
segmentStore = stores.segmentStore;
});
afterAll(async () => {
await db.destroy();
});
describe('unexpected input handling for get segment', () => {
test("gives a NotFoundError with the ID of the segment if it doesn't exist", async () => {
const id = 123;
try {
await segmentStore.get(id);
} catch (e) {
expect(e instanceof NotFoundError).toBeTruthy();
expect(e.message).toEqual(expect.stringMatching(id.toString()));
}
});
});

View File

@ -195,7 +195,12 @@ export default class SegmentStore implements ISegmentStore {
.from(T.segments)
.where({ id });
return this.mapRow(rows[0]);
const row = rows[0];
if (!row) {
throw new NotFoundError(`No segment exists with ID "${id}"`);
}
return this.mapRow(row);
}
async addToStrategy(id: number, strategyId: string): Promise<void> {