From 12425508928a22637bb93a3bb53058a8a9f8b460 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Sat, 28 Feb 2026 12:57:34 -0500 Subject: [PATCH] test(system-settings): update tests for scan_poll_interval_seconds - Update validation to use scan_poll_interval_seconds field (1-3600 seconds) - Update all test cases and assertions to use new field name - Update integration test to reflect new field name --- cmd/server/tests/system_settings_test.go | 42 ++++++++++++------------ internal/handlers/system_settings.go | 34 +++++++++---------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/cmd/server/tests/system_settings_test.go b/cmd/server/tests/system_settings_test.go index f332f18..b6567f3 100644 --- a/cmd/server/tests/system_settings_test.go +++ b/cmd/server/tests/system_settings_test.go @@ -47,14 +47,14 @@ func TestSystemSettingsHandler(t *testing.T) { var response map[string]interface{} err := json.NewDecoder(rec.Body).Decode(&response) require.NoError(t, err) - assert.Contains(t, response, "scan_frequency_minutes") + assert.Contains(t, response, "scan_poll_interval_seconds") assert.Contains(t, response, "auto_scan_enabled") }) t.Run("PUT /api/libraries/scan-settings - Update without auth", func(t *testing.T) { payload := map[string]interface{}{ - "scan_frequency_minutes": 30, - "auto_scan_enabled": true, + "scan_poll_interval_seconds": 30, + "auto_scan_enabled": true, } jsonData, _ := json.Marshal(payload) @@ -70,8 +70,8 @@ func TestSystemSettingsHandler(t *testing.T) { token := setup.RegularToken payload := map[string]interface{}{ - "scan_frequency_minutes": 30, - "auto_scan_enabled": true, + "scan_poll_interval_seconds": 30, + "auto_scan_enabled": true, } jsonData, _ := json.Marshal(payload) @@ -88,8 +88,8 @@ func TestSystemSettingsHandler(t *testing.T) { token := setup.Token testCases := []struct { - name string - scanFrequencyMinutes int + name string + ScanPollIntervalSeconds int }{ {"Frequency too low (14 minutes)", 14}, {"Frequency too high (1441 minutes)", 1441}, @@ -100,8 +100,8 @@ func TestSystemSettingsHandler(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { payload := map[string]interface{}{ - "scan_frequency_minutes": tc.scanFrequencyMinutes, - "auto_scan_enabled": true, + "scan_poll_interval_seconds": tc.ScanPollIntervalSeconds, + "auto_scan_enabled": true, } jsonData, _ := json.Marshal(payload) @@ -137,9 +137,9 @@ func TestSystemSettingsHandler(t *testing.T) { token := setup.Token testCases := []struct { - name string - scanFrequencyMinutes int - autoScanEnabled bool + name string + ScanPollIntervalSeconds int + autoScanEnabled bool }{ {"Valid frequency (15 minutes)", 15, true}, {"Valid frequency (60 minutes)", 60, true}, @@ -151,8 +151,8 @@ func TestSystemSettingsHandler(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { payload := map[string]interface{}{ - "scan_frequency_minutes": tc.scanFrequencyMinutes, - "auto_scan_enabled": tc.autoScanEnabled, + "scan_poll_interval_seconds": tc.ScanPollIntervalSeconds, + "auto_scan_enabled": tc.autoScanEnabled, } jsonData, _ := json.Marshal(payload) @@ -167,7 +167,7 @@ func TestSystemSettingsHandler(t *testing.T) { var response map[string]interface{} err := json.NewDecoder(rec.Body).Decode(&response) require.NoError(t, err) - assert.Equal(t, float64(tc.scanFrequencyMinutes), response["scan_frequency_minutes"]) + assert.Equal(t, float64(tc.ScanPollIntervalSeconds), response["scan_poll_interval_seconds"]) assert.Equal(t, tc.autoScanEnabled, response["auto_scan_enabled"]) }) } @@ -176,7 +176,7 @@ func TestSystemSettingsHandler(t *testing.T) { t.Run("PUT /api/libraries/scan-settings - Update with invalid JSON", func(t *testing.T) { token := setup.Token - invalidJSON := []byte(`{scan_frequency_minutes: 60, auto_scan_enabled: true}`) + invalidJSON := []byte(`{scan_poll_interval_seconds: 60, auto_scan_enabled: true}`) req := httptest.NewRequest("PUT", "/api/libraries/scan-settings", bytes.NewBuffer(invalidJSON)) req.Header.Set("Content-Type", "application/json") @@ -192,18 +192,18 @@ func TestSystemSettingsHandler(t *testing.T) { func TestSystemSettingsIntegration(t *testing.T) { t.Run("System settings affect all libraries equally", func(t *testing.T) { settings := map[string]interface{}{ - "scan_frequency_minutes": 60, - "auto_scan_enabled": true, + "scan_poll_interval_seconds": 60, + "auto_scan_enabled": true, } - assert.Equal(t, 60, settings["scan_frequency_minutes"]) + assert.Equal(t, 60, settings["scan_poll_interval_seconds"]) assert.Equal(t, true, settings["auto_scan_enabled"]) }) t.Run("Disabling auto scan stops all library scans", func(t *testing.T) { settings := map[string]interface{}{ - "scan_frequency_minutes": 60, - "auto_scan_enabled": false, + "scan_poll_interval_seconds": 60, + "auto_scan_enabled": false, } assert.Equal(t, false, settings["auto_scan_enabled"]) diff --git a/internal/handlers/system_settings.go b/internal/handlers/system_settings.go index 1c38753..2eee33c 100644 --- a/internal/handlers/system_settings.go +++ b/internal/handlers/system_settings.go @@ -20,14 +20,14 @@ func NewSystemSettingsHandler(db *database.Queries) *SystemSettingsHandler { } type UpdateScanSettingsRequest struct { - ScanFrequencyMinutes int32 `json:"scan_frequency_minutes" validate:"required,min=15,max=1440"` - AutoScanEnabled bool `json:"auto_scan_enabled"` + ScanPollIntervalSeconds int32 `json:"scan_poll_interval_seconds" validate:"required,min=1,max=3600"` + AutoScanEnabled bool `json:"auto_scan_enabled"` } type ScanSettingsResponse struct { - ScanFrequencyMinutes int32 `json:"scan_frequency_minutes"` - AutoScanEnabled bool `json:"auto_scan_enabled"` - Message string `json:"message,omitempty"` + ScanPollIntervalSeconds int32 `json:"scan_poll_interval_seconds"` + AutoScanEnabled bool `json:"auto_scan_enabled"` + Message string `json:"message,omitempty"` } func (h *SystemSettingsHandler) UpdateScanSettings(c echo.Context) error { @@ -39,11 +39,11 @@ func (h *SystemSettingsHandler) UpdateScanSettings(c echo.Context) error { return c.JSON(http.StatusBadRequest, map[string]string{"error": err.Error()}) } - scanFrequencyValue := strconv.FormatInt(int64(req.ScanFrequencyMinutes), 10) + scanFrequencyValue := strconv.FormatInt(int64(req.ScanPollIntervalSeconds), 10) autoScanValue := strconv.FormatBool(req.AutoScanEnabled) err := h.db.UpdateSystemSetting(c.Request().Context(), database.UpdateSystemSettingParams{ - SettingKey: "scan_frequency_minutes", + SettingKey: "scan_poll_interval_seconds", SettingValue: scanFrequencyValue, }) if err != nil { @@ -65,19 +65,19 @@ func (h *SystemSettingsHandler) UpdateScanSettings(c echo.Context) error { } return c.JSON(http.StatusOK, ScanSettingsResponse{ - ScanFrequencyMinutes: req.ScanFrequencyMinutes, - AutoScanEnabled: req.AutoScanEnabled, - Message: "scan settings updated successfully", + ScanPollIntervalSeconds: req.ScanPollIntervalSeconds, + AutoScanEnabled: req.AutoScanEnabled, + Message: "scan settings updated successfully", }) } func (h *SystemSettingsHandler) GetScanSettings(c echo.Context) error { - scanFrequencySetting, err := h.db.GetSystemSetting(c.Request().Context(), "scan_frequency_minutes") + scanFrequencySetting, err := h.db.GetSystemSetting(c.Request().Context(), "scan_poll_interval_seconds") if err != nil { if err == pgx.ErrNoRows { return c.JSON(http.StatusOK, ScanSettingsResponse{ - ScanFrequencyMinutes: 60, - AutoScanEnabled: true, + ScanPollIntervalSeconds: 60, + AutoScanEnabled: true, }) } return c.JSON(http.StatusInternalServerError, map[string]string{"error": err.Error()}) @@ -87,8 +87,8 @@ func (h *SystemSettingsHandler) GetScanSettings(c echo.Context) error { if err != nil { if err == pgx.ErrNoRows { return c.JSON(http.StatusOK, ScanSettingsResponse{ - ScanFrequencyMinutes: 60, - AutoScanEnabled: true, + ScanPollIntervalSeconds: 60, + AutoScanEnabled: true, }) } return c.JSON(http.StatusInternalServerError, map[string]string{"error": err.Error()}) @@ -105,7 +105,7 @@ func (h *SystemSettingsHandler) GetScanSettings(c echo.Context) error { } return c.JSON(http.StatusOK, ScanSettingsResponse{ - ScanFrequencyMinutes: int32(scanFrequency), - AutoScanEnabled: autoScanEnabled, + ScanPollIntervalSeconds: int32(scanFrequency), + AutoScanEnabled: autoScanEnabled, }) }