48/add-complete (#53)
Closes #48 Reviewed-on: #53
This commit was merged in pull request #53.
This commit is contained in:
@@ -52,7 +52,9 @@ func TestGetUserBadId(t *testing.T) {
|
||||
func TestGetUserAllowanceWhenNoAllowancePresent(t *testing.T) {
|
||||
e := startServer(t)
|
||||
result := e.GET("/user/1/allowance").Expect().Status(200).JSON().Array()
|
||||
result.Length().IsEqual(0)
|
||||
result.Length().IsEqual(1)
|
||||
item := result.Value(0).Object()
|
||||
item.Value("id").IsEqual(0)
|
||||
}
|
||||
|
||||
func TestGetUserAllowance(t *testing.T) {
|
||||
@@ -68,8 +70,8 @@ func TestGetUserAllowance(t *testing.T) {
|
||||
|
||||
// Validate allowance
|
||||
result := e.GET("/user/1/allowance").Expect().Status(200).JSON().Array()
|
||||
result.Length().IsEqual(1)
|
||||
item := result.Value(0).Object()
|
||||
result.Length().IsEqual(2)
|
||||
item := result.Value(1).Object()
|
||||
item.Value("id").IsEqual(1)
|
||||
item.Value("name").IsEqual(TestAllowanceName)
|
||||
item.Value("target").IsEqual(5000)
|
||||
@@ -114,9 +116,9 @@ func TestCreateUserAllowance(t *testing.T) {
|
||||
Status(200).
|
||||
JSON().Array()
|
||||
|
||||
allowances.Length().IsEqual(1)
|
||||
allowances.Length().IsEqual(2)
|
||||
|
||||
allowance := allowances.Value(0).Object()
|
||||
allowance := allowances.Value(1).Object()
|
||||
allowance.Value("id").IsEqual(allowanceId)
|
||||
allowance.Value("name").IsEqual(TestAllowanceName)
|
||||
allowance.Value("target").IsEqual(5000)
|
||||
@@ -208,7 +210,12 @@ func TestDeleteUserAllowance(t *testing.T) {
|
||||
Expect().
|
||||
Status(200).
|
||||
JSON().Array()
|
||||
allowances.Length().IsEqual(0)
|
||||
allowances.Length().IsEqual(1)
|
||||
}
|
||||
|
||||
func TestDeleteUserRestAllowance(t *testing.T) {
|
||||
e := startServer(t)
|
||||
e.DELETE("/user/1/allowance/0").Expect().Status(400)
|
||||
}
|
||||
|
||||
func TestDeleteUserAllowanceNotFound(t *testing.T) {
|
||||
@@ -248,7 +255,16 @@ func TestCreateTask(t *testing.T) {
|
||||
|
||||
// Verify the response has an ID
|
||||
response.ContainsKey("id")
|
||||
taskId := response.Value("id").Number().Raw()
|
||||
response.Value("id").Number().IsEqual(1)
|
||||
|
||||
e.GET("/tasks").Expect().Status(200).JSON().Array().Length().IsEqual(1)
|
||||
|
||||
// Get task
|
||||
result := e.GET("/task/1").Expect().Status(200).JSON().Object()
|
||||
result.Value("id").IsEqual(1)
|
||||
result.Value("name").IsEqual("Test Task")
|
||||
result.Value("reward").IsEqual(100)
|
||||
result.Value("assigned").IsNull()
|
||||
|
||||
// Create a new task with assigned user
|
||||
assignedUserId := 1
|
||||
@@ -265,7 +281,7 @@ func TestCreateTask(t *testing.T) {
|
||||
JSON().Object()
|
||||
|
||||
responseWithUser.ContainsKey("id")
|
||||
responseWithUser.Value("id").Number().NotEqual(taskId) // Ensure different ID
|
||||
responseWithUser.Value("id").Number().IsEqual(2)
|
||||
}
|
||||
|
||||
func TestDeleteTask(t *testing.T) {
|
||||
@@ -345,12 +361,16 @@ func TestGetTaskWhenNoTasks(t *testing.T) {
|
||||
result.Length().IsEqual(0)
|
||||
}
|
||||
|
||||
func createTestTask(e *httpexpect.Expect) {
|
||||
func createTestTask(e *httpexpect.Expect) int {
|
||||
return createTestTaskWithAmount(e, 100)
|
||||
}
|
||||
|
||||
func createTestTaskWithAmount(e *httpexpect.Expect, amount int) int {
|
||||
requestBody := map[string]interface{}{
|
||||
"name": "Test Task",
|
||||
"reward": 100,
|
||||
"reward": amount,
|
||||
}
|
||||
e.POST("/tasks").WithJSON(requestBody).Expect().Status(201)
|
||||
return int(e.POST("/tasks").WithJSON(requestBody).Expect().Status(201).JSON().Object().Value("id").Number().Raw())
|
||||
}
|
||||
|
||||
func TestGetTasksWhenTasks(t *testing.T) {
|
||||
@@ -520,6 +540,44 @@ func TestPutAllowanceById(t *testing.T) {
|
||||
result.Value("weight").IsEqual(15)
|
||||
}
|
||||
|
||||
func TestCompleteTask(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: 25,
|
||||
}).Expect().Status(200)
|
||||
// Create two allowance goals
|
||||
e.POST("/user/1/allowance").WithJSON(CreateAllowanceRequest{
|
||||
Name: "Test Allowance 1",
|
||||
Target: 1000,
|
||||
Weight: 50,
|
||||
}).Expect().Status(201)
|
||||
e.POST("/user/1/allowance").WithJSON(CreateAllowanceRequest{
|
||||
Name: "Test Allowance 1",
|
||||
Target: 1000,
|
||||
Weight: 25,
|
||||
}).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
|
||||
allowances := e.GET("/user/1/allowance").Expect().Status(200).JSON().Array()
|
||||
allowances.Length().IsEqual(3)
|
||||
allowances.Value(0).Object().Value("id").Number().IsEqual(0)
|
||||
allowances.Value(0).Object().Value("progress").Number().IsEqual(26)
|
||||
allowances.Value(1).Object().Value("id").Number().IsEqual(1)
|
||||
allowances.Value(1).Object().Value("progress").Number().IsEqual(50)
|
||||
allowances.Value(2).Object().Value("id").Number().IsEqual(2)
|
||||
allowances.Value(2).Object().Value("progress").Number().IsEqual(25)
|
||||
}
|
||||
|
||||
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