diff options
Diffstat (limited to 'internal/tracker/tracker_test.go')
-rw-r--r-- | internal/tracker/tracker_test.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/internal/tracker/tracker_test.go b/internal/tracker/tracker_test.go new file mode 100644 index 0000000..c116174 --- /dev/null +++ b/internal/tracker/tracker_test.go @@ -0,0 +1,68 @@ +package tracker + +import ( + "testing" + "time" + + "github.com/spf13/afero" +) + +func TestTracker(t *testing.T) { + fs := afero.NewMemMapFs() + tracker, err := New(fs) + if err != nil { + t.Errorf("Must no err, got %v", err) + } + tid1, err := tracker.Add("activity 1", []string{}, []string{}) + if err != nil { + t.Errorf("Must no err, got %v", err) + } + if tid1 != 1 { + t.Errorf("Expected task id = 1, got %d", tid1) + } + tid2, err := tracker.Add("activity 2", []string{"tag1", "tag2"}, []string{"context1"}) + if err != nil { + t.Errorf("Must no err, got %v", err) + } + if tid2 != 2 { + t.Errorf("Expected task id = 2, got %d", tid2) + } + if err = tracker.Start(tid1, "work 1"); err != nil { + t.Errorf("Must no err, got %v", err) + } + list := tracker.List(false) + if len(list) != 1 { + t.Errorf("List %v expected to be from 1 element", list) + } + list2 := tracker.List(true) + if len(list2) != 2 { + t.Errorf("List %v expected to be from 2 elements", list2) + } + <- time.After(2 * time.Second) + if err := tracker.Stop(tid1); err != nil { + t.Errorf("Must no err, got %v", err) + } + list3 := tracker.List(false) + if len(list3) != 0 { + t.Errorf("List %v expected to be from 0 element", list3) + } + list4 := tracker.List(true) + for _, activity := range list4 { + if activity.ID != tid1 { + continue + } + if len(activity.Spans) != 1 { + t.Errorf("List %v expected to be from 1 element", activity.Spans) + } + sp := activity.Spans[0] + if sp.Stop == nil { + t.Errorf("Span end time must be not empty") + } + if !sp.Stop.After(sp.Start) { + t.Errorf("End span must be after start time") + } + if int(sp.Stop.Sub(sp.Start).Seconds()) != 2 { + t.Errorf("difference between %v and %v must be 2 seconds, got %f", sp.Start, sp.Stop, sp.Stop.Sub(sp.Start).Seconds()) + } + } +} |