package repository import ( "errors" "testing" ) type partialSnapshotRows struct { returned bool scanErr error rowsErr error } func (r *partialSnapshotRows) Next() bool { if r.returned { return false } r.returned = true return true } func (r *partialSnapshotRows) Scan(dest ...any) error { if r.scanErr != nil { return r.scanErr } *dest[0].(*string) = "192.0.2.0/24" *dest[1].(**string) = nil *dest[2].(*string) = "cdn:test" return nil } func (r *partialSnapshotRows) Err() error { return r.rowsErr } func TestReadModuleSnapshotRowsRejectsPartialResults(t *testing.T) { sentinel := errors.New("simulated read failure") for _, tc := range []struct { name string rows *partialSnapshotRows }{ {"scan", &partialSnapshotRows{scanErr: sentinel}}, {"iteration", &partialSnapshotRows{rowsErr: sentinel}}, } { t.Run(tc.name, func(t *testing.T) { prefixes, err := readModuleSnapshotRows(tc.rows) if prefixes != nil || !errors.Is(err, sentinel) { t.Fatalf("partial snapshot returned: %+v %v", prefixes, err) } }) } }