Actually use files
This commit is contained in:
parent
9471c5b63b
commit
bd99f58ab4
@ -59,8 +59,7 @@ func (h *Handler) budgetingForMonth(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
firstOfNextMonth := firstOfMonth.AddDate(0, 1, 0)
|
data, err := h.prepareBudgeting(c.Request.Context(), budget, firstOfMonth)
|
||||||
data, err := h.prepareBudgeting(c.Request.Context(), budget, firstOfNextMonth, firstOfMonth)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.AbortWithError(http.StatusInternalServerError, err)
|
c.AbortWithError(http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
@ -68,7 +67,8 @@ func (h *Handler) budgetingForMonth(c *gin.Context) {
|
|||||||
c.JSON(http.StatusOK, data)
|
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)
|
categories, err := h.Service.GetCategories(ctx, budget.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return BudgetingForMonthResponse{}, fmt.Errorf("error loading categories: %w", err)
|
return BudgetingForMonthResponse{}, fmt.Errorf("error loading categories: %w", err)
|
||||||
|
@ -8,6 +8,9 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -82,8 +85,33 @@ func TestMain(t *testing.T) {
|
|||||||
|
|
||||||
handler.DoYNABImport(ctx, t, budget)
|
handler.DoYNABImport(ctx, t, budget)
|
||||||
|
|
||||||
// check available balance for more dates
|
loc := time.Now().Location()
|
||||||
handler.CheckAvailableBalance(ctx, t, budget)
|
|
||||||
|
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
|
// check categories
|
||||||
|
|
||||||
@ -96,12 +124,10 @@ type CategoryTestData struct {
|
|||||||
Assigned float64
|
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()
|
t.Helper()
|
||||||
loc := time.Now().Location()
|
|
||||||
first := time.Date(2021, 12, 1, 0, 0, 0, 0, loc)
|
data, err := h.prepareBudgeting(ctx, *budget, first)
|
||||||
firstOfNextMonth := time.Date(2022, 1, 1, 0, 0, 0, 0, loc)
|
|
||||||
data, err := h.prepareBudgeting(ctx, *budget, firstOfNextMonth, first)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("prepare budgeting: %s", err)
|
t.Errorf("prepare budgeting: %s", err)
|
||||||
return
|
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")
|
// 2022-01 assert_equal(t, -115170.56, data.AvailableBalance.GetFloat64(), "available balance")
|
||||||
assertEqual(t, -110181.600, 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 {
|
if err != nil {
|
||||||
t.Errorf("could not load category test data: %s", err)
|
t.Errorf("could not load category test data: %s", err)
|
||||||
return
|
return
|
||||||
|
2
testdata
2
testdata
@ -1 +1 @@
|
|||||||
Subproject commit 7415b1caca85cc13d048d3e191257bb65ae9b27c
|
Subproject commit 58b8090d3582303bf9a89d3a322925d2b18be3a0
|
Loading…
x
Reference in New Issue
Block a user