58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package command_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"task/internal/command"
|
|
"task/internal/ticket"
|
|
)
|
|
|
|
func TestMoveTicketUndo(t *testing.T) {
|
|
dir := t.TempDir()
|
|
store := ticket.NewJSONStore(dir)
|
|
timeStore := ticket.NewJSONTimeStore(dir)
|
|
h := command.NewHistory()
|
|
|
|
created, err := store.Create(ticket.Ticket{
|
|
Title: "Misfiled", ProjectID: "inbox", Status: ticket.StatusTodo,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := timeStore.Create(ticket.TimeEntry{
|
|
TicketID: created.ID, ProjectID: "inbox", Duration: 15 * time.Minute, Source: ticket.SourceManual,
|
|
}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
after := created
|
|
after.ProjectID = "client"
|
|
if err := h.Do(&command.MoveTicket{
|
|
Store: store, TimeStore: timeStore, Before: created, After: after,
|
|
}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
list, _ := store.List("client")
|
|
if len(list) != 1 {
|
|
t.Fatalf("client len=%d", len(list))
|
|
}
|
|
entries, _ := timeStore.ListByTicket(created.ID)
|
|
if len(entries) != 1 || entries[0].ProjectID != "client" {
|
|
t.Fatalf("time entries: %+v", entries)
|
|
}
|
|
|
|
if err := h.Undo(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
list, _ = store.List("inbox")
|
|
if len(list) != 1 {
|
|
t.Fatalf("inbox after undo len=%d", len(list))
|
|
}
|
|
entries, _ = timeStore.ListByTicket(created.ID)
|
|
if len(entries) != 1 || entries[0].ProjectID != "inbox" {
|
|
t.Fatalf("time after undo: %+v", entries)
|
|
}
|
|
}
|