summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-08-16 10:19:37 +0300
committerPaul Buetow <paul@buetow.org>2024-08-16 10:19:37 +0300
commit3fe31adbbd5e26144510d91b312c891c97b294ff (patch)
treedb6bc3e13ec64eb4ba1eeab168ef2f11046ea97c /internal
parent921c62587903c9aed342c196089e6af55dabf84f (diff)
slight refactor
Diffstat (limited to 'internal')
-rw-r--r--internal/server/repository/repository.go13
-rw-r--r--internal/server/repository/repository_test.go42
2 files changed, 42 insertions, 13 deletions
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 }
]
}