Preserve the underlying database error across all drivers and cover the wrapping behavior with focused tests. Make creation tests wait for the asynchronous completion callbacks to avoid timing-dependent assertions.
26 lines
555 B
Go
26 lines
555 B
Go
package sqlite
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/usememos/memos/store"
|
|
)
|
|
|
|
type failingSQLiteSpaceSummaryRow struct {
|
|
err error
|
|
}
|
|
|
|
func (row failingSQLiteSpaceSummaryRow) Scan(...any) error {
|
|
return row.err
|
|
}
|
|
|
|
func TestScanSQLiteSpaceSummaryWrapsErrors(t *testing.T) {
|
|
cause := errors.New("scan failed")
|
|
err := scanSQLiteSpaceSummary(failingSQLiteSpaceSummaryRow{err: cause}, &store.Space{})
|
|
|
|
require.ErrorIs(t, err, cause)
|
|
require.ErrorContains(t, err, "failed to populate SQLite space summary")
|
|
}
|