diff --git a/backend/allowance_planner.db3.backup.1 b/backend/allowance_planner.db3.backup.1 new file mode 100644 index 0000000..dd398a8 Binary files /dev/null and b/backend/allowance_planner.db3.backup.1 differ diff --git a/backend/api_test.go b/backend/api_test.go index 06d4628..d0fe142 100644 --- a/backend/api_test.go +++ b/backend/api_test.go @@ -605,6 +605,36 @@ func TestCompleteTask(t *testing.T) { } } +func TestCompleteTaskWithNoWeights(t *testing.T) { + e := startServer(t) + taskId := createTestTaskWithAmount(e, 101) + + e.GET("/tasks").Expect().Status(200).JSON().Array().Length().IsEqual(1) + + // Ensure main allowance has no weight + e.PUT("/user/1/allowance/0").WithJSON(UpdateAllowanceRequest{ + Weight: 0, + }).Expect().Status(200) + + // Complete the task + e.POST("/task/" + strconv.Itoa(taskId) + "/complete").Expect().Status(200) + + // Verify the task is marked as completed + e.GET("/task/" + strconv.Itoa(taskId)).Expect().Status(404) + + // Verify the allowances are updated for user 1 + allowances := e.GET("/user/1/allowance").Expect().Status(200).JSON().Array() + allowances.Length().IsEqual(1) + allowances.Value(0).Object().Value("id").Number().IsEqual(0) + allowances.Value(0).Object().Value("progress").Number().InDelta(101.00, 0.01) + + // And also for user 2 + allowances = e.GET("/user/2/allowance").Expect().Status(200).JSON().Array() + allowances.Length().IsEqual(1) + allowances.Value(0).Object().Value("id").Number().IsEqual(0) + allowances.Value(0).Object().Value("progress").Number().InDelta(101.00, 0.01) +} + func TestCompleteTaskAllowanceWeightsSumTo0(t *testing.T) { e := startServer(t) taskId := createTestTaskWithAmount(e, 101) @@ -643,6 +673,11 @@ func TestCompleteAllowance(t *testing.T) { createTestTaskWithAmount(e, 100) createTestAllowance(e, "Test Allowance 1", 100, 50) + // Update base allowance + e.PUT("/user/1/allowance/0").WithJSON(UpdateAllowanceRequest{ + Weight: 0, + }).Expect().Status(200) + // Complete the task e.POST("/task/1/complete").Expect().Status(200) diff --git a/backend/migrations/3_change_weight_default.sql b/backend/migrations/3_change_weight_default.sql new file mode 100644 index 0000000..aa5d336 --- /dev/null +++ b/backend/migrations/3_change_weight_default.sql @@ -0,0 +1,4 @@ +alter table users rename column weight to weight_old; +alter table users add column weight real not null default 10.0; +update users set weight = weight_old; +alter table users drop column weight_old;