From 96bcc15d6e3e820309c874fe39df11cb88b30af2 Mon Sep 17 00:00:00 2001 From: Dmitry Ilvokhin Date: Sat, 1 Mar 2025 20:10:26 +0000 Subject: Split logic to multiple files --- sent_test.go | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 sent_test.go (limited to 'sent_test.go') diff --git a/sent_test.go b/sent_test.go new file mode 100644 index 0000000..64b13d6 --- /dev/null +++ b/sent_test.go @@ -0,0 +1,106 @@ +package main + +import ( + "os" + "path/filepath" + "reflect" + "testing" +) + +func TestReadSentNew(t *testing.T) { + tmp := t.TempDir() + filename := filepath.Join(tmp, "does-not-exist.json") + got, err := readSent(filename) + if err != nil { + t.Fatal(err) + } + if len(got) > 0 { + t.Errorf("Expect empty slice, but got: %v", got) + } +} + +func TestReadSent(t *testing.T) { + tmp := t.TempDir() + filename := filepath.Join(tmp, "sent.json") + data := []byte(`[{"ID":156522206,"Price":"£2,500"}]`) + os.WriteFile(filename, data, 0644) + + got, err := readSent(filename) + if err != nil { + t.Fatal(err) + } + want := []flat{ + flat{ID: 156522206, Price: "£2,500"}, + } + if !reflect.DeepEqual(got, want) { + t.Errorf("readSent failed: got: %v, want: %v", got, want) + } +} + +func TestRemoveAlreadySent(t *testing.T) { + flats := []flat{ + flat{ + ID: 156522206, + Price: "£2,500", + }, + flat{ + ID: 158462822, + Price: "£3,000", + }} + sent := []flat{ + flat{ + ID: 156522206, + Price: "£2,500", + }, + } + + got := removeAlreadySent(flats, sent) + want := []flat{flat{ID: 158462822, Price: "£3,000"}} + if !reflect.DeepEqual(got, want) { + t.Errorf("removeAlreadySent failed: got: %v, want: %v", + got, want) + } + +} + +func TestWriteSentNew(t *testing.T) { + tmp := t.TempDir() + filename := filepath.Join(tmp, "sent.json") + flats := []flat{flat{ID: 156522206, Price: "£2,500"}} + + err := writeSent(flats, filename) + if err != nil { + t.Fatal(err) + } + got, err := os.ReadFile(filename) + if err != nil { + t.Fatal(err) + } + want := []byte(`[{"ID":156522206,"Price":"£2,500"}]`) + if !reflect.DeepEqual(got, want) { + t.Errorf("writeSent failed: got: %v, want: %v", got, want) + } +} + +func TestWriteSentOverride(t *testing.T) { + tmp := t.TempDir() + filename := filepath.Join(tmp, "sent.json") + _, err := os.Create(filename) + if err != nil { + t.Fatal(err) + } + flats := []flat{flat{ID: 156522206, Price: "£2,500"}} + err = writeSent(flats, filename) + + if err != nil { + t.Fatal(err) + } + got, err := os.ReadFile(filename) + if err != nil { + t.Fatal(err) + } + want := []byte(`[{"ID":156522206,"Price":"£2,500"}]`) + if !reflect.DeepEqual(got, want) { + t.Errorf("writeSent failed: got: %v, want: %v", got, want) + } +} -- cgit v1.2.3-70-g09d2