diff options
| author | JP Appel <jeanpierre.appel01@gmail.com> | 2025-04-27 00:49:27 -0400 |
|---|---|---|
| committer | JP Appel <jeanpierre.appel01@gmail.com> | 2025-04-27 00:49:27 -0400 |
| commit | 34b8d8ff1f9d65c08a9156d72f08cf548183c6f4 (patch) | |
| tree | a00fa0410a7bcde125a37b50b3a4956c838fa569 /pkg/data/put_test.go | |
| parent | 42527fdb0aca0d30652bb3052b80ab75ab057572 (diff) | |
Large commit; many features
Diffstat (limited to 'pkg/data/put_test.go')
| -rw-r--r-- | pkg/data/put_test.go | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/pkg/data/put_test.go b/pkg/data/put_test.go new file mode 100644 index 0000000..7e5ad38 --- /dev/null +++ b/pkg/data/put_test.go @@ -0,0 +1,98 @@ +package data_test + +import ( + "context" + "database/sql" + "errors" + "testing" + "time" + + "github.com/jpappel/atlas/pkg/data" + "github.com/jpappel/atlas/pkg/index" +) + +func TestPut_Insert(t *testing.T) { + tests := []struct { + name string + newDb func(t *testing.T) *sql.DB + doc index.Document + wantErr error + }{ + { + "insert on empty", + func(t *testing.T) *sql.DB { + t.Helper() + return data.NewMemDB() + }, + index.Document{ + Path: "/file", + Title: "A file", + Date: time.Unix(1, 0), + FileTime: time.Unix(2, 0), + Authors: []string{"jp"}, + Tags: []string{"foo", "bar", "oof", "baz"}, + }, + nil, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ctx := context.Background() + db := tt.newDb(t) + defer db.Close() + + p, err := data.NewPut(ctx, db, tt.doc) + if err != nil { + t.Fatalf("could not construct receiver type: %v", err) + } + + gotErr := p.Insert() + if !errors.Is(gotErr, tt.wantErr) { + t.Fatalf("Unexpected error on Insert():, want %v got %v", tt.wantErr, gotErr) + } else if gotErr != nil { + return + } + + f := data.Fill{Path: tt.doc.Path, Db: db} + gotDoc, err := f.Get(ctx) + if err != nil { + t.Fatal("Error while retrieving document for comparison:", err) + } + + if !gotDoc.Equal(tt.doc) { + t.Errorf("Retrieved doc is not stored doc!\nrecv: %+v\nsent: %+v", gotDoc, tt.doc) + } + }) + } +} + +func TestPutMany_Insert(t *testing.T) { + tests := []struct { + name string // description of this test case + // Named input parameters for receiver constructor. + db *sql.DB + documents map[string]*index.Document + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + p, err := data.NewPutMany(tt.db, tt.documents) + if err != nil { + t.Fatalf("could not construct receiver type: %v", err) + } + gotErr := p.Insert(context.Background()) + if gotErr != nil { + if !tt.wantErr { + t.Errorf("Insert() failed: %v", gotErr) + } + return + } + if tt.wantErr { + t.Fatal("Insert() succeeded unexpectedly") + } + }) + } +} + |
