diff options
Diffstat (limited to 'record/morrow/morrow_test.go')
-rw-r--r-- | record/morrow/morrow_test.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/record/morrow/morrow_test.go b/record/morrow/morrow_test.go new file mode 100644 index 0000000..6523067 --- /dev/null +++ b/record/morrow/morrow_test.go @@ -0,0 +1,60 @@ +package morrow + +import ( + "os" + "path/filepath" + "testing" + "time" +) + +func date(year int, month time.Month, day int) time.Time { + return time.Date(year, month, day, 0, 0, 0, 0, time.UTC) +} + +func testFile(t *testing.T, name string) *os.File { + wd, err := os.Getwd() + if err != nil { + t.Fatal(err) + } + testFile := filepath.Join(wd, "testdata", name) + + f, err := os.Open(testFile) + if err != nil { + t.Fatal(err) + } + return f +} + +func TestRead(t *testing.T) { + f := testFile(t, "test.csv") + defer f.Close() + + r := NewReader(f) + rs, err := r.Read() + if err != nil { + t.Fatal(err) + } + + var tests = []struct { + t time.Time + text string + amount int64 + }{ + {date(2023, 10, 31), "Rema 1000", -15055}, + {date(2023, 10, 15), "Lønn", 750000}, + } + if len(rs) != len(tests) { + t.Fatalf("want %d records, got %d", len(tests), len(rs)) + } + for i, tt := range tests { + if !rs[i].Time.Equal(tt.t) { + t.Errorf("#%d: want Time = %s, got %s", i, tt.t, rs[i].Time) + } + if rs[i].Text != tt.text { + t.Errorf("#%d: want Text = %s, got %s", i, tt.text, rs[i].Text) + } + if rs[i].Amount != tt.amount { + t.Errorf("#%d: want Amount = %d, got %d", i, tt.amount, rs[i].Amount) + } + } +} |