refactor: remove dataset cron records

This commit is contained in:
2026-07-23 23:08:25 +08:00
parent 3705d75e59
commit fbd142803a
14 changed files with 125 additions and 380 deletions

View File

@@ -7,7 +7,6 @@ import (
"net/url"
"os"
"testing"
"time"
"github.com/stretchr/testify/require"
"senlinai-agent/backend/internal/models"
@@ -136,13 +135,12 @@ func TestSyncSourcesRecordsFeedFailure(t *testing.T) {
}
require.NoError(t, database.Create(&source).Error)
crons, err := newServiceWithFetcher(database, failingFeedFetcher{}).SyncSources(context.Background(), user.ID)
results, err := newServiceWithFetcher(database, failingFeedFetcher{}).SyncSources(context.Background(), user.ID)
require.NoError(t, err)
require.Len(t, crons, 1)
require.Equal(t, "failed", crons[0].Status)
require.False(t, crons[0].Enabled)
require.Contains(t, crons[0].LastResult, "feed unavailable")
require.Len(t, results, 1)
require.Equal(t, "failed", results[0].Status)
require.Contains(t, results[0].Result, "feed unavailable")
}
func TestSyncAllSourcesCollectsEnabledRSSSourcesForEveryUser(t *testing.T) {
@@ -157,10 +155,10 @@ func TestSyncAllSourcesCollectsEnabledRSSSourcesForEveryUser(t *testing.T) {
require.NoError(t, database.Create(&source).Error)
}
crons, err := newServiceWithFetcher(database, staticFeedFetcher{}).SyncAllSources(context.Background())
results, err := newServiceWithFetcher(database, staticFeedFetcher{}).SyncAllSources(context.Background())
require.NoError(t, err)
require.Len(t, crons, 2)
require.Len(t, results, 2)
var itemCount int64
require.NoError(t, database.Model(&models.SaDatasetItem{}).Count(&itemCount).Error)
require.Equal(t, int64(2), itemCount)
@@ -185,7 +183,7 @@ func TestSyncSourcesCollectsMultipleSourcesForOneOwner(t *testing.T) {
}
}
func TestQueueSourcesRunsInBackgroundAndRejectsOverlap(t *testing.T) {
func TestSyncSourcesRejectsOverlap(t *testing.T) {
database := newDatasetTestDatabase(t)
user := createDatasetTestUser(t, database, "queued-feed-owner@example.com")
source := models.SaDatasetSource{
@@ -199,20 +197,24 @@ func TestQueueSourcesRunsInBackgroundAndRejectsOverlap(t *testing.T) {
}
service := newServiceWithFetcher(database, fetcher)
queued, err := service.QueueSources(user.ID)
require.NoError(t, err)
require.Len(t, queued, 1)
require.Equal(t, "pending", queued[0].Status)
type syncOutcome struct {
results []SyncResult
err error
}
done := make(chan syncOutcome, 1)
go func() {
results, err := service.SyncSources(context.Background(), user.ID)
done <- syncOutcome{results: results, err: err}
}()
<-fetcher.started
_, err = service.QueueSources(user.ID)
_, err := service.SyncSources(context.Background(), user.ID)
require.ErrorIs(t, err, ErrSyncInProgress)
require.ErrorIs(t, service.DeleteSource(user.ID, source.Identity), ErrSyncInProgress)
close(fetcher.release)
require.Eventually(t, func() bool {
runs, listErr := service.ListCrons(user.ID)
return listErr == nil && len(runs) == 1 && runs[0].Status == "completed"
}, time.Second, 10*time.Millisecond)
outcome := <-done
require.NoError(t, outcome.err)
require.Len(t, outcome.results, 1)
require.Equal(t, "completed", outcome.results[0].Status)
}
type failingFeedFetcher struct{}