From 0167b4cf49b662160432e0fa3df41fa503ae40f0 Mon Sep 17 00:00:00 2001 From: Artem Niehrieiev Date: Mon, 27 Oct 2025 13:10:08 +0000 Subject: [PATCH 1/2] test: add validation for recreating table categories and ensure updated categories are returned --- .../saas-tests/table-categories-e2e.test.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/backend/test/ava-tests/saas-tests/table-categories-e2e.test.ts b/backend/test/ava-tests/saas-tests/table-categories-e2e.test.ts index 2bdf2201d..489d47c73 100644 --- a/backend/test/ava-tests/saas-tests/table-categories-e2e.test.ts +++ b/backend/test/ava-tests/saas-tests/table-categories-e2e.test.ts @@ -267,6 +267,35 @@ test.serial(`${currentTest} find table categories`, async (t) => { t.is(findTableCategoriesRO[2].category_color, '#3357FF'); t.is(findTableCategoriesRO[2].category_id, 'cat-003'); t.deepEqual(findTableCategoriesRO[2].tables, [firstTesTableName, secondTesTableName]); + + // should recreate categories on the new request + const recreateTableCategoriesResponse = await request(app.getHttpServer()) + .put(`/table-categories/${createConnectionRO.id}`) + .send([categoriesDTO[0]]) + .set('Cookie', firstUserToken) + .set('Content-Type', 'application/json') + .set('Accept', 'application/json'); + + const recreateTableCategoriesRO = JSON.parse(recreateTableCategoriesResponse.text); + + t.is(recreateTableCategoriesResponse.status, 200); + + // get should return updated categories + const getAfterRecreateTableCategoriesResponse = await request(app.getHttpServer()) + .get(`/table-categories/${createConnectionRO.id}`) + .set('Cookie', firstUserToken) + .set('Content-Type', 'application/json') + .set('Accept', 'application/json'); + + const getAfterRecreateTableCategoriesRO = JSON.parse(getAfterRecreateTableCategoriesResponse.text); + + t.is(getAfterRecreateTableCategoriesResponse.status, 200); + + t.is(getAfterRecreateTableCategoriesRO.length, 1); + t.is(getAfterRecreateTableCategoriesRO[0].category_name, 'Category 1'); + t.is(getAfterRecreateTableCategoriesRO[0].category_color, '#FF5733'); + t.is(getAfterRecreateTableCategoriesRO[0].category_id, 'cat-001'); + t.deepEqual(getAfterRecreateTableCategoriesRO[0].tables, [firstTesTableName]); } catch (e) { console.error(e); t.fail(); From deccfabdd4acae0f1616c4262a222a8eb282217f Mon Sep 17 00:00:00 2001 From: Artem Niehrieiev Date: Tue, 28 Oct 2025 08:26:34 +0000 Subject: [PATCH 2/2] refactor: update createTableCategories use case to support transaction handling --- .../table-categories/table-categories.controller.ts | 3 ++- .../use-cases/table-categories-use-cases.interface.ts | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/src/entities/table-categories/table-categories.controller.ts b/backend/src/entities/table-categories/table-categories.controller.ts index 83e562693..1c0787dc5 100644 --- a/backend/src/entities/table-categories/table-categories.controller.ts +++ b/backend/src/entities/table-categories/table-categories.controller.ts @@ -10,6 +10,7 @@ import { CreateOrUpdateTableCategoriesDS } from './data-sctructures/create-or-up import { CreateTableCategoryDto } from './dto/create-table-category.dto.js'; import { FoundTableCategoryRo } from './dto/found-table-category.ro.js'; import { ICreateTableCategories, IFindTableCategories } from './use-cases/table-categories-use-cases.interface.js'; +import { InTransactionEnum } from '../../enums/in-transaction.enum.js'; @UseInterceptors(SentryInterceptor) @Controller('table-categories') @@ -45,7 +46,7 @@ export class TableCategoriesController { master_password: masterPwd, table_categories: requestBody, }; - return await this.createTableCategoriesUseCase.execute(inputData); + return await this.createTableCategoriesUseCase.execute(inputData, InTransactionEnum.ON); } @ApiOperation({ summary: 'Find table categories' }) diff --git a/backend/src/entities/table-categories/use-cases/table-categories-use-cases.interface.ts b/backend/src/entities/table-categories/use-cases/table-categories-use-cases.interface.ts index 4823a7cc6..5f2856eb8 100644 --- a/backend/src/entities/table-categories/use-cases/table-categories-use-cases.interface.ts +++ b/backend/src/entities/table-categories/use-cases/table-categories-use-cases.interface.ts @@ -1,8 +1,12 @@ +import { InTransactionEnum } from '../../../enums/in-transaction.enum.js'; import { CreateOrUpdateTableCategoriesDS } from '../data-sctructures/create-or-update-table-categories.ds.js'; import { FoundTableCategoryRo } from '../dto/found-table-category.ro.js'; export interface ICreateTableCategories { - execute(inputData: CreateOrUpdateTableCategoriesDS): Promise>; + execute( + inputData: CreateOrUpdateTableCategoriesDS, + inTransaction: InTransactionEnum, + ): Promise>; } export interface IFindTableCategories {