29 lines
926 B
Go
29 lines
926 B
Go
package memory
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/Tencent/WeKnora/internal/application/repository"
|
||
|
|
"github.com/Tencent/WeKnora/internal/types"
|
||
|
|
"github.com/stretchr/testify/require"
|
||
|
|
"gorm.io/gorm"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestRememberUsingRepositoriesRollsBackWithApproval(t *testing.T) {
|
||
|
|
svc, db, tenants := newMemoryHarness(t)
|
||
|
|
ctx := enabledCtx(t, tenants, 1, "alice")
|
||
|
|
abort := errors.New("approval failed")
|
||
|
|
err := db.Transaction(func(tx *gorm.DB) error {
|
||
|
|
_, err := svc.RememberUsingRepositories(ctx, types.MemoryItem{Content: "直播前确认主题", Origin: types.MemoryOriginExplicit}, repository.NewMemoryRepository(tx), tenants)
|
||
|
|
require.NoError(t, err)
|
||
|
|
return abort
|
||
|
|
})
|
||
|
|
require.ErrorIs(t, err, abort)
|
||
|
|
var count int64
|
||
|
|
require.NoError(t, db.Model(&types.MemoryItem{}).Count(&count).Error)
|
||
|
|
require.Zero(t, count)
|
||
|
|
require.NoError(t, db.Model(&types.MemorySubject{}).Count(&count).Error)
|
||
|
|
require.Zero(t, count)
|
||
|
|
}
|