From bd99f58ab47dd439ba37450a2d2a5d8ae3b996bb Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Tue, 5 Apr 2022 20:33:04 +0000 Subject: [PATCH] Actually use files --- server/budgeting.go | 6 +++--- server/main_test.go | 42 ++++++++++++++++++++++++++++++++++-------- testdata | 2 +- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/server/budgeting.go b/server/budgeting.go index 2ef968d..b8341b7 100644 --- a/server/budgeting.go +++ b/server/budgeting.go @@ -59,8 +59,7 @@ func (h *Handler) budgetingForMonth(c *gin.Context) { return } - firstOfNextMonth := firstOfMonth.AddDate(0, 1, 0) - data, err := h.prepareBudgeting(c.Request.Context(), budget, firstOfNextMonth, firstOfMonth) + data, err := h.prepareBudgeting(c.Request.Context(), budget, firstOfMonth) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return @@ -68,7 +67,8 @@ func (h *Handler) budgetingForMonth(c *gin.Context) { c.JSON(http.StatusOK, data) } -func (h *Handler) prepareBudgeting(ctx context.Context, budget postgres.Budget, firstOfNextMonth time.Time, firstOfMonth time.Time) (BudgetingForMonthResponse, error) { +func (h *Handler) prepareBudgeting(ctx context.Context, budget postgres.Budget, firstOfMonth time.Time) (BudgetingForMonthResponse, error) { + firstOfNextMonth := firstOfMonth.AddDate(0, 1, 0) categories, err := h.Service.GetCategories(ctx, budget.ID) if err != nil { return BudgetingForMonthResponse{}, fmt.Errorf("error loading categories: %w", err) diff --git a/server/main_test.go b/server/main_test.go index d396400..5302976 100644 --- a/server/main_test.go +++ b/server/main_test.go @@ -8,6 +8,9 @@ import ( "log" "net/http" "os" + "path/filepath" + "strconv" + "strings" "testing" "time" @@ -82,8 +85,33 @@ func TestMain(t *testing.T) { handler.DoYNABImport(ctx, t, budget) - // check available balance for more dates - handler.CheckAvailableBalance(ctx, t, budget) + loc := time.Now().Location() + + resultDir := "../testdata/production-export/results" + files, err := os.ReadDir(resultDir) + if err != nil { + t.Errorf("could not load results: %s", err) + return + } + + for _, file := range files { + if file.IsDir() { + continue + } + + name := file.Name()[0 : len(file.Name())-5] + parts := strings.Split(name, "-") + year, _ := strconv.Atoi(parts[1]) + month, _ := strconv.Atoi(parts[2]) + first := time.Date(year, time.Month(month), 1, 0, 0, 0, 0, loc) + + switch parts[0] { + case "categories": + t.Logf("Checking balances for %s", first.Format("2006-01")) + testCaseFile := filepath.Join(resultDir, file.Name()) + handler.CheckAvailableBalance(ctx, t, testCaseFile, budget, first) + } + } // check categories @@ -96,12 +124,10 @@ type CategoryTestData struct { Assigned float64 } -func (h Handler) CheckAvailableBalance(ctx context.Context, t *testing.T, budget *postgres.Budget) { +func (h Handler) CheckAvailableBalance(ctx context.Context, t *testing.T, testCaseFile string, budget *postgres.Budget, first time.Time) { t.Helper() - loc := time.Now().Location() - first := time.Date(2021, 12, 1, 0, 0, 0, 0, loc) - firstOfNextMonth := time.Date(2022, 1, 1, 0, 0, 0, 0, loc) - data, err := h.prepareBudgeting(ctx, *budget, firstOfNextMonth, first) + + data, err := h.prepareBudgeting(ctx, *budget, first) if err != nil { t.Errorf("prepare budgeting: %s", err) return @@ -110,7 +136,7 @@ func (h Handler) CheckAvailableBalance(ctx context.Context, t *testing.T, budget // 2022-01 assert_equal(t, -115170.56, data.AvailableBalance.GetFloat64(), "available balance") assertEqual(t, -110181.600, data.AvailableBalance.GetFloat64(), "available balance") - categoryTestDataFile, err := os.Open("../testdata/production-export/results/categories-2021-12.json") + categoryTestDataFile, err := os.Open(testCaseFile) if err != nil { t.Errorf("could not load category test data: %s", err) return diff --git a/testdata b/testdata index 7415b1c..58b8090 160000 --- a/testdata +++ b/testdata @@ -1 +1 @@ -Subproject commit 7415b1caca85cc13d048d3e191257bb65ae9b27c +Subproject commit 58b8090d3582303bf9a89d3a322925d2b18be3a0