Implement completion endpoint for allowance (#55)
Closes #19 Reviewed-on: #55
This commit was merged in pull request #55.
This commit is contained in:
@@ -594,6 +594,82 @@ func TestCompleteTask(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCompleteTaskAllowanceWeightsSumTo0(t *testing.T) {
|
||||
e := startServer(t)
|
||||
taskId := createTestTaskWithAmount(e, 101)
|
||||
|
||||
e.GET("/tasks").Expect().Status(200).JSON().Array().Length().IsEqual(1)
|
||||
|
||||
// Update rest allowance
|
||||
e.PUT("/user/1/allowance/0").WithJSON(UpdateAllowanceRequest{
|
||||
Weight: 0,
|
||||
}).Expect().Status(200)
|
||||
// Create two allowance goals
|
||||
e.POST("/user/1/allowance").WithJSON(CreateAllowanceRequest{
|
||||
Name: "Test Allowance 1",
|
||||
Target: 1000,
|
||||
Weight: 0,
|
||||
}).Expect().Status(201)
|
||||
|
||||
// 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(2)
|
||||
allowances.Value(0).Object().Value("id").Number().IsEqual(0)
|
||||
allowances.Value(0).Object().Value("progress").Number().IsEqual(101)
|
||||
allowances.Value(1).Object().Value("id").Number().IsEqual(1)
|
||||
allowances.Value(1).Object().Value("progress").Number().IsEqual(0)
|
||||
}
|
||||
|
||||
func TestCompleteTaskInvalidId(t *testing.T) {
|
||||
e := startServer(t)
|
||||
e.POST("/task/999/complete").Expect().Status(404)
|
||||
}
|
||||
|
||||
func TestCompleteAllowance(t *testing.T) {
|
||||
e := startServer(t)
|
||||
createTestTaskWithAmount(e, 100)
|
||||
|
||||
// Create allowance goal
|
||||
e.POST("/user/1/allowance").WithJSON(CreateAllowanceRequest{
|
||||
Name: "Test Allowance 1",
|
||||
Target: 100,
|
||||
Weight: 50,
|
||||
}).Expect().Status(201)
|
||||
|
||||
// Complete the task
|
||||
e.POST("/task/1/complete").Expect().Status(200)
|
||||
|
||||
// Complete allowance goal
|
||||
e.POST("/user/1/allowance/1/complete").Expect().Status(200)
|
||||
|
||||
// Verify the allowance no longer exists
|
||||
e.GET("/user/1/allowance/1").Expect().Status(404)
|
||||
|
||||
// Verify history is updated
|
||||
history := e.GET("/user/1/history").Expect().Status(200).JSON().Array()
|
||||
history.Length().IsEqual(2)
|
||||
history.Value(0).Object().Value("allowance").Number().IsEqual(100)
|
||||
history.Value(0).Object().Value("timestamp").String().AsDateTime().InRange(getDelta(time.Now(), 2.0))
|
||||
history.Value(1).Object().Value("allowance").Number().IsEqual(-100)
|
||||
history.Value(1).Object().Value("timestamp").String().AsDateTime().InRange(getDelta(time.Now(), 2.0))
|
||||
}
|
||||
|
||||
func TestCompleteAllowanceInvalidUserId(t *testing.T) {
|
||||
e := startServer(t)
|
||||
e.POST("/user/999/allowance/1/complete").Expect().Status(404)
|
||||
}
|
||||
|
||||
func TestCompleteAllowanceInvalidAllowanceId(t *testing.T) {
|
||||
e := startServer(t)
|
||||
e.POST("/user/1/allowance/999/complete").Expect().Status(404)
|
||||
}
|
||||
|
||||
func getDelta(base time.Time, delta float64) (time.Time, time.Time) {
|
||||
start := base.Add(-time.Duration(delta) * time.Second)
|
||||
end := base.Add(time.Duration(delta) * time.Second)
|
||||
|
||||
Reference in New Issue
Block a user