summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-06-04 21:06:27 +0300
committerPaul Buetow <paul@buetow.org>2024-06-04 21:06:27 +0300
commit76a98c26a3c8963a7eb5ab99cc479ba49e7730d8 (patch)
tree8d0a52d268e2f6e5fe0e728085bc1116e29046fe /internal/server
parent889cb5d997004adf0f37e3c14c5792defef0b6dc (diff)
more on testing
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/repository/repository.go22
-rw-r--r--internal/server/repository/repository_test.go26
2 files changed, 37 insertions, 11 deletions
diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go
index a98d50c..02fa818 100644
--- a/internal/server/repository/repository.go
+++ b/internal/server/repository/repository.go
@@ -54,7 +54,12 @@ func (r Repository) put(entry types.Entry) error {
r.mu.Lock()
defer r.mu.Unlock()
r.entries[entry.ID] = entry
- return entry.SaveFile(r.entryPath(entry))
+
+ bytes, err := entry.Serialize()
+ if err != err {
+ return err
+ }
+ return r.fs.WriteFile(r.entryPath(entry), bytes)
}
// Load repository into memory
@@ -66,9 +71,12 @@ func (r Repository) load() error {
var errs []error
for _, filePath := range filePaths {
- entry, err := types.NewEntryFromFile(filePath, r.fs)
+ bytes, err := r.fs.ReadFile(filePath)
+ if err != nil {
+ continue
+ }
+ entry, err := types.NewEntry(bytes)
if err != err {
- errs = append(errs, err)
continue
}
if err := r.put(entry); err != nil {
@@ -125,7 +133,7 @@ func (r Repository) Merge(otherEntry types.Entry) error {
entry, ok := r.entries[otherEntry.ID]
if !ok {
var err error
- if entry, err = types.NewEntryFromCopy(otherEntry, r.fs); err != nil {
+ if entry, err = types.NewEntryFromCopy(otherEntry); err != nil {
return err
}
}
@@ -134,5 +142,9 @@ func (r Repository) Merge(otherEntry types.Entry) error {
r.entries[otherEntry.ID] = entry
// TODO: Only save to file when actually changed
- return entry.SaveFile(r.entryPath(entry))
+ bytes, err := entry.Serialize()
+ if err != err {
+ return err
+ }
+ return r.fs.WriteFile(r.entryPath(entry), bytes)
}
diff --git a/internal/server/repository/repository_test.go b/internal/server/repository/repository_test.go
index 6581a3a..3db88f8 100644
--- a/internal/server/repository/repository_test.go
+++ b/internal/server/repository/repository_test.go
@@ -13,8 +13,8 @@ func TestRepositoryPutGet(t *testing.T) {
fs := make(vfs.MemoryFS)
repo := newRepository("./data", fs)
- entry1, _ := makeAnEntry(fs)
- entry2, _ := makeAnotherEntry(fs)
+ entry1, _ := makeAnEntry()
+ entry2, _ := makeAnotherEntry()
entries := []types.Entry{entry1, entry2}
for _, entry := range entries {
@@ -31,7 +31,21 @@ func TestRepositoryPutGet(t *testing.T) {
}
}
-func makeAnEntry(fs fs) (types.Entry, error) {
+func TestRepositoryLoad(t *testing.T) {
+ t.Parallel()
+
+ fs := make(vfs.MemoryFS)
+ repo := newRepository("./data", fs)
+
+ // TODO: Finish implementing this test
+ entry1, _ := makeAnEntry()
+ bytes, _ := entry1.Serialize()
+ _ = repo.fs.WriteFile("./data/foo.json", bytes)
+
+ t.Log(fs)
+}
+
+func makeAnEntry() (types.Entry, error) {
entry := `
{
"Body": "Body text here",
@@ -41,10 +55,10 @@ func makeAnEntry(fs fs) (types.Entry, error) {
]
}
`
- return types.NewEntry([]byte(entry), fs)
+ return types.NewEntry([]byte(entry))
}
-func makeAnotherEntry(fs fs) (types.Entry, error) {
+func makeAnotherEntry() (types.Entry, error) {
entry := `
{
"Body": "Another text here",
@@ -55,7 +69,7 @@ func makeAnotherEntry(fs fs) (types.Entry, error) {
]
}
`
- return types.NewEntry([]byte(entry), fs)
+ return types.NewEntry([]byte(entry))
}
// TODO: Write unit tests for the remainder of the repo methods