feat: bootstrap reusable GoOmni framework
This commit is contained in:
40
examples/reference/repository/memory_test.go
Normal file
40
examples/reference/repository/memory_test.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package repository_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"git.yuntuo.hk/k2safe/go-omni/examples/reference/model"
|
||||
"git.yuntuo.hk/k2safe/go-omni/examples/reference/repository"
|
||||
)
|
||||
|
||||
func TestCanceledRequestsDoNotMutateStorage(t *testing.T) {
|
||||
store := repository.NewMemoryUsers()
|
||||
live := context.Background()
|
||||
user, err := store.Create(live, model.UserInput{Name: "Alice", Email: "alice@example.com"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
canceled, cancel := context.WithCancel(live)
|
||||
cancel()
|
||||
if _, err := store.Create(canceled, model.UserInput{Name: "Bob", Email: "bob@example.com"}); !errors.Is(err, context.Canceled) {
|
||||
t.Fatalf("create: %v", err)
|
||||
}
|
||||
if _, err := store.Update(canceled, user.ID, model.UserInput{Name: "Changed", Email: "changed@example.com"}); !errors.Is(err, context.Canceled) {
|
||||
t.Fatalf("update: %v", err)
|
||||
}
|
||||
if err := store.Delete(canceled, user.ID); !errors.Is(err, context.Canceled) {
|
||||
t.Fatalf("delete: %v", err)
|
||||
}
|
||||
if _, err := store.Get(canceled, user.ID); !errors.Is(err, context.Canceled) {
|
||||
t.Fatalf("get: %v", err)
|
||||
}
|
||||
if _, err := store.List(canceled, 1, 20); !errors.Is(err, context.Canceled) {
|
||||
t.Fatalf("list: %v", err)
|
||||
}
|
||||
page, err := store.List(live, 1, 20)
|
||||
if err != nil || page.Total != 1 || len(page.Items) != 1 || page.Items[0] != user {
|
||||
t.Fatalf("canceled requests changed stored data: %+v, %v", page, err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user