summaryrefslogtreecommitdiffstats
path: root/internal/store/store_test.go
blob: 40efef17cee909a1d1110d694d6ed2c8f6605942 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package store

import (
	"path/filepath"
	"testing"

	"aegis/internal/filter"
)

func TestStoreRoundTrip(t *testing.T) {
	path := filepath.Join(t.TempDir(), "state.json")
	s, err := Open(path)
	if err != nil {
		t.Fatal(err)
	}
	if err := s.UpsertArticle(Article{Key: "comp.test:1", Group: "comp.test", Number: 1, Raw: "Subject: test\r\n\r\nbody"}); err != nil {
		t.Fatal(err)
	}
	if err := s.SaveDraft(Draft{ID: "draft-1", Body: "hello"}); err != nil {
		t.Fatal(err)
	}
	s.SetFilters([]filter.Rule{{ID: "r", Enabled: true, Field: filter.FieldSubject, Operator: filter.OperatorContains, Pattern: "x", Action: filter.ActionHide}})
	if err := s.Save(); err != nil {
		t.Fatal(err)
	}
	reloaded, err := Open(path)
	if err != nil {
		t.Fatal(err)
	}
	snapshot := reloaded.Snapshot()
	if len(snapshot.Articles) != 1 || len(snapshot.Drafts) != 1 || len(snapshot.Filters) != 1 {
		t.Fatalf("unexpected snapshot: %#v", snapshot)
	}
}