summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-08-14 10:28:18 +0300
committerPaul Buetow <paul@buetow.org>2024-08-14 10:28:18 +0300
commitd45e0038bba79eddc00650b7abd84aa1ba82bb2f (patch)
treef212abf9253ce82eaeee977eb3abdd6c37ad2765 /internal/server
parentd7eac7141aa04ee54af7222ae5de74b6a0a49299 (diff)
initial unit test for remote merge
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/repository/repository_test.go84
1 files changed, 57 insertions, 27 deletions
diff --git a/internal/server/repository/repository_test.go b/internal/server/repository/repository_test.go
index b6717b9..2d817ee 100644
--- a/internal/server/repository/repository_test.go
+++ b/internal/server/repository/repository_test.go
@@ -2,6 +2,7 @@ package repository
import (
"context"
+ "fmt"
"testing"
"codeberg.org/snonux/gos/internal/config/server"
@@ -176,43 +177,72 @@ func TestRepositoryMergeFromPartner(t *testing.T) {
}
getEntry := func(ctx context.Context, partner, id string, ent *types.Entry) error {
- // var (
- // ent_ []types.Entry
- // ok bool
- // )
-
- // switch partner {
- // case "repo1":
- // ent_, ok = repo1.Get(id)
- // case "repo2":
- // ent_, ok = repo2.Get(id)
- // }
+ var (
+ ent_ types.Entry
+ err error
+ )
- return nil
+ switch partner {
+ case "repo1":
+ ent_, err = repo1.Get(id)
+ case "repo2":
+ ent_, err = repo2.Get(id)
+ }
- // if ok != nil {
- // return fmt.Errorf("")
- // }
- // *pairs = pairs_
+ if err != nil {
+ return err
+ }
+ *ent = ent_
- // t.Log("got pairs", *pairs, "from repo", partner)
- // return nil
- /*
- uri := fmt.Sprintf("%s/get?id=%s", partner, id)
- return easyhttp.GetData(ctx, uri, r.conf.APIKey, ent)
- */
- // func (r Repository) Get(id string) (types.Entry, bool) {
+ t.Log("got entry", *ent, "from repo", partner)
+ return nil
}
+ // Merge entries from repo2 into repo1
if err := repo1.mergeFromPartner(context.Background(), "repo2", getPair, getEntry); err != nil {
- t.Log(err)
- //t.Error(err)
+ t.Error(err)
}
+
+ // Merge entries from repo1 into repo2
if err := repo2.mergeFromPartner(context.Background(), "repo1", getPair, getEntry); err != nil {
- t.Log(err)
- // t.Error(err)
+ t.Error(err)
}
+ // Compare both repos, they should now contain the same entries
+ compare := func(repo1, repo2 Repository) error {
+ pairs, err := repo1.List()
+ if err != nil {
+ return err
+ }
+
+ for _, pair := range pairs {
+ ent1, err := repo1.Get(pair.ID)
+ if err != nil {
+ return err
+ }
+ ent2, err := repo2.Get(pair.ID)
+ if err != nil {
+ return err
+ }
+
+ t.Log("comparing entries")
+ t.Log("ent1", ent1)
+ t.Log("ent2", ent2)
+
+ if !ent1.Equals(ent2) {
+ return fmt.Errorf("entries ent1 and ent2 don't equal")
+ }
+ }
+
+ return nil
+ }
+
+ if err := compare(repo1, repo2); err != nil {
+ t.Error(err)
+ }
+ if err := compare(repo2, repo1); err != nil {
+ t.Error(err)
+ }
}
func makeEntries(t *testing.T) []types.Entry {