From 94a85d21176ca52e6f8423a8ab83159c2a785ae1 Mon Sep 17 00:00:00 2001 From: Erik Winter Date: Sun, 18 Aug 2024 19:34:27 +0200 Subject: [PATCH] mem tests --- go.mod | 2 ++ go.sum | 2 ++ service/memory.go | 9 ++++++++ service/memory_test.go | 50 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 go.sum diff --git a/go.mod b/go.mod index c1d7817..bbdf9bb 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module code.ewintr.nl/planner go 1.21.5 + +require github.com/google/go-cmp v0.6.0 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..5a8d551 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= diff --git a/service/memory.go b/service/memory.go index 16f4226..18d0e44 100644 --- a/service/memory.go +++ b/service/memory.go @@ -16,6 +16,15 @@ func (m *Memory) StoreProject(project Project) error { return nil } +func (m *Memory) RemoveProject(id string) error { + if _, ok := m.projects[id]; !ok { + return ErrNotFound + } + delete(m.projects, id) + + return nil +} + func (m *Memory) FindProject(id string) (Project, error) { project, ok := m.projects[id] if !ok { diff --git a/service/memory_test.go b/service/memory_test.go index 5454ea8..daa9e56 100644 --- a/service/memory_test.go +++ b/service/memory_test.go @@ -4,12 +4,15 @@ import ( "testing" "code.ewintr.nl/planner/service" + "github.com/google/go-cmp/cmp" ) func TestMemoryProjects(t *testing.T) { t.Parallel() mem := service.NewMemory() + + t.Log("start empty") actProjects, actErr := mem.FindAllProjects() if actErr != nil { t.Errorf("exp nil, got %v", actErr) @@ -17,4 +20,51 @@ func TestMemoryProjects(t *testing.T) { if len(actProjects) != 0 { t.Errorf("exp 0, got %d", len(actProjects)) } + + t.Log("add one") + p1 := service.Project{ + ID: "p1", + Name: "project 1", + } + p2 := service.Project{ + ID: "p2", + Name: "project 2", + } + if actErr := mem.StoreProject(p1); actErr != nil { + t.Errorf("exp nil, got %v", actErr) + } + actProjects, actErr = mem.FindAllProjects() + if actErr != nil { + t.Errorf("exp nil, got %v", actErr) + } + expProjects := []service.Project{p1} + if diff := cmp.Diff(expProjects, actProjects); diff != "" { + t.Errorf("(-exp, +got):\n%s", diff) + } + + t.Log("add second") + if actErr := mem.StoreProject(p2); actErr != nil { + t.Errorf("exp nil, got %v", actErr) + } + actProjects, actErr = mem.FindAllProjects() + if actErr != nil { + t.Errorf("exp nil, got %v", actErr) + } + expProjects = []service.Project{p1, p2} + if diff := cmp.Diff(expProjects, actProjects); diff != "" { + t.Errorf("(-exp, +act):\n%s", diff) + } + + t.Log("remove first") + if actErr := mem.RemoveProject(p1.ID); actErr != nil { + t.Errorf("exp nil, got %v", actErr) + } + actProjects, actErr = mem.FindAllProjects() + if actErr != nil { + t.Errorf("exp nil, got %v", actErr) + } + expProjects = []service.Project{p2} + if diff := cmp.Diff(expProjects, actProjects); diff != "" { + t.Errorf("-exp, +act:\b%s", diff) + } }