simpledi-app-generator 0.0.13 → 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.
@@ -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 { EnvFileNames, UserRoleEnum, UserTypeEnum } from '@root/lib';
704
- import { bootstrap, inject, Module } from '@kanian77/simple-di';
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 { eq } from 'drizzle-orm';
714
- import { getTestServer, type TestServer } from '@root/lib/functions/test-related/getTestServer';
715
- import { createOneSignedUpUser, deleteCreatedSignedUsers } from '@root/lib/functions/test-related/createSignedUpUser';
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 { UserModule } from '@root/core/user/UserModule';
724
+ import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
725
+ import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
719
726
 
720
- describe('Create${EntityName} e2e', () => {
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
- const TestModule = new Module({
728
- imports: [
729
- AppModule,
730
- getConfigModule(EnvFileNames.TESTING),
731
- getDbModule(),
732
- CoreModule,
733
- UserModule,
734
- UseCaseModule,
735
- ],
736
- });
737
- bootstrap(TestModule);
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
- afterAll(async () => {
745
- await dbService.getDb().delete(schema.${entityName}Schema).execute();
750
+ afterEach(async () => {
751
+ await getDb().delete(schema.${entityName}Schema).execute();
746
752
  await deleteCreatedSignedUsers(userRepository);
747
753
  });
748
754
 
749
- it('fails if unauthenticated', async () => {
750
- const req = await server.client.request('/${pluralKebab}', {
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('fails with fake generated ID for createdBy', async () => {
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: UserRoleEnum.AUTHENTICATED,
762
+ role: AdminRoleEnum.ADMIN,
762
763
  });
763
764
 
764
- // Attempting to forge createdBy should be overwritten by the backend Context Injection
765
- const maliciousPayload = {
766
- // TODO: Add required payload properties
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
- expect(req.status).toBe(201);
780
- const body: any = await req.json();
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
- // Verify creation succeeded but createdBy was securely overwritten
783
- expect(body.result.createdBy).not.toBe('fake-malicious-id');
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
- // Direct DB check
786
- const row = await dbService.getDb().query.${entityName}Schema.findFirst({
787
- where: eq(schema.${entityName}Schema.id, body.result.id)
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
- expect(row).toBeDefined();
790
- expect(row!.createdBy).not.toBe('fake-malicious-id');
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 { EnvFileNames, UserRoleEnum, UserTypeEnum } from '@root/lib';
801
- import { bootstrap, inject, Module } from '@kanian77/simple-di';
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 { eq } from 'drizzle-orm';
811
- import { getTestServer, type TestServer } from '@root/lib/functions/test-related/getTestServer';
812
- import { createOneSignedUpUser, deleteCreatedSignedUsers } from '@root/lib/functions/test-related/createSignedUpUser';
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 { UserModule } from '@root/core/user/UserModule';
831
+ import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
832
+ import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
816
833
 
817
- describe('Update${EntityName} e2e', () => {
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
- const TestModule = new Module({
826
- imports: [
827
- AppModule,
828
- getConfigModule(EnvFileNames.TESTING),
829
- getDbModule(),
830
- CoreModule,
831
- UserModule,
832
- UseCaseModule,
833
- ],
834
- });
835
- bootstrap(TestModule);
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
- afterAll(async () => {
845
- await dbService.getDb().delete(schema.${entityName}Schema).execute();
857
+ afterEach(async () => {
858
+ await getDb().delete(schema.${entityName}Schema).execute();
846
859
  await deleteCreatedSignedUsers(userRepository);
847
860
  });
848
861
 
849
- it('fails if unauthenticated', async () => {
850
- const req = await server.client.request(\`/${pluralKebab}/\${targetId}\`, {
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('successfully updates and overrides updatedBy context', async () => {
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: UserRoleEnum.AUTHENTICATED,
869
+ role: AdminRoleEnum.ADMIN,
862
870
  });
863
871
 
864
- const payload = {
865
- // TODO: Add properties to update
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 req = await server.client.request(\`/${pluralKebab}/\${targetId}\`, {
870
- method: 'PUT',
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
- expect(req.status).toBe(200);
879
- const body: any = await req.json();
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(body.result.updatedBy).not.toBe('hacker-id');
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
- const row = await dbService.getDb().query.${entityName}Schema.findFirst({
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 { EnvFileNames, UserRoleEnum, UserTypeEnum } from '@root/lib';
897
- import { bootstrap, inject, Module } from '@kanian77/simple-di';
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 { getTestServer, type TestServer } from '@root/lib/functions/test-related/getTestServer';
907
- import { createOneSignedUpUser, deleteCreatedSignedUsers } from '@root/lib/functions/test-related/createSignedUpUser';
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 { UserModule } from '@root/core/user/UserModule';
921
+ import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
922
+ import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
911
923
 
912
- describe('Get${EntityName} e2e', () => {
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
- const TestModule = new Module({
921
- imports: [
922
- AppModule,
923
- getConfigModule(EnvFileNames.TESTING),
924
- getDbModule(),
925
- CoreModule,
926
- UserModule,
927
- UseCaseModule,
928
- ],
929
- });
930
- bootstrap(TestModule);
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
- afterAll(async () => {
940
- await dbService.getDb().delete(schema.${entityName}Schema).execute();
947
+ afterEach(async () => {
948
+ await getDb().delete(schema.${entityName}Schema).execute();
941
949
  await deleteCreatedSignedUsers(userRepository);
942
950
  });
943
951
 
944
- it('fails if unauthenticated (assuming route requires auth)', async () => {
945
- // Note: Adjust depending on whether the GET route should be public or private
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('retrieves the entity', async () => {
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: UserRoleEnum.AUTHENTICATED,
959
+ role: AdminRoleEnum.ADMIN,
954
960
  });
955
961
 
956
- const req = await server.client.request(\`/${pluralKebab}/\${targetId}\`, {
957
- method: 'GET',
958
- headers: {
959
- Authorization: \`Bearer \${token}\`,
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
- expect(req.status).toBe(200);
964
- const body: any = await req.json();
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 { EnvFileNames, UserRoleEnum, UserTypeEnum } from '@root/lib';
976
- import { bootstrap, inject, Module } from '@kanian77/simple-di';
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 { getTestServer, type TestServer } from '@root/lib/functions/test-related/getTestServer';
986
- import { createOneSignedUpUser, deleteCreatedSignedUsers } from '@root/lib/functions/test-related/createSignedUpUser';
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 { UserModule } from '@root/core/user/UserModule';
1010
+ import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
1011
+ import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
990
1012
 
991
- describe('List${pluralPascal} e2e', () => {
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
- const TestModule = new Module({
999
- imports: [
1000
- AppModule,
1001
- getConfigModule(EnvFileNames.TESTING),
1002
- getDbModule(),
1003
- CoreModule,
1004
- UserModule,
1005
- UseCaseModule,
1006
- ],
1007
- });
1008
- bootstrap(TestModule);
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
- server = await getTestServer(app);
1034
+ });
1013
1035
 
1014
- // TODO: Seed multiple entities here
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 dbService.getDb().delete(schema.${entityName}Schema).execute();
1019
- await deleteCreatedSignedUsers(userRepository);
1042
+ await clear(getDb());
1020
1043
  });
1021
1044
 
1022
- it('lists entities successfully', async () => {
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: UserRoleEnum.AUTHENTICATED,
1048
+ role: AdminRoleEnum.ADMIN,
1026
1049
  });
1027
1050
 
1028
- const req = await server.client.request('/${pluralKebab}', {
1029
- method: 'GET',
1030
- headers: {
1031
- Authorization: \`Bearer \${token}\`,
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
- expect(req.status).toBe(200);
1036
- const body: any = await req.json();
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 { EnvFileNames, UserRoleEnum, UserTypeEnum } from '@root/lib';
1048
- import { bootstrap, inject, Module } from '@kanian77/simple-di';
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 { getTestServer, type TestServer } from '@root/lib/functions/test-related/getTestServer';
1059
- import { createOneSignedUpUser, deleteCreatedSignedUsers } from '@root/lib/functions/test-related/createSignedUpUser';
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 { UserModule } from '@root/core/user/UserModule';
1098
+ import { AdminRoleEnum } from '@root/lib/types/AdminRoleEnum';
1099
+ import { UserTypeEnum } from '@root/lib/types/UserTypeEnum';
1063
1100
 
1064
- describe('Delete${EntityName} e2e', () => {
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
- const TestModule = new Module({
1074
- imports: [
1075
- AppModule,
1076
- getConfigModule(EnvFileNames.TESTING),
1077
- getDbModule(),
1078
- CoreModule,
1079
- UserModule,
1080
- UseCaseModule,
1081
- ],
1082
- });
1083
- bootstrap(TestModule);
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
- afterAll(async () => {
1093
- await dbService.getDb().delete(schema.${entityName}Schema).execute();
1124
+ afterEach(async () => {
1125
+ await getDb().delete(schema.${entityName}Schema).execute();
1126
+ await deleteCreatedSignedUsers(userRepository);
1094
1127
  });
1095
1128
 
1096
- it('fails if unauthenticated', async () => {
1097
- const req = await server.client.request(\`/${pluralKebab}/\${targetIdSoft}\`, {
1098
- method: 'DELETE',
1099
- });
1100
- expect(req.status).toBe(401);
1129
+ afterAll(async () => {
1130
+ await clear(getDb());
1101
1131
  });
1102
1132
 
1103
- it('soft deletes by default', async () => {
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: UserRoleEnum.AUTHENTICATED,
1136
+ role: AdminRoleEnum.ADMIN,
1107
1137
  });
1108
1138
 
1109
- const req = await server.client.request(\`/${pluralKebab}/\${targetIdSoft}\`, {
1110
- method: 'DELETE',
1111
- headers: {
1112
- Authorization: \`Bearer \${token}\`,
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
- expect(req.status).toBe(200);
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
- // Direct DB check for soft delete
1119
- const row = await dbService.getDb().query.${entityName}Schema.findFirst({
1120
- where: eq(schema.${entityName}Schema.id, targetIdSoft)
1121
- });
1122
- expect(row).toBeDefined();
1123
- expect(row!.deleted).toBe(true);
1124
- expect(row!.deletedAt).not.toBeNull();
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 deletes when flag is false', async () => {
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: UserRoleEnum.AUTHENTICATED,
1168
+ role: AdminRoleEnum.ADMIN,
1131
1169
  });
1132
1170
 
1133
- const req = await server.client.request(\`/${pluralKebab}/\${targetIdHard}\`, {
1134
- method: 'DELETE',
1135
- body: JSON.stringify({ softDelete: false }),
1136
- headers: {
1137
- 'Content-Type': 'application/json',
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
- expect(req.status).toBe(200);
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
- // Direct DB check for physical row missing
1145
- const row = await dbService.getDb().query.${entityName}Schema.findFirst({
1146
- where: eq(schema.${entityName}Schema.id, targetIdHard)
1147
- });
1148
- expect(row).toBeUndefined();
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "simpledi-app-generator",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "description": "generates a @kanian77/simple-di app",
5
5
  "author": {
6
6
  "name": "Patrick Assoa Adou",