chore: build
Backend - Build & Lint / build (push) Canceled after 0s

This commit is contained in:
Xor290
2026-08-25 18:52:55 +02:00
parent f469e52c32
commit 30eebd12d2
3 changed files with 108 additions and 3 deletions
+36
View File
@@ -1,6 +1,7 @@
package tests
import (
"gestion/db"
"gestion/models"
"strings"
"sync"
@@ -40,6 +41,41 @@ func basketRewardItems(t *testing.T, username string) []rewardBasketRow {
return rows
}
// Désactiver la récompense (PointsReward = nil) puis sauvegarder ne doit pas
// la faire réapparaître activée au rechargement — régression : json.Marshal
// d'un pointeur nil produit la chaîne "null", et json.Unmarshal d'un null
// JSON dans une valeur non-pointeur est un no-op sans erreur, ce qui laissait
// settings.PointsReward pointer vers une struct vide mais non-nil.
func TestUpdateSettings_DisablingPointsRewardPersistsAsNil(t *testing.T) {
settings := db.DefaultSettings()
settings.PointsReward = &models.PointsReward{
Threshold: 20,
Description: "Un produit offert",
}
if err := testDB.UpdateSettings(settings); err != nil {
t.Fatalf("UpdateSettings (activation): %v", err)
}
loaded, err := testDB.GetSettings()
if err != nil {
t.Fatalf("GetSettings (activation): %v", err)
}
if loaded.PointsReward == nil {
t.Fatal("la récompense devrait être active après la première sauvegarde")
}
settings.PointsReward = nil
if err := testDB.UpdateSettings(settings); err != nil {
t.Fatalf("UpdateSettings (désactivation): %v", err)
}
loaded, err = testDB.GetSettings()
if err != nil {
t.Fatalf("GetSettings (désactivation): %v", err)
}
if loaded.PointsReward != nil {
t.Errorf("la récompense désactivée ne doit pas réapparaître après sauvegarde: got=%+v", loaded.PointsReward)
}
}
// ── ClaimPoolReward : seuil, atomicité, épuisement ──────────────────────────
func TestClaimPoolReward_BelowThresholdFails(t *testing.T) {