37 lines
744 B
Go
37 lines
744 B
Go
package chain_of_responsibility
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestCORPattern(t *testing.T) {
|
|
book := Book{"Go design patterns", "Ismayil Malik"}
|
|
bytes, _ := json.Marshal(book)
|
|
bookDb := &BookDb{
|
|
make(map[string]Book),
|
|
nil,
|
|
}
|
|
logger := &Logger{
|
|
next: bookDb,
|
|
}
|
|
chain := &Deserializer{
|
|
next: logger,
|
|
}
|
|
|
|
t.Run(`It will be unmurshalled on deserializer handler then will be logged
|
|
on logger handler and at the end will be presisted by third handler`, func(t *testing.T) {
|
|
|
|
err := chain.Handle(bytes)
|
|
if err != nil {
|
|
t.Fatalf("Something went wrong: %s", err.Error())
|
|
}
|
|
|
|
storedBook := bookDb.store[book.Title]
|
|
if storedBook != book {
|
|
t.Errorf("Expected %b but got %b", book, storedBook)
|
|
}
|
|
})
|
|
|
|
}
|