summaryrefslogtreecommitdiff
path: root/internal/db/bundb/relationship_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/bundb/relationship_test.go')
-rw-r--r--internal/db/bundb/relationship_test.go493
1 files changed, 401 insertions, 92 deletions
diff --git a/internal/db/bundb/relationship_test.go b/internal/db/bundb/relationship_test.go
index 3d307ecde..00583d175 100644
--- a/internal/db/bundb/relationship_test.go
+++ b/internal/db/bundb/relationship_test.go
@@ -19,17 +19,359 @@ package bundb_test
import (
"context"
+ "errors"
+ "reflect"
"testing"
+ "time"
"github.com/stretchr/testify/suite"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
+ "github.com/superseriousbusiness/gotosocial/internal/id"
)
type RelationshipTestSuite struct {
BunDBStandardTestSuite
}
+func (suite *RelationshipTestSuite) TestGetBlockBy() {
+ t := suite.T()
+
+ // Create a new context for this test.
+ ctx, cncl := context.WithCancel(context.Background())
+ defer cncl()
+
+ // Sentinel error to mark avoiding a test case.
+ sentinelErr := errors.New("sentinel")
+
+ // isEqual checks if 2 block models are equal.
+ isEqual := func(b1, b2 gtsmodel.Block) bool {
+ // Clear populated sub-models.
+ b1.Account = nil
+ b2.Account = nil
+ b1.TargetAccount = nil
+ b2.TargetAccount = nil
+
+ // Clear database-set fields.
+ b1.CreatedAt = time.Time{}
+ b2.CreatedAt = time.Time{}
+ b1.UpdatedAt = time.Time{}
+ b2.UpdatedAt = time.Time{}
+
+ return reflect.DeepEqual(b1, b2)
+ }
+
+ var testBlocks []*gtsmodel.Block
+
+ for _, account1 := range suite.testAccounts {
+ for _, account2 := range suite.testAccounts {
+ if account1.ID == account2.ID {
+ // don't block *yourself* ...
+ continue
+ }
+
+ // Create new account block.
+ block := &gtsmodel.Block{
+ ID: id.NewULID(),
+ URI: "http://127.0.0.1:8080/" + id.NewULID(),
+ AccountID: account1.ID,
+ TargetAccountID: account2.ID,
+ }
+
+ // Attempt to place the block in database (if not already).
+ if err := suite.db.PutBlock(ctx, block); err != nil {
+ if err != db.ErrAlreadyExists {
+ // Unrecoverable database error.
+ t.Fatalf("error creating block: %v", err)
+ }
+
+ // Fetch existing block from database between accounts.
+ block, _ = suite.db.GetBlock(ctx, account1.ID, account2.ID)
+ continue
+ }
+
+ // Append generated block to test cases.
+ testBlocks = append(testBlocks, block)
+ }
+ }
+
+ for _, block := range testBlocks {
+ for lookup, dbfunc := range map[string]func() (*gtsmodel.Block, error){
+ "id": func() (*gtsmodel.Block, error) {
+ return suite.db.GetBlockByID(ctx, block.ID)
+ },
+
+ "uri": func() (*gtsmodel.Block, error) {
+ return suite.db.GetBlockByURI(ctx, block.URI)
+ },
+
+ "origin_target": func() (*gtsmodel.Block, error) {
+ return suite.db.GetBlock(ctx, block.AccountID, block.TargetAccountID)
+ },
+ } {
+
+ // Clear database caches.
+ suite.state.Caches.Init()
+
+ t.Logf("checking database lookup %q", lookup)
+
+ // Perform database function.
+ checkBlock, err := dbfunc()
+ if err != nil {
+ if err == sentinelErr {
+ continue
+ }
+
+ t.Errorf("error encountered for database lookup %q: %v", lookup, err)
+ continue
+ }
+
+ // Check received block data.
+ if !isEqual(*checkBlock, *block) {
+ t.Errorf("block does not contain expected data: %+v", checkBlock)
+ continue
+ }
+
+ // Check that block origin account populated.
+ if checkBlock.Account == nil || checkBlock.Account.ID != block.AccountID {
+ t.Errorf("block origin account not correctly populated for: %+v", checkBlock)
+ continue
+ }
+
+ // Check that block target account populated.
+ if checkBlock.TargetAccount == nil || checkBlock.TargetAccount.ID != block.TargetAccountID {
+ t.Errorf("block target account not correctly populated for: %+v", checkBlock)
+ continue
+ }
+ }
+ }
+}
+
+func (suite *RelationshipTestSuite) TestGetFollowBy() {
+ t := suite.T()
+
+ // Create a new context for this test.
+ ctx, cncl := context.WithCancel(context.Background())
+ defer cncl()
+
+ // Sentinel error to mark avoiding a test case.
+ sentinelErr := errors.New("sentinel")
+
+ // isEqual checks if 2 follow models are equal.
+ isEqual := func(f1, f2 gtsmodel.Follow) bool {
+ // Clear populated sub-models.
+ f1.Account = nil
+ f2.Account = nil
+ f1.TargetAccount = nil
+ f2.TargetAccount = nil
+
+ // Clear database-set fields.
+ f1.CreatedAt = time.Time{}
+ f2.CreatedAt = time.Time{}
+ f1.UpdatedAt = time.Time{}
+ f2.UpdatedAt = time.Time{}
+
+ return reflect.DeepEqual(f1, f2)
+ }
+
+ var testFollows []*gtsmodel.Follow
+
+ for _, account1 := range suite.testAccounts {
+ for _, account2 := range suite.testAccounts {
+ if account1.ID == account2.ID {
+ // don't follow *yourself* ...
+ continue
+ }
+
+ // Create new account follow.
+ follow := &gtsmodel.Follow{
+ ID: id.NewULID(),
+ URI: "http://127.0.0.1:8080/" + id.NewULID(),
+ AccountID: account1.ID,
+ TargetAccountID: account2.ID,
+ }
+
+ // Attempt to place the follow in database (if not already).
+ if err := suite.db.PutFollow(ctx, follow); err != nil {
+ if err != db.ErrAlreadyExists {
+ // Unrecoverable database error.
+ t.Fatalf("error creating follow: %v", err)
+ }
+
+ // Fetch existing follow from database between accounts.
+ follow, _ = suite.db.GetFollow(ctx, account1.ID, account2.ID)
+ continue
+ }
+
+ // Append generated follow to test cases.
+ testFollows = append(testFollows, follow)
+ }
+ }
+
+ for _, follow := range testFollows {
+ for lookup, dbfunc := range map[string]func() (*gtsmodel.Follow, error){
+ "id": func() (*gtsmodel.Follow, error) {
+ return suite.db.GetFollowByID(ctx, follow.ID)
+ },
+
+ "uri": func() (*gtsmodel.Follow, error) {
+ return suite.db.GetFollowByURI(ctx, follow.URI)
+ },
+
+ "origin_target": func() (*gtsmodel.Follow, error) {
+ return suite.db.GetFollow(ctx, follow.AccountID, follow.TargetAccountID)
+ },
+ } {
+ // Clear database caches.
+ suite.state.Caches.Init()
+
+ t.Logf("checking database lookup %q", lookup)
+
+ // Perform database function.
+ checkFollow, err := dbfunc()
+ if err != nil {
+ if err == sentinelErr {
+ continue
+ }
+
+ t.Errorf("error encountered for database lookup %q: %v", lookup, err)
+ continue
+ }
+
+ // Check received follow data.
+ if !isEqual(*checkFollow, *follow) {
+ t.Errorf("follow does not contain expected data: %+v", checkFollow)
+ continue
+ }
+
+ // Check that follow origin account populated.
+ if checkFollow.Account == nil || checkFollow.Account.ID != follow.AccountID {
+ t.Errorf("follow origin account not correctly populated for: %+v", checkFollow)
+ continue
+ }
+
+ // Check that follow target account populated.
+ if checkFollow.TargetAccount == nil || checkFollow.TargetAccount.ID != follow.TargetAccountID {
+ t.Errorf("follow target account not correctly populated for: %+v", checkFollow)
+ continue
+ }
+ }
+ }
+}
+
+func (suite *RelationshipTestSuite) TestGetFollowRequestBy() {
+ t := suite.T()
+
+ // Create a new context for this test.
+ ctx, cncl := context.WithCancel(context.Background())
+ defer cncl()
+
+ // Sentinel error to mark avoiding a test case.
+ sentinelErr := errors.New("sentinel")
+
+ // isEqual checks if 2 follow request models are equal.
+ isEqual := func(f1, f2 gtsmodel.FollowRequest) bool {
+ // Clear populated sub-models.
+ f1.Account = nil
+ f2.Account = nil
+ f1.TargetAccount = nil
+ f2.TargetAccount = nil
+
+ // Clear database-set fields.
+ f1.CreatedAt = time.Time{}
+ f2.CreatedAt = time.Time{}
+ f1.UpdatedAt = time.Time{}
+ f2.UpdatedAt = time.Time{}
+
+ return reflect.DeepEqual(f1, f2)
+ }
+
+ var testFollowReqs []*gtsmodel.FollowRequest
+
+ for _, account1 := range suite.testAccounts {
+ for _, account2 := range suite.testAccounts {
+ if account1.ID == account2.ID {
+ // don't follow *yourself* ...
+ continue
+ }
+
+ // Create new account follow request.
+ followReq := &gtsmodel.FollowRequest{
+ ID: id.NewULID(),
+ URI: "http://127.0.0.1:8080/" + id.NewULID(),
+ AccountID: account1.ID,
+ TargetAccountID: account2.ID,
+ }
+
+ // Attempt to place the follow in database (if not already).
+ if err := suite.db.PutFollowRequest(ctx, followReq); err != nil {
+ if err != db.ErrAlreadyExists {
+ // Unrecoverable database error.
+ t.Fatalf("error creating follow request: %v", err)
+ }
+
+ // Fetch existing follow request from database between accounts.
+ followReq, _ = suite.db.GetFollowRequest(ctx, account1.ID, account2.ID)
+ continue
+ }
+
+ // Append generated follow request to test cases.
+ testFollowReqs = append(testFollowReqs, followReq)
+ }
+ }
+
+ for _, followReq := range testFollowReqs {
+ for lookup, dbfunc := range map[string]func() (*gtsmodel.FollowRequest, error){
+ "id": func() (*gtsmodel.FollowRequest, error) {
+ return suite.db.GetFollowRequestByID(ctx, followReq.ID)
+ },
+
+ "uri": func() (*gtsmodel.FollowRequest, error) {
+ return suite.db.GetFollowRequestByURI(ctx, followReq.URI)
+ },
+
+ "origin_target": func() (*gtsmodel.FollowRequest, error) {
+ return suite.db.GetFollowRequest(ctx, followReq.AccountID, followReq.TargetAccountID)
+ },
+ } {
+
+ // Clear database caches.
+ suite.state.Caches.Init()
+
+ t.Logf("checking database lookup %q", lookup)
+
+ // Perform database function.
+ checkFollowReq, err := dbfunc()
+ if err != nil {
+ if err == sentinelErr {
+ continue
+ }
+
+ t.Errorf("error encountered for database lookup %q: %v", lookup, err)
+ continue
+ }
+
+ // Check received follow request data.
+ if !isEqual(*checkFollowReq, *followReq) {
+ t.Errorf("follow request does not contain expected data: %+v", checkFollowReq)
+ continue
+ }
+
+ // Check that follow request origin account populated.
+ if checkFollowReq.Account == nil || checkFollowReq.Account.ID != followReq.AccountID {
+ t.Errorf("follow request origin account not correctly populated for: %+v", checkFollowReq)
+ continue
+ }
+
+ // Check that follow request target account populated.
+ if checkFollowReq.TargetAccount == nil || checkFollowReq.TargetAccount.ID != followReq.TargetAccountID {
+ t.Errorf("follow request target account not correctly populated for: %+v", checkFollowReq)
+ continue
+ }
+ }
+ }
+}
+
func (suite *RelationshipTestSuite) TestIsBlocked() {
ctx := context.Background()
@@ -37,11 +379,11 @@ func (suite *RelationshipTestSuite) TestIsBlocked() {
account2 := suite.testAccounts["local_account_2"].ID
// no blocks exist between account 1 and account 2
- blocked, err := suite.db.IsBlocked(ctx, account1, account2, false)
+ blocked, err := suite.db.IsBlocked(ctx, account1, account2)
suite.NoError(err)
suite.False(blocked)
- blocked, err = suite.db.IsBlocked(ctx, account2, account1, false)
+ blocked, err = suite.db.IsBlocked(ctx, account2, account1)
suite.NoError(err)
suite.False(blocked)
@@ -56,45 +398,24 @@ func (suite *RelationshipTestSuite) TestIsBlocked() {
}
// account 1 now blocks account 2
- blocked, err = suite.db.IsBlocked(ctx, account1, account2, false)
+ blocked, err = suite.db.IsBlocked(ctx, account1, account2)
suite.NoError(err)
suite.True(blocked)
// account 2 doesn't block account 1
- blocked, err = suite.db.IsBlocked(ctx, account2, account1, false)
+ blocked, err = suite.db.IsBlocked(ctx, account2, account1)
suite.NoError(err)
suite.False(blocked)
// a block exists in either direction between the two
- blocked, err = suite.db.IsBlocked(ctx, account1, account2, true)
+ blocked, err = suite.db.IsEitherBlocked(ctx, account1, account2)
suite.NoError(err)
suite.True(blocked)
- blocked, err = suite.db.IsBlocked(ctx, account2, account1, true)
+ blocked, err = suite.db.IsEitherBlocked(ctx, account2, account1)
suite.NoError(err)
suite.True(blocked)
}
-func (suite *RelationshipTestSuite) TestGetBlock() {
- ctx := context.Background()
-
- account1 := suite.testAccounts["local_account_1"].ID
- account2 := suite.testAccounts["local_account_2"].ID
-
- if err := suite.db.PutBlock(ctx, &gtsmodel.Block{
- ID: "01G202BCSXXJZ70BHB5KCAHH8C",
- URI: "http://localhost:8080/some_block_uri_1",
- AccountID: account1,
- TargetAccountID: account2,
- }); err != nil {
- suite.FailNow(err.Error())
- }
-
- block, err := suite.db.GetBlock(ctx, account1, account2)
- suite.NoError(err)
- suite.NotNil(block)
- suite.Equal("01G202BCSXXJZ70BHB5KCAHH8C", block.ID)
-}
-
func (suite *RelationshipTestSuite) TestDeleteBlockByID() {
ctx := context.Background()
@@ -157,7 +478,7 @@ func (suite *RelationshipTestSuite) TestDeleteBlockByURI() {
suite.Nil(block)
}
-func (suite *RelationshipTestSuite) TestDeleteBlocksByOriginAccountID() {
+func (suite *RelationshipTestSuite) TestDeleteAccountBlocks() {
ctx := context.Background()
// put a block in first
@@ -179,38 +500,7 @@ func (suite *RelationshipTestSuite) TestDeleteBlocksByOriginAccountID() {
suite.Equal("01G202BCSXXJZ70BHB5KCAHH8C", block.ID)
// delete the block by originAccountID
- err = suite.db.DeleteBlocksByOriginAccountID(ctx, account1)
- suite.NoError(err)
-
- // block should be gone
- block, err = suite.db.GetBlock(ctx, account1, account2)
- suite.ErrorIs(err, db.ErrNoEntries)
- suite.Nil(block)
-}
-
-func (suite *RelationshipTestSuite) TestDeleteBlocksByTargetAccountID() {
- ctx := context.Background()
-
- // put a block in first
- account1 := suite.testAccounts["local_account_1"].ID
- account2 := suite.testAccounts["local_account_2"].ID
- if err := suite.db.PutBlock(ctx, &gtsmodel.Block{
- ID: "01G202BCSXXJZ70BHB5KCAHH8C",
- URI: "http://localhost:8080/some_block_uri_1",
- AccountID: account1,
- TargetAccountID: account2,
- }); err != nil {
- suite.FailNow(err.Error())
- }
-
- // make sure the block is in the db
- block, err := suite.db.GetBlock(ctx, account1, account2)
- suite.NoError(err)
- suite.NotNil(block)
- suite.Equal("01G202BCSXXJZ70BHB5KCAHH8C", block.ID)
-
- // delete the block by targetAccountID
- err = suite.db.DeleteBlocksByTargetAccountID(ctx, account2)
+ err = suite.db.DeleteAccountBlocks(ctx, account1)
suite.NoError(err)
// block should be gone
@@ -244,7 +534,7 @@ func (suite *RelationshipTestSuite) TestGetRelationship() {
func (suite *RelationshipTestSuite) TestIsFollowingYes() {
requestingAccount := suite.testAccounts["local_account_1"]
targetAccount := suite.testAccounts["admin_account"]
- isFollowing, err := suite.db.IsFollowing(context.Background(), requestingAccount, targetAccount)
+ isFollowing, err := suite.db.IsFollowing(context.Background(), requestingAccount.ID, targetAccount.ID)
suite.NoError(err)
suite.True(isFollowing)
}
@@ -252,7 +542,7 @@ func (suite *RelationshipTestSuite) TestIsFollowingYes() {
func (suite *RelationshipTestSuite) TestIsFollowingNo() {
requestingAccount := suite.testAccounts["admin_account"]
targetAccount := suite.testAccounts["local_account_2"]
- isFollowing, err := suite.db.IsFollowing(context.Background(), requestingAccount, targetAccount)
+ isFollowing, err := suite.db.IsFollowing(context.Background(), requestingAccount.ID, targetAccount.ID)
suite.NoError(err)
suite.False(isFollowing)
}
@@ -260,7 +550,7 @@ func (suite *RelationshipTestSuite) TestIsFollowingNo() {
func (suite *RelationshipTestSuite) TestIsMutualFollowing() {
requestingAccount := suite.testAccounts["local_account_1"]
targetAccount := suite.testAccounts["admin_account"]
- isMutualFollowing, err := suite.db.IsMutualFollowing(context.Background(), requestingAccount, targetAccount)
+ isMutualFollowing, err := suite.db.IsMutualFollowing(context.Background(), requestingAccount.ID, targetAccount.ID)
suite.NoError(err)
suite.True(isMutualFollowing)
}
@@ -268,7 +558,7 @@ func (suite *RelationshipTestSuite) TestIsMutualFollowing() {
func (suite *RelationshipTestSuite) TestIsMutualFollowingNo() {
requestingAccount := suite.testAccounts["local_account_1"]
targetAccount := suite.testAccounts["local_account_2"]
- isMutualFollowing, err := suite.db.IsMutualFollowing(context.Background(), requestingAccount, targetAccount)
+ isMutualFollowing, err := suite.db.IsMutualFollowing(context.Background(), requestingAccount.ID, targetAccount.ID)
suite.NoError(err)
suite.True(isMutualFollowing)
}
@@ -306,7 +596,7 @@ func (suite *RelationshipTestSuite) TestAcceptFollowRequestOK() {
suite.Equal(followRequest.URI, follow.URI)
// Ensure notification is deleted.
- notification, err := suite.db.GetNotification(ctx, followRequestNotification.ID)
+ notification, err := suite.db.GetNotificationByID(ctx, followRequestNotification.ID)
suite.ErrorIs(err, db.ErrNoEntries)
suite.Nil(notification)
}
@@ -389,7 +679,7 @@ func (suite *RelationshipTestSuite) TestRejectFollowRequestOK() {
TargetAccountID: targetAccount.ID,
}
- if err := suite.db.Put(ctx, followRequest); err != nil {
+ if err := suite.db.PutFollowRequest(ctx, followRequest); err != nil {
suite.FailNow(err.Error())
}
@@ -404,12 +694,11 @@ func (suite *RelationshipTestSuite) TestRejectFollowRequestOK() {
suite.FailNow(err.Error())
}
- rejectedFollowRequest, err := suite.db.RejectFollowRequest(ctx, account.ID, targetAccount.ID)
+ err := suite.db.RejectFollowRequest(ctx, account.ID, targetAccount.ID)
suite.NoError(err)
- suite.NotNil(rejectedFollowRequest)
// Ensure notification is deleted.
- notification, err := suite.db.GetNotification(ctx, followRequestNotification.ID)
+ notification, err := suite.db.GetNotificationByID(ctx, followRequestNotification.ID)
suite.ErrorIs(err, db.ErrNoEntries)
suite.Nil(notification)
}
@@ -419,9 +708,8 @@ func (suite *RelationshipTestSuite) TestRejectFollowRequestNotExisting() {
account := suite.testAccounts["admin_account"]
targetAccount := suite.testAccounts["local_account_2"]
- rejectedFollowRequest, err := suite.db.RejectFollowRequest(ctx, account.ID, targetAccount.ID)
+ err := suite.db.RejectFollowRequest(ctx, account.ID, targetAccount.ID)
suite.ErrorIs(err, db.ErrNoEntries)
- suite.Nil(rejectedFollowRequest)
}
func (suite *RelationshipTestSuite) TestGetAccountFollowRequests() {
@@ -440,42 +728,49 @@ func (suite *RelationshipTestSuite) TestGetAccountFollowRequests() {
suite.FailNow(err.Error())
}
- followRequests, err := suite.db.GetFollowRequests(ctx, "", targetAccount.ID)
+ followRequests, err := suite.db.GetAccountFollowRequests(ctx, targetAccount.ID)
suite.NoError(err)
suite.Len(followRequests, 1)
}
func (suite *RelationshipTestSuite) TestGetAccountFollows() {
account := suite.testAccounts["local_account_1"]
- follows, err := suite.db.GetFollows(context.Background(), account.ID, "")
+ follows, err := suite.db.GetAccountFollows(context.Background(), account.ID)
suite.NoError(err)
suite.Len(follows, 2)
}
+func (suite *RelationshipTestSuite) TestCountAccountFollowsLocalOnly() {
+ account := suite.testAccounts["local_account_1"]
+ followsCount, err := suite.db.CountAccountLocalFollows(context.Background(), account.ID)
+ suite.NoError(err)
+ suite.Equal(2, followsCount)
+}
+
func (suite *RelationshipTestSuite) TestCountAccountFollows() {
account := suite.testAccounts["local_account_1"]
- followsCount, err := suite.db.CountFollows(context.Background(), account.ID, "")
+ followsCount, err := suite.db.CountAccountFollows(context.Background(), account.ID)
suite.NoError(err)
suite.Equal(2, followsCount)
}
-func (suite *RelationshipTestSuite) TestGetAccountFollowedBy() {
+func (suite *RelationshipTestSuite) TestGetAccountFollowers() {
account := suite.testAccounts["local_account_1"]
- follows, err := suite.db.GetFollows(context.Background(), "", account.ID)
+ follows, err := suite.db.GetAccountFollowers(context.Background(), account.ID)
suite.NoError(err)
suite.Len(follows, 2)
}
-func (suite *RelationshipTestSuite) TestGetLocalFollowersIDs() {
+func (suite *RelationshipTestSuite) TestCountAccountFollowers() {
account := suite.testAccounts["local_account_1"]
- accountIDs, err := suite.db.GetLocalFollowersIDs(context.Background(), account.ID)
+ followsCount, err := suite.db.CountAccountFollowers(context.Background(), account.ID)
suite.NoError(err)
- suite.EqualValues([]string{"01F8MH5NBDF2MV7CTC4Q5128HF", "01F8MH17FWEB39HZJ76B6VXSKF"}, accountIDs)
+ suite.Equal(2, followsCount)
}
-func (suite *RelationshipTestSuite) TestCountAccountFollowedBy() {
+func (suite *RelationshipTestSuite) TestCountAccountFollowersLocalOnly() {
account := suite.testAccounts["local_account_1"]
- followsCount, err := suite.db.CountFollows(context.Background(), "", account.ID)
+ followsCount, err := suite.db.CountAccountLocalFollowers(context.Background(), account.ID)
suite.NoError(err)
suite.Equal(2, followsCount)
}
@@ -484,18 +779,25 @@ func (suite *RelationshipTestSuite) TestUnfollowExisting() {
originAccount := suite.testAccounts["local_account_1"]
targetAccount := suite.testAccounts["admin_account"]
- uri, err := suite.db.Unfollow(context.Background(), originAccount.ID, targetAccount.ID)
+ follow, err := suite.db.GetFollow(context.Background(), originAccount.ID, targetAccount.ID)
suite.NoError(err)
- suite.Equal("http://localhost:8080/users/the_mighty_zork/follow/01F8PY8RHWRQZV038T4E8T9YK8", uri)
+ suite.NotNil(follow)
+
+ err = suite.db.DeleteFollowByID(context.Background(), follow.ID)
+ suite.NoError(err)
+
+ follow, err = suite.db.GetFollow(context.Background(), originAccount.ID, targetAccount.ID)
+ suite.EqualError(err, db.ErrNoEntries.Error())
+ suite.Nil(follow)
}
func (suite *RelationshipTestSuite) TestUnfollowNotExisting() {
originAccount := suite.testAccounts["local_account_1"]
targetAccountID := "01GTVD9N484CZ6AM90PGGNY7GQ"
- uri, err := suite.db.Unfollow(context.Background(), originAccount.ID, targetAccountID)
- suite.NoError(err)
- suite.Empty(uri)
+ follow, err := suite.db.GetFollow(context.Background(), originAccount.ID, targetAccountID)
+ suite.EqualError(err, db.ErrNoEntries.Error())
+ suite.Nil(follow)
}
func (suite *RelationshipTestSuite) TestUnfollowRequestExisting() {
@@ -510,22 +812,29 @@ func (suite *RelationshipTestSuite) TestUnfollowRequestExisting() {
TargetAccountID: targetAccount.ID,
}
- if err := suite.db.Put(ctx, followRequest); err != nil {
+ if err := suite.db.PutFollowRequest(ctx, followRequest); err != nil {
suite.FailNow(err.Error())
}
- uri, err := suite.db.UnfollowRequest(context.Background(), originAccount.ID, targetAccount.ID)
+ followRequest, err := suite.db.GetFollowRequest(context.Background(), originAccount.ID, targetAccount.ID)
+ suite.NoError(err)
+ suite.NotNil(followRequest)
+
+ err = suite.db.DeleteFollowRequestByID(context.Background(), followRequest.ID)
suite.NoError(err)
- suite.Equal("http://localhost:8080/weeeeeeeeeeeeeeeee", uri)
+
+ followRequest, err = suite.db.GetFollowRequest(context.Background(), originAccount.ID, targetAccount.ID)
+ suite.EqualError(err, db.ErrNoEntries.Error())
+ suite.Nil(followRequest)
}
func (suite *RelationshipTestSuite) TestUnfollowRequestNotExisting() {
originAccount := suite.testAccounts["local_account_1"]
targetAccountID := "01GTVD9N484CZ6AM90PGGNY7GQ"
- uri, err := suite.db.UnfollowRequest(context.Background(), originAccount.ID, targetAccountID)
- suite.NoError(err)
- suite.Empty(uri)
+ followRequest, err := suite.db.GetFollowRequest(context.Background(), originAccount.ID, targetAccountID)
+ suite.EqualError(err, db.ErrNoEntries.Error())
+ suite.Nil(followRequest)
}
func TestRelationshipTestSuite(t *testing.T) {