From 3fe31adbbd5e26144510d91b312c891c97b294ff Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 16 Aug 2024 10:19:37 +0300 Subject: slight refactor --- internal/server/repository/repository.go | 13 +++++---- internal/server/repository/repository_test.go | 42 ++++++++++++++++++++++----- 2 files changed, 42 insertions(+), 13 deletions(-) (limited to 'internal') diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go index e8e2ee1..8f9ce09 100644 --- a/internal/server/repository/repository.go +++ b/internal/server/repository/repository.go @@ -65,7 +65,7 @@ func newRepository(conf server.ServerConfig, fs fs) Repository { } } -func (r Repository) put(ent types.Entry) error { +func (r Repository) Put(ent types.Entry) error { r.mu.Lock() defer r.mu.Unlock() r.entries[ent.ID] = ent @@ -94,17 +94,19 @@ func (r Repository) load() error { bytes, err := r.fs.ReadFile(filePath) if err != nil { + errs = append(errs, err) continue } ent, err := types.NewEntry(bytes) - if err != err { + if err != nil { + errs = append(errs, err) continue } - if err := r.put(ent); err != nil { - errs = append(errs, err) - } + r.mu.Lock() + r.entries[ent.ID] = ent + r.mu.Unlock() } if len(errs) == 0 { @@ -214,7 +216,6 @@ func (r Repository) Merge(otherEnt types.Entry) error { return r.fs.WriteFile(r.entryPath(ent), bytes) } -// TODO: WHens omething has merged from remotely, make sure to commit/sync to disk func (r Repository) MergeRemotely(ctx context.Context) error { var errs []error diff --git a/internal/server/repository/repository_test.go b/internal/server/repository/repository_test.go index 79ea293..e96df0c 100644 --- a/internal/server/repository/repository_test.go +++ b/internal/server/repository/repository_test.go @@ -18,7 +18,7 @@ func TestRepositoryPutGet(t *testing.T) { for _, ent := range makeEntries(t) { t.Run(ent.ID, func(t *testing.T) { - _ = repo.put(ent) + _ = repo.Put(ent) entGot, err := repo.Get(ent.ID) if err != nil { t.Error(err) @@ -69,7 +69,7 @@ func TestRepositoryList(t *testing.T) { entries := makeEntries(t) for _, ent := range entries { - _ = repo.put(ent) + _ = repo.Put(ent) } pairs, _ := repo.List() @@ -98,7 +98,7 @@ func TestRepositoryHasSameEntry(t *testing.T) { fs := make(vfs.MemoryFS) repo := newRepository(server.ServerConfig{DataDir: "./data"}, fs) ent, _ := makeAnEntry() - _ = repo.put(ent) + _ = repo.Put(ent) pair := entryPair{ent.ID, ent.Checksum()} if !repo.hasSameEntry(pair) { @@ -117,7 +117,7 @@ func TestRepositoryMerge(t *testing.T) { fs := make(vfs.MemoryFS) repo := newRepository(server.ServerConfig{DataDir: "./data"}, fs) ent1, _ := makeAnEntry() - _ = repo.put(ent1) + _ = repo.Put(ent1) ent2, _ := makeAnotherEntry() // Need to have the same IDs so that the entries will actually be merged @@ -149,9 +149,9 @@ func TestRepositoryMergeFromPartner(t *testing.T) { repo2 := newRepository(server.ServerConfig{DataDir: "./data2"}, fs2) ent1, _ := makeAnEntry() - _ = repo1.put(ent1) + _ = repo1.Put(ent1) ent2, _ := makeAnotherEntry() - _ = repo2.put(ent2) + _ = repo2.Put(ent2) getPair := func(ctx context.Context, partner string, pairs *[]entryPair) error { var ( @@ -243,6 +243,34 @@ func TestRepositoryMergeFromPartner(t *testing.T) { t.Error(err) } }) + + // t.Run("Change shared flag and merge to partner", func(t *testing.T) { + // // Validate the corrent test setup + // if ent1.Shared[1].Name != "LinkedIn" || ent1.Shared[1].Is != false { + // t.Error("for the test expected LinkedIn not to be shared", ent1.Shared[1]) + // } + + // // Simulate that the entry was shared to LinkedIn social media! + // ent1.Shared[1].Is = true + + // // Before merging, repos should be out of sync. + // err := compare(repo1, repo2) + // if err == nil { + // t.Error("Expected both repositories to be out of sync") + // } else { + // t.Log("as expected repos are out of sync", err) + // } + + // // Partner is merging the repo. + // if err := repo2.mergeFromPartner(context.Background(), "repo1", getPair, getEntry); err != nil { + // t.Error(err) + // } + + // // Now, partners should be in sync. + // if err := compare(repo1, repo2); err != nil { + // t.Error(err) + // } + // }) } func makeEntries(t *testing.T) []types.Entry { @@ -262,7 +290,7 @@ func makeAnEntry() (types.Entry, error) { { "Body": "Body text here", "Shared": [ - { "Name": "Matodon", "Is": true }, + { "Name": "Mastodon", "Is": true }, { "Name": "LinkedIn", "Is": false } ] } -- cgit v1.2.3