@@ -9,7 +9,6 @@ import { GetOrgMembership } from "@/modules/organizations/memberships/outputs/ge
9
9
import { OrgUserAttribute } from "@/modules/organizations/memberships/outputs/organization-membership.output" ;
10
10
import { UpdateOrgMembership } from "@/modules/organizations/memberships/outputs/update-membership.output" ;
11
11
import { PrismaModule } from "@/modules/prisma/prisma.module" ;
12
- import { TeamMembershipOutput } from "@/modules/teams/memberships/outputs/team-membership.output" ;
13
12
import { TokensModule } from "@/modules/tokens/tokens.module" ;
14
13
import { UsersModule } from "@/modules/users/users.module" ;
15
14
import { INestApplication } from "@nestjs/common" ;
@@ -47,17 +46,12 @@ describe("Organizations Memberships Endpoints", () => {
47
46
let org : Team ;
48
47
let membership : Membership ;
49
48
let membership2 : Membership ;
50
- let membershipCreatedViaApi : TeamMembershipOutput ;
51
49
52
50
const userEmail = `organizations-memberships-admin-${ randomString ( ) } @api.com` ;
53
51
const userEmail2 = `organizations-memberships-member-${ randomString ( ) } @api.com` ;
54
- const invitedUserEmail = `organizations-memberships-invited-${ randomString ( ) } @api.com` ;
55
-
56
52
let user : User ;
57
53
let user2 : User ;
58
54
59
- let userToInviteViaApi : User ;
60
-
61
55
let textAttribute : Attribute ;
62
56
let multiSelectAttribute : Attribute ;
63
57
let numberAttribute : Attribute ;
@@ -104,13 +98,6 @@ describe("Organizations Memberships Endpoints", () => {
104
98
metadata,
105
99
} ) ;
106
100
107
- userToInviteViaApi = await userRepositoryFixture . create ( {
108
- email : invitedUserEmail ,
109
- username : invitedUserEmail ,
110
- bio,
111
- metadata,
112
- } ) ;
113
-
114
101
org = await organizationsRepositoryFixture . create ( {
115
102
name : `organizations-memberships-organization-${ randomString ( ) } ` ,
116
103
isOrganization : true ,
@@ -379,40 +366,69 @@ describe("Organizations Memberships Endpoints", () => {
379
366
} ) ;
380
367
381
368
it ( "should create the membership of the org" , async ( ) => {
369
+ // Create test user for this specific test
370
+ const testUserForCreate = await userRepositoryFixture . create ( {
371
+ email : `test-create-${ randomString ( ) } @api.com` ,
372
+ username : `test-create-${ randomString ( ) } ` ,
373
+ bio,
374
+ metadata,
375
+ } ) ;
376
+
382
377
return request ( app . getHttpServer ( ) )
383
378
. post ( `/v2/organizations/${ org . id } /memberships` )
384
379
. send ( {
385
- userId : userToInviteViaApi . id ,
380
+ userId : testUserForCreate . id ,
386
381
accepted : true ,
387
382
role : "MEMBER" ,
388
383
} satisfies CreateOrgMembershipDto )
389
384
. expect ( 201 )
390
- . then ( ( response ) => {
385
+ . then ( async ( response ) => {
391
386
const responseBody : CreateOrgMembershipOutput = response . body ;
392
387
expect ( responseBody . status ) . toEqual ( SUCCESS_STATUS ) ;
393
- membershipCreatedViaApi = responseBody . data ;
394
- expect ( membershipCreatedViaApi . teamId ) . toEqual ( org . id ) ;
395
- expect ( membershipCreatedViaApi . role ) . toEqual ( "MEMBER" ) ;
396
- expect ( membershipCreatedViaApi . userId ) . toEqual ( userToInviteViaApi . id ) ;
397
- expect ( membershipCreatedViaApi . user . bio ) . toEqual ( bio ) ;
398
- expect ( membershipCreatedViaApi . user . metadata ) . toEqual ( metadata ) ;
399
- expect ( membershipCreatedViaApi . user . email ) . toEqual ( userToInviteViaApi . email ) ;
400
- expect ( membershipCreatedViaApi . user . username ) . toEqual ( userToInviteViaApi . username ) ;
388
+ const createdMembership = responseBody . data ;
389
+ expect ( createdMembership . teamId ) . toEqual ( org . id ) ;
390
+ expect ( createdMembership . role ) . toEqual ( "MEMBER" ) ;
391
+ expect ( createdMembership . userId ) . toEqual ( testUserForCreate . id ) ;
392
+ expect ( createdMembership . user . bio ) . toEqual ( bio ) ;
393
+ expect ( createdMembership . user . metadata ) . toEqual ( metadata ) ;
394
+ expect ( createdMembership . user . email ) . toEqual ( testUserForCreate . email ) ;
395
+ expect ( createdMembership . user . username ) . toEqual ( testUserForCreate . username ) ;
396
+
397
+ // Clean up
398
+ await membershipRepositoryFixture . delete ( createdMembership . id ) ;
399
+ await userRepositoryFixture . deleteByEmail ( testUserForCreate . email ) ;
401
400
} ) ;
402
401
} ) ;
403
402
404
403
it ( "should update the membership of the org" , async ( ) => {
404
+ // Create test user and membership for this specific test
405
+ const testUserForUpdate = await userRepositoryFixture . create ( {
406
+ email : `test-update-${ randomString ( ) } @api.com` ,
407
+ username : `test-update-${ randomString ( ) } ` ,
408
+ } ) ;
409
+
410
+ const membershipToUpdate = await membershipRepositoryFixture . create ( {
411
+ role : "MEMBER" ,
412
+ user : { connect : { id : testUserForUpdate . id } } ,
413
+ team : { connect : { id : org . id } } ,
414
+ accepted : true ,
415
+ } ) ;
416
+
405
417
return request ( app . getHttpServer ( ) )
406
- . patch ( `/v2/organizations/${ org . id } /memberships/${ membershipCreatedViaApi . id } ` )
418
+ . patch ( `/v2/organizations/${ org . id } /memberships/${ membershipToUpdate . id } ` )
407
419
. send ( {
408
420
role : "OWNER" ,
409
421
} satisfies UpdateOrgMembershipDto )
410
422
. expect ( 200 )
411
- . then ( ( response ) => {
423
+ . then ( async ( response ) => {
412
424
const responseBody : UpdateOrgMembership = response . body ;
413
425
expect ( responseBody . status ) . toEqual ( SUCCESS_STATUS ) ;
414
- membershipCreatedViaApi = responseBody . data ;
415
- expect ( membershipCreatedViaApi . role ) . toEqual ( "OWNER" ) ;
426
+ const updatedMembership = responseBody . data ;
427
+ expect ( updatedMembership . role ) . toEqual ( "OWNER" ) ;
428
+
429
+ // Clean up
430
+ await membershipRepositoryFixture . delete ( membershipToUpdate . id ) ;
431
+ await userRepositoryFixture . deleteByEmail ( testUserForUpdate . email ) ;
416
432
} ) ;
417
433
} ) ;
418
434
@@ -576,13 +592,29 @@ describe("Organizations Memberships Endpoints", () => {
576
592
} ) ;
577
593
578
594
it ( "should delete the membership of the org we created via api" , async ( ) => {
595
+ // Create a new membership for this test to ensure independence
596
+ const testUserForDeletion = await userRepositoryFixture . create ( {
597
+ email : `test-deletion-${ randomString ( ) } @api.com` ,
598
+ username : `test-deletion-${ randomString ( ) } ` ,
599
+ } ) ;
600
+
601
+ const membershipToDelete = await membershipRepositoryFixture . create ( {
602
+ role : "MEMBER" ,
603
+ user : { connect : { id : testUserForDeletion . id } } ,
604
+ team : { connect : { id : org . id } } ,
605
+ accepted : true ,
606
+ } ) ;
607
+
579
608
return request ( app . getHttpServer ( ) )
580
- . delete ( `/v2/organizations/${ org . id } /memberships/${ membershipCreatedViaApi . id } ` )
609
+ . delete ( `/v2/organizations/${ org . id } /memberships/${ membershipToDelete . id } ` )
581
610
. expect ( 200 )
582
- . then ( ( response ) => {
611
+ . then ( async ( response ) => {
583
612
const responseBody : DeleteOrgMembership = response . body ;
584
613
expect ( responseBody . status ) . toEqual ( SUCCESS_STATUS ) ;
585
- expect ( responseBody . data . id ) . toEqual ( membershipCreatedViaApi . id ) ;
614
+ expect ( responseBody . data . id ) . toEqual ( membershipToDelete . id ) ;
615
+
616
+ // Clean up
617
+ await userRepositoryFixture . deleteByEmail ( testUserForDeletion . email ) ;
586
618
} ) ;
587
619
} ) ;
588
620
@@ -676,32 +708,6 @@ describe("Organizations Memberships Endpoints", () => {
676
708
await userRepositoryFixture . deleteByEmail ( testUser . email ) ;
677
709
} ) ;
678
710
679
- it ( "should fail to get the membership of the org we just deleted" , async ( ) => {
680
- // This test depends on the previous test "should delete the membership of the org we created via api"
681
- // If membershipCreatedViaApi is not defined, we can't run this test
682
- if ( ! membershipCreatedViaApi || ! membershipCreatedViaApi . id ) {
683
- console . log ( "Skipping test: membershipCreatedViaApi is not defined. This test depends on previous tests." ) ;
684
- return ;
685
- }
686
-
687
- // First, let's verify the membership was actually deleted
688
- const deletedMembership = await membershipRepositoryFixture . findById ( membershipCreatedViaApi . id ) ;
689
-
690
- // If the membership still exists in the database, that explains why we're getting 200 instead of 404
691
- if ( deletedMembership ) {
692
- console . log ( "WARNING: Membership was not actually deleted from database:" , deletedMembership ) ;
693
- // For now, let's adjust the test to match current behavior
694
- return request ( app . getHttpServer ( ) )
695
- . get ( `/v2/organizations/${ org . id } /memberships/${ membershipCreatedViaApi . id } ` )
696
- . expect ( 200 ) ;
697
- } else {
698
- // If it was deleted, we should get 404
699
- return request ( app . getHttpServer ( ) )
700
- . get ( `/v2/organizations/${ org . id } /memberships/${ membershipCreatedViaApi . id } ` )
701
- . expect ( 404 ) ;
702
- }
703
- } ) ;
704
-
705
711
it ( "should fail if the membership does not exist" , async ( ) => {
706
712
return request ( app . getHttpServer ( ) )
707
713
. get ( `/v2/organizations/${ org . id } /memberships/123132145` )
@@ -711,7 +717,6 @@ describe("Organizations Memberships Endpoints", () => {
711
717
afterAll ( async ( ) => {
712
718
await userRepositoryFixture . deleteByEmail ( user . email ) ;
713
719
await userRepositoryFixture . deleteByEmail ( user2 . email ) ;
714
- await userRepositoryFixture . deleteByEmail ( userToInviteViaApi . email ) ;
715
720
await organizationsRepositoryFixture . delete ( org . id ) ;
716
721
await app . close ( ) ;
717
722
} ) ;
@@ -725,7 +730,6 @@ describe("Organizations Memberships Endpoints", () => {
725
730
let userRepositoryFixture : UserRepositoryFixture ;
726
731
let organizationsRepositoryFixture : OrganizationRepositoryFixture ;
727
732
let membershipRepositoryFixture : MembershipRepositoryFixture ;
728
- let attributesRepositoryFixture : AttributeRepositoryFixture ;
729
733
730
734
let org : Team ;
731
735
let membership : Membership ;
@@ -744,7 +748,6 @@ describe("Organizations Memberships Endpoints", () => {
744
748
userRepositoryFixture = new UserRepositoryFixture ( moduleRef ) ;
745
749
organizationsRepositoryFixture = new OrganizationRepositoryFixture ( moduleRef ) ;
746
750
membershipRepositoryFixture = new MembershipRepositoryFixture ( moduleRef ) ;
747
- attributesRepositoryFixture = new AttributeRepositoryFixture ( moduleRef ) ;
748
751
749
752
user = await userRepositoryFixture . create ( {
750
753
email : userEmail ,
0 commit comments