refactor: remove dataset cron records
This commit is contained in:
@@ -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{}
|
||||
|
||||
Reference in New Issue
Block a user