Browse Source

orgsAddMember

Joe Chen 1 year ago
parent
commit
fce3e65b2c
1 changed files with 36 additions and 0 deletions
  1. 36 0
      internal/db/organizations_test.go

+ 36 - 0
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)
+}