mem tests

This commit is contained in:
Erik Winter 2024-08-18 19:34:27 +02:00
parent 16547ab7b8
commit 94a85d2117
4 changed files with 63 additions and 0 deletions

2
go.mod
View File

@ -1,3 +1,5 @@
module code.ewintr.nl/planner
go 1.21.5
require github.com/google/go-cmp v0.6.0 // indirect

2
go.sum Normal file
View File

@ -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=

View File

@ -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 {

View File

@ -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)
}
}