refactor: remove dataset cron records
This commit is contained in:
@@ -8,7 +8,6 @@ import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/glebarez/sqlite"
|
||||
"github.com/stretchr/testify/require"
|
||||
@@ -95,25 +94,20 @@ func TestDatasetAPIConnectsSourcesItemsAndSyncTasks(t *testing.T) {
|
||||
require.Equal(t, item.Title, depositedNote.Title)
|
||||
require.Contains(t, depositedNote.Markdown, "原文链接")
|
||||
|
||||
firstSync := performDatasetRequest(t, ownerRouter, http.MethodPost, "/api/v1/dataset-crons/sync", map[string]any{})
|
||||
require.Equal(t, http.StatusAccepted, firstSync.Code)
|
||||
var firstCrons []CronDTO
|
||||
require.NoError(t, json.Unmarshal(firstSync.Body.Bytes(), &firstCrons))
|
||||
require.Len(t, firstCrons, 1)
|
||||
require.Equal(t, "pending", firstCrons[0].Status)
|
||||
firstCompleted := waitForDatasetRun(t, ownerRouter, firstCrons[0].ID)
|
||||
require.Equal(t, "completed", firstCompleted.Status)
|
||||
require.Contains(t, firstCompleted.LastResult, "format=rss")
|
||||
firstSync := performDatasetRequest(t, ownerRouter, http.MethodPost, "/api/v1/dataset-sources/sync", map[string]any{})
|
||||
require.Equal(t, http.StatusOK, firstSync.Code)
|
||||
var firstResults []SyncResultDTO
|
||||
require.NoError(t, json.Unmarshal(firstSync.Body.Bytes(), &firstResults))
|
||||
require.Len(t, firstResults, 1)
|
||||
require.Equal(t, "completed", firstResults[0].Status)
|
||||
require.Contains(t, firstResults[0].Result, "format=rss")
|
||||
|
||||
var secondSync *httptest.ResponseRecorder
|
||||
require.Eventually(t, func() bool {
|
||||
secondSync = performDatasetRequest(t, ownerRouter, http.MethodPost, "/api/v1/dataset-crons/sync", map[string]any{})
|
||||
return secondSync.Code == http.StatusAccepted
|
||||
}, time.Second, 10*time.Millisecond)
|
||||
var secondCrons []CronDTO
|
||||
require.NoError(t, json.Unmarshal(secondSync.Body.Bytes(), &secondCrons))
|
||||
require.NotEqual(t, firstCrons[0].ID, secondCrons[0].ID)
|
||||
waitForDatasetRun(t, ownerRouter, secondCrons[0].ID)
|
||||
secondSync := performDatasetRequest(t, ownerRouter, http.MethodPost, "/api/v1/dataset-sources/sync", map[string]any{})
|
||||
require.Equal(t, http.StatusOK, secondSync.Code)
|
||||
var secondResults []SyncResultDTO
|
||||
require.NoError(t, json.Unmarshal(secondSync.Body.Bytes(), &secondResults))
|
||||
require.Len(t, secondResults, 1)
|
||||
require.Equal(t, "completed", secondResults[0].Status)
|
||||
var collectedItems []models.SaDatasetItem
|
||||
require.NoError(t, database.Where("source_id = ?", 1).Find(&collectedItems).Error)
|
||||
require.Len(t, collectedItems, 2)
|
||||
@@ -129,11 +123,9 @@ func TestDatasetAPIConnectsSourcesItemsAndSyncTasks(t *testing.T) {
|
||||
|
||||
deleted := performDatasetRequest(t, ownerRouter, http.MethodDelete, "/api/v1/dataset-sources/"+source.ID, nil)
|
||||
require.Equal(t, http.StatusNoContent, deleted.Code)
|
||||
var itemCount, cronCount int64
|
||||
var itemCount int64
|
||||
require.NoError(t, database.Model(&models.SaDatasetItem{}).Count(&itemCount).Error)
|
||||
require.NoError(t, database.Model(&models.SaDatasetCron{}).Count(&cronCount).Error)
|
||||
require.Zero(t, itemCount)
|
||||
require.Zero(t, cronCount)
|
||||
}
|
||||
|
||||
func TestDatasetSourceAuthorizationUsesOwner(t *testing.T) {
|
||||
@@ -241,7 +233,6 @@ func newDatasetTestDatabase(t *testing.T) *gorm.DB {
|
||||
&models.SaUser{},
|
||||
&models.SaDatasetSource{},
|
||||
&models.SaDatasetItem{},
|
||||
&models.SaDatasetCron{},
|
||||
&models.SaProject{},
|
||||
&models.SaNote{},
|
||||
))
|
||||
@@ -252,29 +243,6 @@ func newDatasetTestDatabase(t *testing.T) *gorm.DB {
|
||||
return database
|
||||
}
|
||||
|
||||
func waitForDatasetRun(t *testing.T, router http.Handler, identity string) CronDTO {
|
||||
t.Helper()
|
||||
var completed CronDTO
|
||||
require.Eventually(t, func() bool {
|
||||
response := performDatasetRequest(t, router, http.MethodGet, "/api/v1/dataset-crons", nil)
|
||||
if response.Code != http.StatusOK {
|
||||
return false
|
||||
}
|
||||
var runs []CronDTO
|
||||
if json.Unmarshal(response.Body.Bytes(), &runs) != nil {
|
||||
return false
|
||||
}
|
||||
for _, run := range runs {
|
||||
if run.ID == identity && (run.Status == "completed" || run.Status == "failed") {
|
||||
completed = run
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}, time.Second, 10*time.Millisecond)
|
||||
return completed
|
||||
}
|
||||
|
||||
func createDatasetTestUser(t *testing.T, database *gorm.DB, email string) models.SaUser {
|
||||
t.Helper()
|
||||
user := models.SaUser{Email: email, DisplayName: email, PasswordHash: "hash", Role: "user"}
|
||||
|
||||
Reference in New Issue
Block a user