summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-08-15 10:51:21 +0300
committerPaul Buetow <paul@buetow.org>2024-08-15 10:51:21 +0300
commit98599f8c592dcf1eb60c598328116b37d88fd1e4 (patch)
treee21466b1547e4d73e0ea47168b2a989cd7a4cce1
parentd45e0038bba79eddc00650b7abd84aa1ba82bb2f (diff)
fix test
-rw-r--r--internal/server/repository/repository_test.go11
-rw-r--r--internal/types/entry.go24
-rw-r--r--internal/types/entry_test.go18
3 files changed, 37 insertions, 16 deletions
diff --git a/internal/server/repository/repository_test.go b/internal/server/repository/repository_test.go
index 2d817ee..27840ed 100644
--- a/internal/server/repository/repository_test.go
+++ b/internal/server/repository/repository_test.go
@@ -143,6 +143,7 @@ func TestRepositoryMerge(t *testing.T) {
}
// TODO: Finish implementing this test
+// TODO: Also test merging Shared update status'
func TestRepositoryMergeFromPartner(t *testing.T) {
fs1 := make(vfs.MemoryFS)
repo1 := newRepository(server.ServerConfig{DataDir: "./data1"}, fs1)
@@ -262,8 +263,8 @@ func makeAnEntry() (types.Entry, error) {
{
"Body": "Body text here",
"Shared": [
- { "Name": "Foo", "Is": true },
- { "Name": "Bar", "Is": false }
+ { "Name": "Matodon", "Is": true },
+ { "Name": "LinkedIn", "Is": false }
]
}
`
@@ -275,9 +276,9 @@ func makeAnotherEntry() (types.Entry, error) {
{
"Body": "Another text here",
"Shared": [
- { "Name": "Foo", "Is": true },
- { "Name": "Bar", "Is": true },
- { "Name": "Baz", "Is": false }
+ { "Name": "Mastodon", "Is": true },
+ { "Name": "LinkedIn", "Is": true },
+ { "Name": "foo.zone", "Is": false }
]
}
`
diff --git a/internal/types/entry.go b/internal/types/entry.go
index 5dec916..117cb83 100644
--- a/internal/types/entry.go
+++ b/internal/types/entry.go
@@ -20,14 +20,7 @@ func (s Shared) String() string {
}
func (s Shared) Equals(other Shared) bool {
- switch {
- case s.Name != other.Name:
- return false
- case s.Is != other.Is:
- return false
- default:
- return true
- }
+ return s.Name == other.Name && s.Is == other.Is
}
type Entry struct {
@@ -51,32 +44,41 @@ func NewEntry(bytes []byte) (Entry, error) {
if err := json.Unmarshal(bytes, &e); err != nil {
return e, fmt.Errorf("unable to deserialise payload: %w", err)
}
+
e.initialize()
if e.ID == "" {
e.ID = fmt.Sprintf("%x", sha256.Sum256([]byte(e.Body)))
}
+
return e, nil
}
func NewEntryFromCopy(other Entry) (Entry, error) {
- var e Entry
+ e := other
e.initialize()
- e.ID = other.ID
- return e.Update(other)
+
+ e.Shared = make([]Shared, len(other.Shared))
+ copy(e.Shared, other.Shared)
+
+ return e, nil
}
func NewEntryFromTextFile(filePath string) (Entry, error) {
var e Entry
+
data, err := os.ReadFile(filePath)
if err != nil {
return e, err
}
+
e.Body = string(data)
if e.ID == "" {
e.ID = fmt.Sprintf("%x", sha256.Sum256([]byte(e.Body)))
}
+
e.initialize()
e.Checksum()
+
return e, nil
}
diff --git a/internal/types/entry_test.go b/internal/types/entry_test.go
index 6b7e289..4f26804 100644
--- a/internal/types/entry_test.go
+++ b/internal/types/entry_test.go
@@ -37,6 +37,24 @@ func TestEquals(t *testing.T) {
t.Log("both entries differ", ent1, ent2)
}
+func TestNewEntryFromCopy(t *testing.T) {
+ ent1, _, err := twoDifferentEntries()
+ if err != nil {
+ t.Error(err)
+ }
+
+ ent2, err := NewEntryFromCopy(ent1)
+ if err != nil {
+ t.Error(err)
+ }
+
+ if !ent1.Equals(ent2) {
+ t.Error("copy of entry ent1 does not equal")
+ t.Error("original:", ent1)
+ t.Error("copy: ", ent2)
+ }
+}
+
func TestUpdate(t *testing.T) {
t.Parallel()