simpledi-app-generator 0.0.12 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -122,11 +122,11 @@ import { authGuard } from '@root/middlewares/authGuard';
|
|
|
122
122
|
import { roleGuard } from '@root/middlewares/roleGuard';
|
|
123
123
|
import { AdminRoleEnum } from '@root/lib';
|
|
124
124
|
|
|
125
|
-
const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
126
|
-
const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}';
|
|
125
|
+
export const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
126
|
+
export const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}';
|
|
127
127
|
|
|
128
128
|
${toCamelCase(useCaseName)}Routes.post(
|
|
129
|
-
|
|
129
|
+
'/',
|
|
130
130
|
authGuard(),
|
|
131
131
|
roleGuard([AdminRoleEnum.ADMIN]),
|
|
132
132
|
async (c) => {
|
|
@@ -252,11 +252,11 @@ import { authGuard } from '@root/middlewares/authGuard';
|
|
|
252
252
|
import { roleGuard } from '@root/middlewares/roleGuard';
|
|
253
253
|
import { AdminRoleEnum } from '@root/lib';
|
|
254
254
|
|
|
255
|
-
const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
256
|
-
const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}/:id';
|
|
255
|
+
export const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
256
|
+
export const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}/:id';
|
|
257
257
|
|
|
258
258
|
${toCamelCase(useCaseName)}Routes.put(
|
|
259
|
-
|
|
259
|
+
'/',
|
|
260
260
|
authGuard(),
|
|
261
261
|
roleGuard([AdminRoleEnum.ADMIN]),
|
|
262
262
|
async (c) => {
|
|
@@ -368,10 +368,10 @@ import { inject } from '@kanian77/simple-di';
|
|
|
368
368
|
import { ${useCaseName}, ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN } from './${useCaseName}';
|
|
369
369
|
import { ${useCaseName}Failure } from './outputs/${useCaseName}Failure';
|
|
370
370
|
|
|
371
|
-
const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
372
|
-
const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}/:id';
|
|
371
|
+
export const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
372
|
+
export const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}/:id';
|
|
373
373
|
|
|
374
|
-
${toCamelCase(useCaseName)}Routes.get(
|
|
374
|
+
${toCamelCase(useCaseName)}Routes.get('/', async (c) => {
|
|
375
375
|
try {
|
|
376
376
|
const id = c.req.param('id');
|
|
377
377
|
const useCase = inject<${useCaseName}>(${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN);
|
|
@@ -469,10 +469,10 @@ import { inject } from '@kanian77/simple-di';
|
|
|
469
469
|
import { ${useCaseName}, ${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN } from './${useCaseName}';
|
|
470
470
|
import { ${useCaseName}Failure } from './outputs/${useCaseName}Failure';
|
|
471
471
|
|
|
472
|
-
const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
473
|
-
const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}';
|
|
472
|
+
export const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
473
|
+
export const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}';
|
|
474
474
|
|
|
475
|
-
${toCamelCase(useCaseName)}Routes.get(
|
|
475
|
+
${toCamelCase(useCaseName)}Routes.get('/', async (c) => {
|
|
476
476
|
try {
|
|
477
477
|
const useCase = inject<${useCaseName}>(${toUpperSnakeCase(useCaseName)}_USE_CASE_TOKEN);
|
|
478
478
|
const result = await useCase.execute();
|
|
@@ -572,11 +572,11 @@ import { authGuard } from '@root/middlewares/authGuard';
|
|
|
572
572
|
import { roleGuard } from '@root/middlewares/roleGuard';
|
|
573
573
|
import { AdminRoleEnum } from '@root/lib';
|
|
574
574
|
|
|
575
|
-
const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
576
|
-
const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}/:id';
|
|
575
|
+
export const ${toCamelCase(useCaseName)}Routes = new Hono();
|
|
576
|
+
export const ${toCamelCase(useCaseName)}RoutesPath = '/${pluralKebab}/:id';
|
|
577
577
|
|
|
578
578
|
${toCamelCase(useCaseName)}Routes.delete(
|
|
579
|
-
|
|
579
|
+
'/',
|
|
580
580
|
authGuard(),
|
|
581
581
|
roleGuard([AdminRoleEnum.ADMIN]),
|
|
582
582
|
async (c) => {
|
|
@@ -699,95 +699,105 @@ async function registerInUseCaseModule(srcDir, config) {
|
|
|
699
699
|
async function generateCreateE2ETest(baseDir, config) {
|
|
700
700
|
const { EntityName, entityName, kebabName, pluralKebab } = config;
|
|
701
701
|
const useCaseDir = join(baseDir, `create-${kebabName}`);
|
|
702
|
-
const testContent = `import { afterAll, beforeAll, describe, expect, it } from 'bun:test';
|
|
703
|
-
import {
|
|
704
|
-
import {
|
|
705
|
-
import { UseCaseModule } from '@root/use-case/UseCaseModule';
|
|
706
|
-
import { getConfigModule } from 'config/getConfigModule';
|
|
707
|
-
import { getDbModule } from 'db/getDbModule';
|
|
708
|
-
import { CoreModule } from '@root/core/CoreModule';
|
|
709
|
-
import { DB_SERVICE, type DbService } from 'db/DbService';
|
|
710
|
-
import { APP, AppModule } from '@root/AppModule';
|
|
711
|
-
import type { Hono } from 'hono';
|
|
702
|
+
const testContent = `import { afterAll, afterEach, beforeAll, describe, expect, it } from 'bun:test';
|
|
703
|
+
import { inject, bootstrap, Module } from '@kanian77/simple-di';
|
|
704
|
+
import { getDb } from 'db/getDb';
|
|
712
705
|
import * as schema from '@root/schema';
|
|
713
|
-
import {
|
|
714
|
-
|
|
715
|
-
|
|
706
|
+
import {
|
|
707
|
+
createOneSignedUpUser,
|
|
708
|
+
deleteCreatedSignedUsers,
|
|
709
|
+
} from '@root/lib/functions/test-related/createSignedUpUser';
|
|
710
|
+
import {
|
|
711
|
+
create${EntityName}Routes,
|
|
712
|
+
create${EntityName}RoutesPath,
|
|
713
|
+
} from './create${EntityName}Routes';
|
|
714
|
+
import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
|
|
715
|
+
import { UserModule } from '@root/core/user/UserModule';
|
|
716
|
+
import { Create${EntityName}Module } from './Create${EntityName}';
|
|
717
|
+
import { getDbModule } from 'db/getDbModule';
|
|
718
|
+
import { getConfigModule } from 'config/getConfigModule';
|
|
719
|
+
import { EnvFileNames } from '@root/lib';
|
|
720
|
+
import { StatusCodes } from 'http-status-codes';
|
|
721
|
+
import { getNewTestServer } from '@root/lib/functions/test-related/getNewTestServer';
|
|
716
722
|
import { USER_REPOSITORY_INTERFACE } from '@root/core/user/IUserRepository';
|
|
717
723
|
import type { UserRepository } from '@root/core/user/UserRepository';
|
|
718
|
-
import {
|
|
724
|
+
import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
|
|
725
|
+
import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
|
|
719
726
|
|
|
720
|
-
describe('Create${EntityName}
|
|
721
|
-
let dbService: DbService;
|
|
722
|
-
let server: TestServer;
|
|
723
|
-
let app: Hono;
|
|
727
|
+
describe('Create${EntityName} Use Case', () => {
|
|
724
728
|
let userRepository: UserRepository;
|
|
725
729
|
|
|
730
|
+
const clear = async (db: ReturnType<typeof getDb>) => {
|
|
731
|
+
await db.delete(schema.${entityName}Schema).execute();
|
|
732
|
+
await db.delete(schema.userSchema).execute();
|
|
733
|
+
};
|
|
734
|
+
|
|
726
735
|
beforeAll(async () => {
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
dbService = inject<DbService>(DB_SERVICE);
|
|
739
|
-
app = inject<Hono>(APP);
|
|
736
|
+
bootstrap(
|
|
737
|
+
new Module({
|
|
738
|
+
imports: [
|
|
739
|
+
getConfigModule(EnvFileNames.TESTING),
|
|
740
|
+
getDbModule(EnvFileNames.TESTING),
|
|
741
|
+
UserModule,
|
|
742
|
+
${EntityName}Module,
|
|
743
|
+
Create${EntityName}Module,
|
|
744
|
+
],
|
|
745
|
+
}),
|
|
746
|
+
);
|
|
740
747
|
userRepository = inject(USER_REPOSITORY_INTERFACE);
|
|
741
|
-
server = await getTestServer(app);
|
|
742
748
|
});
|
|
743
749
|
|
|
744
|
-
|
|
745
|
-
await
|
|
750
|
+
afterEach(async () => {
|
|
751
|
+
await getDb().delete(schema.${entityName}Schema).execute();
|
|
746
752
|
await deleteCreatedSignedUsers(userRepository);
|
|
747
753
|
});
|
|
748
754
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
method: 'POST',
|
|
752
|
-
body: JSON.stringify({ /* TODO: Add valid payload */ }),
|
|
753
|
-
headers: { 'Content-Type': 'application/json' },
|
|
754
|
-
});
|
|
755
|
-
expect(req.status).toBe(401);
|
|
755
|
+
afterAll(async () => {
|
|
756
|
+
await clear(getDb());
|
|
756
757
|
});
|
|
757
758
|
|
|
758
|
-
it('
|
|
759
|
-
const { token } = await createOneSignedUpUser(userRepository, {
|
|
759
|
+
it('should create an entity successfully', async () => {
|
|
760
|
+
const { user, token } = await createOneSignedUpUser(userRepository, {
|
|
760
761
|
userType: UserTypeEnum.ADMIN,
|
|
761
|
-
role:
|
|
762
|
+
role: AdminRoleEnum.ADMIN,
|
|
762
763
|
});
|
|
763
764
|
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
createdBy: 'fake-malicious-id'
|
|
768
|
-
};
|
|
769
|
-
|
|
770
|
-
const req = await server.client.request('/${pluralKebab}', {
|
|
771
|
-
method: 'POST',
|
|
772
|
-
body: JSON.stringify(maliciousPayload),
|
|
773
|
-
headers: {
|
|
774
|
-
'Content-Type': 'application/json',
|
|
775
|
-
Authorization: \`Bearer \${token}\`,
|
|
765
|
+
const server = getNewTestServer({
|
|
766
|
+
[create${EntityName}RoutesPath]: {
|
|
767
|
+
handler: create${EntityName}Routes,
|
|
776
768
|
},
|
|
777
769
|
});
|
|
778
770
|
|
|
779
|
-
|
|
780
|
-
const
|
|
771
|
+
const payload = { /* TODO: valid payload */ };
|
|
772
|
+
const response = await server
|
|
773
|
+
.request()
|
|
774
|
+
.post(create${EntityName}RoutesPath)
|
|
775
|
+
.set('Authorization', \`Bearer \${token}\`)
|
|
776
|
+
.send(payload);
|
|
781
777
|
|
|
782
|
-
|
|
783
|
-
|
|
778
|
+
expect(response.status).toBe(StatusCodes.CREATED);
|
|
779
|
+
const body = response.body as any;
|
|
780
|
+
expect(body.result).toBeDefined();
|
|
781
|
+
expect(body.result.createdBy).toBe(user.id);
|
|
784
782
|
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
783
|
+
await server.close();
|
|
784
|
+
});
|
|
785
|
+
|
|
786
|
+
it('should return 401 Unauthorized without auth block', async () => {
|
|
787
|
+
const server = getNewTestServer({
|
|
788
|
+
[create${EntityName}RoutesPath]: {
|
|
789
|
+
handler: create${EntityName}Routes,
|
|
790
|
+
},
|
|
788
791
|
});
|
|
789
|
-
|
|
790
|
-
|
|
792
|
+
|
|
793
|
+
const response = await server
|
|
794
|
+
.request()
|
|
795
|
+
.post(create${EntityName}RoutesPath)
|
|
796
|
+
.send({ /* TODO: valid payload */ });
|
|
797
|
+
|
|
798
|
+
expect(response.status).toBe(StatusCodes.UNAUTHORIZED);
|
|
799
|
+
|
|
800
|
+
await server.close();
|
|
791
801
|
});
|
|
792
802
|
});
|
|
793
803
|
`;
|
|
@@ -796,94 +806,88 @@ describe('Create${EntityName} e2e', () => {
|
|
|
796
806
|
async function generateUpdateE2ETest(baseDir, config) {
|
|
797
807
|
const { EntityName, entityName, kebabName, pluralKebab } = config;
|
|
798
808
|
const useCaseDir = join(baseDir, `update-${kebabName}`);
|
|
799
|
-
const testContent = `import { afterAll, beforeAll, describe, expect, it } from 'bun:test';
|
|
800
|
-
import {
|
|
801
|
-
import {
|
|
802
|
-
import { UseCaseModule } from '@root/use-case/UseCaseModule';
|
|
803
|
-
import { getConfigModule } from 'config/getConfigModule';
|
|
804
|
-
import { getDbModule } from 'db/getDbModule';
|
|
805
|
-
import { CoreModule } from '@root/core/CoreModule';
|
|
806
|
-
import { DB_SERVICE, type DbService } from 'db/DbService';
|
|
807
|
-
import { APP, AppModule } from '@root/AppModule';
|
|
808
|
-
import type { Hono } from 'hono';
|
|
809
|
+
const testContent = `import { afterAll, afterEach, beforeAll, describe, expect, it } from 'bun:test';
|
|
810
|
+
import { inject, bootstrap, Module } from '@kanian77/simple-di';
|
|
811
|
+
import { getDb } from 'db/getDb';
|
|
809
812
|
import * as schema from '@root/schema';
|
|
810
|
-
import {
|
|
811
|
-
|
|
812
|
-
|
|
813
|
+
import {
|
|
814
|
+
createOneSignedUpUser,
|
|
815
|
+
deleteCreatedSignedUsers,
|
|
816
|
+
} from '@root/lib/functions/test-related/createSignedUpUser';
|
|
817
|
+
import {
|
|
818
|
+
update${EntityName}Routes,
|
|
819
|
+
update${EntityName}RoutesPath,
|
|
820
|
+
} from './update${EntityName}Routes';
|
|
821
|
+
import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
|
|
822
|
+
import { UserModule } from '@root/core/user/UserModule';
|
|
823
|
+
import { Update${EntityName}Module } from './Update${EntityName}';
|
|
824
|
+
import { getDbModule } from 'db/getDbModule';
|
|
825
|
+
import { getConfigModule } from 'config/getConfigModule';
|
|
826
|
+
import { EnvFileNames } from '@root/lib';
|
|
827
|
+
import { StatusCodes } from 'http-status-codes';
|
|
828
|
+
import { getNewTestServer } from '@root/lib/functions/test-related/getNewTestServer';
|
|
813
829
|
import { USER_REPOSITORY_INTERFACE } from '@root/core/user/IUserRepository';
|
|
814
830
|
import type { UserRepository } from '@root/core/user/UserRepository';
|
|
815
|
-
import {
|
|
831
|
+
import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
|
|
832
|
+
import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
|
|
816
833
|
|
|
817
|
-
describe('Update${EntityName}
|
|
818
|
-
let dbService: DbService;
|
|
819
|
-
let server: TestServer;
|
|
820
|
-
let app: Hono;
|
|
821
|
-
let targetId: string = '00000000-0000-0000-0000-000000000000';
|
|
834
|
+
describe('Update${EntityName} Use Case', () => {
|
|
822
835
|
let userRepository: UserRepository;
|
|
823
836
|
|
|
837
|
+
const clear = async (db: ReturnType<typeof getDb>) => {
|
|
838
|
+
await db.delete(schema.${entityName}Schema).execute();
|
|
839
|
+
await db.delete(schema.userSchema).execute();
|
|
840
|
+
};
|
|
841
|
+
|
|
824
842
|
beforeAll(async () => {
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
dbService = inject<DbService>(DB_SERVICE);
|
|
837
|
-
app = inject<Hono>(APP);
|
|
843
|
+
bootstrap(
|
|
844
|
+
new Module({
|
|
845
|
+
imports: [
|
|
846
|
+
getConfigModule(EnvFileNames.TESTING),
|
|
847
|
+
getDbModule(EnvFileNames.TESTING),
|
|
848
|
+
UserModule,
|
|
849
|
+
${EntityName}Module,
|
|
850
|
+
Update${EntityName}Module,
|
|
851
|
+
],
|
|
852
|
+
}),
|
|
853
|
+
);
|
|
838
854
|
userRepository = inject(USER_REPOSITORY_INTERFACE);
|
|
839
|
-
server = await getTestServer(app);
|
|
840
|
-
|
|
841
|
-
// TODO: Seed a target entity here and save targetId
|
|
842
855
|
});
|
|
843
856
|
|
|
844
|
-
|
|
845
|
-
await
|
|
857
|
+
afterEach(async () => {
|
|
858
|
+
await getDb().delete(schema.${entityName}Schema).execute();
|
|
846
859
|
await deleteCreatedSignedUsers(userRepository);
|
|
847
860
|
});
|
|
848
861
|
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
method: 'PUT',
|
|
852
|
-
body: JSON.stringify({ /* TODO: valid update payload */ }),
|
|
853
|
-
headers: { 'Content-Type': 'application/json' },
|
|
854
|
-
});
|
|
855
|
-
expect(req.status).toBe(401);
|
|
862
|
+
afterAll(async () => {
|
|
863
|
+
await clear(getDb());
|
|
856
864
|
});
|
|
857
865
|
|
|
858
|
-
it('
|
|
859
|
-
const { token } = await createOneSignedUpUser(userRepository, {
|
|
866
|
+
it('should update an entity successfully', async () => {
|
|
867
|
+
const { user, token } = await createOneSignedUpUser(userRepository, {
|
|
860
868
|
userType: UserTypeEnum.ADMIN,
|
|
861
|
-
role:
|
|
869
|
+
role: AdminRoleEnum.ADMIN,
|
|
862
870
|
});
|
|
863
871
|
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
updatedBy: 'hacker-id' // Should be discarded
|
|
867
|
-
};
|
|
872
|
+
// TODO: Create an entity here first to get an ID
|
|
873
|
+
const targetId = '00000000-0000-0000-0000-000000000000';
|
|
868
874
|
|
|
869
|
-
const
|
|
870
|
-
|
|
871
|
-
body: JSON.stringify(payload),
|
|
872
|
-
headers: {
|
|
873
|
-
'Content-Type': 'application/json',
|
|
874
|
-
Authorization: \`Bearer \${token}\`,
|
|
875
|
-
},
|
|
875
|
+
const server = getNewTestServer({
|
|
876
|
+
[update${EntityName}RoutesPath]: { handler: update${EntityName}Routes },
|
|
876
877
|
});
|
|
877
878
|
|
|
878
|
-
|
|
879
|
-
const
|
|
879
|
+
const pathReplaced = update${EntityName}RoutesPath.replace(':id', targetId);
|
|
880
|
+
const response = await server
|
|
881
|
+
.request()
|
|
882
|
+
.put(pathReplaced)
|
|
883
|
+
.set('Authorization', \`Bearer \${token}\`)
|
|
884
|
+
.send({ /* TODO: valid update payload */ });
|
|
880
885
|
|
|
881
|
-
expect(
|
|
886
|
+
expect(response.status).toBe(StatusCodes.OK);
|
|
887
|
+
const body = response.body as any;
|
|
888
|
+
expect(body.result.updatedBy).toBe(user.id);
|
|
882
889
|
|
|
883
|
-
|
|
884
|
-
where: eq(schema.${entityName}Schema.id, targetId)
|
|
885
|
-
});
|
|
886
|
-
expect(row!.updatedBy).not.toBe('hacker-id');
|
|
890
|
+
await server.close();
|
|
887
891
|
});
|
|
888
892
|
});
|
|
889
893
|
`;
|
|
@@ -892,77 +896,87 @@ describe('Update${EntityName} e2e', () => {
|
|
|
892
896
|
async function generateGetE2ETest(baseDir, config) {
|
|
893
897
|
const { EntityName, entityName, kebabName, pluralKebab } = config;
|
|
894
898
|
const useCaseDir = join(baseDir, `get-${kebabName}`);
|
|
895
|
-
const testContent = `import { afterAll, beforeAll, describe, expect, it } from 'bun:test';
|
|
896
|
-
import {
|
|
897
|
-
import {
|
|
898
|
-
import { UseCaseModule } from '@root/use-case/UseCaseModule';
|
|
899
|
-
import { getConfigModule } from 'config/getConfigModule';
|
|
900
|
-
import { getDbModule } from 'db/getDbModule';
|
|
901
|
-
import { CoreModule } from '@root/core/CoreModule';
|
|
902
|
-
import { DB_SERVICE, type DbService } from 'db/DbService';
|
|
903
|
-
import { APP, AppModule } from '@root/AppModule';
|
|
904
|
-
import type { Hono } from 'hono';
|
|
899
|
+
const testContent = `import { afterAll, afterEach, beforeAll, describe, expect, it } from 'bun:test';
|
|
900
|
+
import { inject, bootstrap, Module } from '@kanian77/simple-di';
|
|
901
|
+
import { getDb } from 'db/getDb';
|
|
905
902
|
import * as schema from '@root/schema';
|
|
906
|
-
import {
|
|
907
|
-
|
|
903
|
+
import {
|
|
904
|
+
createOneSignedUpUser,
|
|
905
|
+
deleteCreatedSignedUsers,
|
|
906
|
+
} from '@root/lib/functions/test-related/createSignedUpUser';
|
|
907
|
+
import {
|
|
908
|
+
get${EntityName}Routes,
|
|
909
|
+
get${EntityName}RoutesPath,
|
|
910
|
+
} from './get${EntityName}Routes';
|
|
911
|
+
import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
|
|
912
|
+
import { UserModule } from '@root/core/user/UserModule';
|
|
913
|
+
import { Get${EntityName}Module } from './Get${EntityName}';
|
|
914
|
+
import { getDbModule } from 'db/getDbModule';
|
|
915
|
+
import { getConfigModule } from 'config/getConfigModule';
|
|
916
|
+
import { EnvFileNames } from '@root/lib';
|
|
917
|
+
import { StatusCodes } from 'http-status-codes';
|
|
918
|
+
import { getNewTestServer } from '@root/lib/functions/test-related/getNewTestServer';
|
|
908
919
|
import { USER_REPOSITORY_INTERFACE } from '@root/core/user/IUserRepository';
|
|
909
920
|
import type { UserRepository } from '@root/core/user/UserRepository';
|
|
910
|
-
import {
|
|
921
|
+
import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
|
|
922
|
+
import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
|
|
911
923
|
|
|
912
|
-
describe('Get${EntityName}
|
|
913
|
-
let dbService: DbService;
|
|
914
|
-
let server: TestServer;
|
|
915
|
-
let app: Hono;
|
|
916
|
-
let targetId: string = '00000000-0000-0000-0000-000000000000';
|
|
924
|
+
describe('Get${EntityName} Use Case', () => {
|
|
917
925
|
let userRepository: UserRepository;
|
|
918
926
|
|
|
927
|
+
const clear = async (db: ReturnType<typeof getDb>) => {
|
|
928
|
+
await db.delete(schema.${entityName}Schema).execute();
|
|
929
|
+
await db.delete(schema.userSchema).execute();
|
|
930
|
+
};
|
|
931
|
+
|
|
919
932
|
beforeAll(async () => {
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
dbService = inject<DbService>(DB_SERVICE);
|
|
932
|
-
app = inject<Hono>(APP);
|
|
933
|
+
bootstrap(
|
|
934
|
+
new Module({
|
|
935
|
+
imports: [
|
|
936
|
+
getConfigModule(EnvFileNames.TESTING),
|
|
937
|
+
getDbModule(EnvFileNames.TESTING),
|
|
938
|
+
UserModule,
|
|
939
|
+
${EntityName}Module,
|
|
940
|
+
Get${EntityName}Module,
|
|
941
|
+
],
|
|
942
|
+
}),
|
|
943
|
+
);
|
|
933
944
|
userRepository = inject(USER_REPOSITORY_INTERFACE);
|
|
934
|
-
server = await getTestServer(app);
|
|
935
|
-
|
|
936
|
-
// TODO: Seed an entity here and assign targetId
|
|
937
945
|
});
|
|
938
946
|
|
|
939
|
-
|
|
940
|
-
await
|
|
947
|
+
afterEach(async () => {
|
|
948
|
+
await getDb().delete(schema.${entityName}Schema).execute();
|
|
941
949
|
await deleteCreatedSignedUsers(userRepository);
|
|
942
950
|
});
|
|
943
951
|
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
// const req = await server.client.request(\`/${pluralKebab}/\${targetId}\`);
|
|
947
|
-
// expect(req.status).toBe(401);
|
|
952
|
+
afterAll(async () => {
|
|
953
|
+
await clear(getDb());
|
|
948
954
|
});
|
|
949
955
|
|
|
950
|
-
it('
|
|
951
|
-
const { token } = await createOneSignedUpUser(userRepository, {
|
|
956
|
+
it('should get an entity successfully', async () => {
|
|
957
|
+
const { user, token } = await createOneSignedUpUser(userRepository, {
|
|
952
958
|
userType: UserTypeEnum.ADMIN,
|
|
953
|
-
role:
|
|
959
|
+
role: AdminRoleEnum.ADMIN,
|
|
954
960
|
});
|
|
955
961
|
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
},
|
|
962
|
+
// TODO: Create an entity directly in the DB
|
|
963
|
+
const targetId = '00000000-0000-0000-0000-000000000000';
|
|
964
|
+
|
|
965
|
+
const server = getNewTestServer({
|
|
966
|
+
[get${EntityName}RoutesPath]: { handler: get${EntityName}Routes },
|
|
961
967
|
});
|
|
962
968
|
|
|
963
|
-
|
|
964
|
-
const
|
|
969
|
+
const pathReplaced = get${EntityName}RoutesPath.replace(':id', targetId);
|
|
970
|
+
const response = await server
|
|
971
|
+
.request()
|
|
972
|
+
.get(pathReplaced)
|
|
973
|
+
.set('Authorization', \`Bearer \${token}\`);
|
|
974
|
+
|
|
975
|
+
expect(response.status).toBe(StatusCodes.OK);
|
|
976
|
+
const body = response.body as any;
|
|
965
977
|
expect(body.result.id).toBe(targetId);
|
|
978
|
+
|
|
979
|
+
await server.close();
|
|
966
980
|
});
|
|
967
981
|
});
|
|
968
982
|
`;
|
|
@@ -971,70 +985,85 @@ describe('Get${EntityName} e2e', () => {
|
|
|
971
985
|
async function generateListE2ETest(baseDir, config) {
|
|
972
986
|
const { EntityName, entityName, kebabName, pluralKebab, pluralPascal } = config;
|
|
973
987
|
const useCaseDir = join(baseDir, `list-${pluralKebab}`);
|
|
974
|
-
const testContent = `import { afterAll, beforeAll, describe, expect, it } from 'bun:test';
|
|
975
|
-
import {
|
|
976
|
-
import {
|
|
977
|
-
import { UseCaseModule } from '@root/use-case/UseCaseModule';
|
|
978
|
-
import { getConfigModule } from 'config/getConfigModule';
|
|
979
|
-
import { getDbModule } from 'db/getDbModule';
|
|
980
|
-
import { CoreModule } from '@root/core/CoreModule';
|
|
981
|
-
import { DB_SERVICE, type DbService } from 'db/DbService';
|
|
982
|
-
import { APP, AppModule } from '@root/AppModule';
|
|
983
|
-
import type { Hono } from 'hono';
|
|
988
|
+
const testContent = `import { afterAll, afterEach, beforeAll, describe, expect, it } from 'bun:test';
|
|
989
|
+
import { inject, bootstrap, Module } from '@kanian77/simple-di';
|
|
990
|
+
import { getDb } from 'db/getDb';
|
|
984
991
|
import * as schema from '@root/schema';
|
|
985
|
-
import {
|
|
986
|
-
|
|
992
|
+
import {
|
|
993
|
+
createOneSignedUpUser,
|
|
994
|
+
deleteCreatedSignedUsers,
|
|
995
|
+
} from '@root/lib/functions/test-related/createSignedUpUser';
|
|
996
|
+
import {
|
|
997
|
+
list${pluralPascal}Routes,
|
|
998
|
+
list${pluralPascal}RoutesPath,
|
|
999
|
+
} from './list${pluralPascal}Routes';
|
|
1000
|
+
import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
|
|
1001
|
+
import { UserModule } from '@root/core/user/UserModule';
|
|
1002
|
+
import { List${pluralPascal}Module } from './List${pluralPascal}';
|
|
1003
|
+
import { getDbModule } from 'db/getDbModule';
|
|
1004
|
+
import { getConfigModule } from 'config/getConfigModule';
|
|
1005
|
+
import { EnvFileNames } from '@root/lib';
|
|
1006
|
+
import { StatusCodes } from 'http-status-codes';
|
|
1007
|
+
import { getNewTestServer } from '@root/lib/functions/test-related/getNewTestServer';
|
|
987
1008
|
import { USER_REPOSITORY_INTERFACE } from '@root/core/user/IUserRepository';
|
|
988
1009
|
import type { UserRepository } from '@root/core/user/UserRepository';
|
|
989
|
-
import {
|
|
1010
|
+
import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
|
|
1011
|
+
import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
|
|
990
1012
|
|
|
991
|
-
describe('List${pluralPascal}
|
|
992
|
-
let dbService: DbService;
|
|
993
|
-
let server: TestServer;
|
|
994
|
-
let app: Hono;
|
|
1013
|
+
describe('List${pluralPascal} Use Case', () => {
|
|
995
1014
|
let userRepository: UserRepository;
|
|
996
1015
|
|
|
1016
|
+
const clear = async (db: ReturnType<typeof getDb>) => {
|
|
1017
|
+
await db.delete(schema.${entityName}Schema).execute();
|
|
1018
|
+
await db.delete(schema.userSchema).execute();
|
|
1019
|
+
};
|
|
1020
|
+
|
|
997
1021
|
beforeAll(async () => {
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
dbService = inject<DbService>(DB_SERVICE);
|
|
1010
|
-
app = inject<Hono>(APP);
|
|
1022
|
+
bootstrap(
|
|
1023
|
+
new Module({
|
|
1024
|
+
imports: [
|
|
1025
|
+
getConfigModule(EnvFileNames.TESTING),
|
|
1026
|
+
getDbModule(EnvFileNames.TESTING),
|
|
1027
|
+
UserModule,
|
|
1028
|
+
${EntityName}Module,
|
|
1029
|
+
List${pluralPascal}Module,
|
|
1030
|
+
],
|
|
1031
|
+
}),
|
|
1032
|
+
);
|
|
1011
1033
|
userRepository = inject(USER_REPOSITORY_INTERFACE);
|
|
1012
|
-
|
|
1034
|
+
});
|
|
1013
1035
|
|
|
1014
|
-
|
|
1036
|
+
afterEach(async () => {
|
|
1037
|
+
await getDb().delete(schema.${entityName}Schema).execute();
|
|
1038
|
+
await deleteCreatedSignedUsers(userRepository);
|
|
1015
1039
|
});
|
|
1016
1040
|
|
|
1017
1041
|
afterAll(async () => {
|
|
1018
|
-
await
|
|
1019
|
-
await deleteCreatedSignedUsers(userRepository);
|
|
1042
|
+
await clear(getDb());
|
|
1020
1043
|
});
|
|
1021
1044
|
|
|
1022
|
-
it('
|
|
1023
|
-
const { token } = await createOneSignedUpUser(userRepository, {
|
|
1045
|
+
it('should list all entities successfully', async () => {
|
|
1046
|
+
const { user, token } = await createOneSignedUpUser(userRepository, {
|
|
1024
1047
|
userType: UserTypeEnum.ADMIN,
|
|
1025
|
-
role:
|
|
1048
|
+
role: AdminRoleEnum.ADMIN,
|
|
1026
1049
|
});
|
|
1027
1050
|
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
},
|
|
1051
|
+
// TODO: Seed multiple entities here
|
|
1052
|
+
|
|
1053
|
+
const server = getNewTestServer({
|
|
1054
|
+
[list${pluralPascal}RoutesPath]: { handler: list${pluralPascal}Routes },
|
|
1033
1055
|
});
|
|
1034
1056
|
|
|
1035
|
-
|
|
1036
|
-
|
|
1057
|
+
const response = await server
|
|
1058
|
+
.request()
|
|
1059
|
+
.get(list${pluralPascal}RoutesPath)
|
|
1060
|
+
.set('Authorization', \`Bearer \${token}\`);
|
|
1061
|
+
|
|
1062
|
+
expect(response.status).toBe(StatusCodes.OK);
|
|
1063
|
+
const body = response.body as any;
|
|
1037
1064
|
expect(Array.isArray(body.result)).toBe(true);
|
|
1065
|
+
|
|
1066
|
+
await server.close();
|
|
1038
1067
|
});
|
|
1039
1068
|
});
|
|
1040
1069
|
`;
|
|
@@ -1043,109 +1072,126 @@ describe('List${pluralPascal} e2e', () => {
|
|
|
1043
1072
|
async function generateDeleteE2ETest(baseDir, config) {
|
|
1044
1073
|
const { EntityName, entityName, kebabName, pluralKebab } = config;
|
|
1045
1074
|
const useCaseDir = join(baseDir, `delete-${kebabName}`);
|
|
1046
|
-
const testContent = `import { afterAll, beforeAll, describe, expect, it } from 'bun:test';
|
|
1047
|
-
import {
|
|
1048
|
-
import {
|
|
1049
|
-
import { UseCaseModule } from '@root/use-case/UseCaseModule';
|
|
1050
|
-
import { getConfigModule } from 'config/getConfigModule';
|
|
1051
|
-
import { getDbModule } from 'db/getDbModule';
|
|
1052
|
-
import { CoreModule } from '@root/core/CoreModule';
|
|
1053
|
-
import { DB_SERVICE, type DbService } from 'db/DbService';
|
|
1054
|
-
import { APP, AppModule } from '@root/AppModule';
|
|
1055
|
-
import type { Hono } from 'hono';
|
|
1075
|
+
const testContent = `import { afterAll, afterEach, beforeAll, describe, expect, it } from 'bun:test';
|
|
1076
|
+
import { inject, bootstrap, Module } from '@kanian77/simple-di';
|
|
1077
|
+
import { getDb } from 'db/getDb';
|
|
1056
1078
|
import * as schema from '@root/schema';
|
|
1057
1079
|
import { eq } from 'drizzle-orm';
|
|
1058
|
-
import {
|
|
1059
|
-
|
|
1080
|
+
import {
|
|
1081
|
+
createOneSignedUpUser,
|
|
1082
|
+
deleteCreatedSignedUsers,
|
|
1083
|
+
} from '@root/lib/functions/test-related/createSignedUpUser';
|
|
1084
|
+
import {
|
|
1085
|
+
delete${EntityName}Routes,
|
|
1086
|
+
delete${EntityName}RoutesPath,
|
|
1087
|
+
} from './delete${EntityName}Routes';
|
|
1088
|
+
import { ${EntityName}Module } from '@root/core/${kebabName}/${EntityName}Module';
|
|
1089
|
+
import { UserModule } from '@root/core/user/UserModule';
|
|
1090
|
+
import { Delete${EntityName}Module } from './Delete${EntityName}';
|
|
1091
|
+
import { getDbModule } from 'db/getDbModule';
|
|
1092
|
+
import { getConfigModule } from 'config/getConfigModule';
|
|
1093
|
+
import { EnvFileNames } from '@root/lib';
|
|
1094
|
+
import { StatusCodes } from 'http-status-codes';
|
|
1095
|
+
import { getNewTestServer } from '@root/lib/functions/test-related/getNewTestServer';
|
|
1060
1096
|
import { USER_REPOSITORY_INTERFACE } from '@root/core/user/IUserRepository';
|
|
1061
1097
|
import type { UserRepository } from '@root/core/user/UserRepository';
|
|
1062
|
-
import {
|
|
1098
|
+
import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
|
|
1099
|
+
import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
|
|
1063
1100
|
|
|
1064
|
-
describe('Delete${EntityName}
|
|
1065
|
-
let dbService: DbService;
|
|
1066
|
-
let server: TestServer;
|
|
1067
|
-
let app: Hono;
|
|
1068
|
-
let targetIdSoft: string = '00000000-0000-0000-0000-000000000001';
|
|
1069
|
-
let targetIdHard: string = '00000000-0000-0000-0000-000000000002';
|
|
1101
|
+
describe('Delete${EntityName} Use Case', () => {
|
|
1070
1102
|
let userRepository: UserRepository;
|
|
1071
1103
|
|
|
1104
|
+
const clear = async (db: ReturnType<typeof getDb>) => {
|
|
1105
|
+
await db.delete(schema.${entityName}Schema).execute();
|
|
1106
|
+
await db.delete(schema.userSchema).execute();
|
|
1107
|
+
};
|
|
1108
|
+
|
|
1072
1109
|
beforeAll(async () => {
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
dbService = inject<DbService>(DB_SERVICE);
|
|
1085
|
-
app = inject<Hono>(APP);
|
|
1110
|
+
bootstrap(
|
|
1111
|
+
new Module({
|
|
1112
|
+
imports: [
|
|
1113
|
+
getConfigModule(EnvFileNames.TESTING),
|
|
1114
|
+
getDbModule(EnvFileNames.TESTING),
|
|
1115
|
+
UserModule,
|
|
1116
|
+
${EntityName}Module,
|
|
1117
|
+
Delete${EntityName}Module,
|
|
1118
|
+
],
|
|
1119
|
+
}),
|
|
1120
|
+
);
|
|
1086
1121
|
userRepository = inject(USER_REPOSITORY_INTERFACE);
|
|
1087
|
-
server = await getTestServer(app);
|
|
1088
|
-
|
|
1089
|
-
// TODO: Seed two entities, assign to targetIdSoft and targetIdHard
|
|
1090
1122
|
});
|
|
1091
1123
|
|
|
1092
|
-
|
|
1093
|
-
await
|
|
1124
|
+
afterEach(async () => {
|
|
1125
|
+
await getDb().delete(schema.${entityName}Schema).execute();
|
|
1126
|
+
await deleteCreatedSignedUsers(userRepository);
|
|
1094
1127
|
});
|
|
1095
1128
|
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
method: 'DELETE',
|
|
1099
|
-
});
|
|
1100
|
-
expect(req.status).toBe(401);
|
|
1129
|
+
afterAll(async () => {
|
|
1130
|
+
await clear(getDb());
|
|
1101
1131
|
});
|
|
1102
1132
|
|
|
1103
|
-
it('soft
|
|
1104
|
-
const { token } = await createOneSignedUpUser(userRepository, {
|
|
1133
|
+
it('should soft delete an entity successfully', async () => {
|
|
1134
|
+
const { user, token } = await createOneSignedUpUser(userRepository, {
|
|
1105
1135
|
userType: UserTypeEnum.ADMIN,
|
|
1106
|
-
role:
|
|
1136
|
+
role: AdminRoleEnum.ADMIN,
|
|
1107
1137
|
});
|
|
1108
1138
|
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
},
|
|
1139
|
+
// TODO: Create an entity to soft delete
|
|
1140
|
+
const targetIdSoft = '00000000-0000-0000-0000-000000000001';
|
|
1141
|
+
|
|
1142
|
+
const server = getNewTestServer({
|
|
1143
|
+
[delete${EntityName}RoutesPath]: { handler: delete${EntityName}Routes },
|
|
1114
1144
|
});
|
|
1115
1145
|
|
|
1116
|
-
|
|
1146
|
+
const pathReplaced = delete${EntityName}RoutesPath.replace(':id', targetIdSoft);
|
|
1147
|
+
const response = await server
|
|
1148
|
+
.request()
|
|
1149
|
+
.delete(pathReplaced)
|
|
1150
|
+
.set('Authorization', \`Bearer \${token}\`);
|
|
1117
1151
|
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1152
|
+
expect(response.status).toBe(StatusCodes.OK);
|
|
1153
|
+
|
|
1154
|
+
const dbRecord = await getDb()
|
|
1155
|
+
.select()
|
|
1156
|
+
.from(schema.${entityName}Schema)
|
|
1157
|
+
.where(eq(schema.${entityName}Schema.id, targetIdSoft))
|
|
1158
|
+
.execute();
|
|
1159
|
+
expect(dbRecord.length).toBe(1);
|
|
1160
|
+
expect((dbRecord[0] as any).deleted).toBe(true);
|
|
1161
|
+
|
|
1162
|
+
await server.close();
|
|
1125
1163
|
});
|
|
1126
1164
|
|
|
1127
|
-
it('hard
|
|
1128
|
-
const { token } = await createOneSignedUpUser(userRepository, {
|
|
1165
|
+
it('should hard delete an entity successfully', async () => {
|
|
1166
|
+
const { user, token } = await createOneSignedUpUser(userRepository, {
|
|
1129
1167
|
userType: UserTypeEnum.ADMIN,
|
|
1130
|
-
role:
|
|
1168
|
+
role: AdminRoleEnum.ADMIN,
|
|
1131
1169
|
});
|
|
1132
1170
|
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
Authorization: \`Bearer \${token}\`,
|
|
1139
|
-
},
|
|
1171
|
+
// TODO: Create an entity to hard delete
|
|
1172
|
+
const targetIdHard = '00000000-0000-0000-0000-000000000002';
|
|
1173
|
+
|
|
1174
|
+
const server = getNewTestServer({
|
|
1175
|
+
[delete${EntityName}RoutesPath]: { handler: delete${EntityName}Routes },
|
|
1140
1176
|
});
|
|
1141
1177
|
|
|
1142
|
-
|
|
1178
|
+
const pathReplaced = delete${EntityName}RoutesPath.replace(':id', targetIdHard);
|
|
1179
|
+
const response = await server
|
|
1180
|
+
.request()
|
|
1181
|
+
.delete(pathReplaced)
|
|
1182
|
+
.set('Authorization', \`Bearer \${token}\`)
|
|
1183
|
+
.send({ softDelete: false });
|
|
1143
1184
|
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1185
|
+
expect(response.status).toBe(StatusCodes.OK);
|
|
1186
|
+
|
|
1187
|
+
const dbRecord = await getDb()
|
|
1188
|
+
.select()
|
|
1189
|
+
.from(schema.${entityName}Schema)
|
|
1190
|
+
.where(eq(schema.${entityName}Schema.id, targetIdHard))
|
|
1191
|
+
.execute();
|
|
1192
|
+
expect(dbRecord.length).toBe(0);
|
|
1193
|
+
|
|
1194
|
+
await server.close();
|
|
1149
1195
|
});
|
|
1150
1196
|
});
|
|
1151
1197
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate_crud_use_cases.js","sourceRoot":"","sources":["../src/generate_crud_use_cases.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate_crud_use_cases.js","sourceRoot":"","sources":["../src/generate_crud_use_cases.ts"],"names":[],"mappings":"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"}
|