diff --git a/internal/db/organizations_test.go b/internal/db/organizations_test.go index cab03023d..e8cde59c4 100644 --- a/internal/db/organizations_test.go +++ b/internal/db/organizations_test.go @@ -46,6 +46,7 @@ func TestOrganizations(t *testing.T) { {"CountByUser", orgsCountByUser}, {"Count", orgsCount}, {"DeleteByID", orgsDeleteByID}, + {"AddMember", orgsAddMember}, } { t.Run(tc.name, func(t *testing.T) { t.Cleanup(func() { @@ -397,3 +398,38 @@ func orgsDeleteByID(t *testing.T, db *organizations) { wantErr := ErrOrganizationNotExist{errutil.Args{"name": org2.Name}} assert.Equal(t, wantErr, err) } + +func orgsAddMember(t *testing.T, db *organizations) { + ctx := context.Background() + + usersStore := NewUsersStore(db.DB) + alice, err := usersStore.Create(ctx, "alice", "alice@example.com", CreateUserOptions{}) + require.NoError(t, err) + bob, err := usersStore.Create(ctx, "bob", "bob@exmaple.com", CreateUserOptions{}) + require.NoError(t, err) + + tempPictureAvatarUploadPath := filepath.Join(os.TempDir(), "orgsAddMember-tempPictureAvatarUploadPath") + conf.SetMockPicture(t, conf.PictureOpts{AvatarUploadPath: tempPictureAvatarUploadPath}) + + org1, err := db.Create(ctx, "org1", alice.ID, CreateOrganizationOptions{}) + require.NoError(t, err) + + // Not yet a member + got, err := db.List(ctx, ListOrganizationsOptions{MemberID: bob.ID, IncludePrivateMembers: true}) + require.NoError(t, err) + assert.Len(t, got, 0) + + // Add member + err = db.AddMember(ctx, org1.ID, bob.ID) + require.NoError(t, err) + + // Now a member + got, err = db.List(ctx, ListOrganizationsOptions{MemberID: bob.ID, IncludePrivateMembers: true}) + require.NoError(t, err) + assert.Len(t, got, 1) + assert.Equal(t, org1.ID, got[0].ID) + + // Add member again shouldn't fail + err = db.AddMember(ctx, org1.ID, bob.ID) + require.NoError(t, err) +}