Skip to content

Commit 4fc12db

Browse files
[TASKSCLOUD-494] - Added tests for Tasks endpoints.
1 parent 08458ff commit 4fc12db

File tree

1 file changed

+398
-0
lines changed

1 file changed

+398
-0
lines changed

tests/tasks_test.go

Lines changed: 398 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,398 @@
1+
/*
2+
* --------------------------------------------------------------------------------
3+
* <copyright company="Aspose" file="tasks_test.go">
4+
* Copyright (c) 2021 Aspose.Tasks Cloud
5+
* </copyright>
6+
* <summary>
7+
* Permission is hereby granted, free of charge, to any person obtaining a copy
8+
* of this software and associated documentation files (the "Software"), to deal
9+
* in the Software without restriction, including without limitation the rights
10+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11+
* copies of the Software, and to permit persons to whom the Software is
12+
* furnished to do so, subject to the following conditions:
13+
*
14+
* The above copyright notice and this permission notice shall be included in all
15+
* copies or substantial portions of the Software.
16+
*
17+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23+
* SOFTWARE.
24+
* </summary>
25+
* --------------------------------------------------------------------------------
26+
*/
27+
28+
// Example of how to work with tasks.
29+
package api_test
30+
31+
import (
32+
"github.com/antihax/optional"
33+
"github.com/aspose-tasks-cloud/aspose-tasks-cloud-go/api/models"
34+
"github.com/aspose-tasks-cloud/aspose-tasks-cloud-go/api/requests"
35+
"github.com/stretchr/testify/assert"
36+
"testing"
37+
)
38+
39+
// Test for get tasks.
40+
func Test_Tasks_GetTasks(t *testing.T) {
41+
localFileName := "Project2016.mpp"
42+
remoteFileName := CreateRandomGuid() + localFileName
43+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
44+
45+
opts := &requests.GetTasksOpts{
46+
Name: remoteFileName,
47+
Folder: optional.NewString(remoteBaseTestDataFolder),
48+
}
49+
result, _, err := client.TasksApi.GetTasks(ctx, opts)
50+
if err != nil {
51+
t.Error(err)
52+
}
53+
assert.Equal(t, int32(200), result.Code)
54+
assert.NotNil(t, result.Tasks)
55+
assert.Equal(t, 6, len(result.Tasks.TaskItem))
56+
var firstTask models.TaskItem
57+
for _, t := range result.Tasks.TaskItem {
58+
if t.Uid == 5 {
59+
firstTask = t
60+
break
61+
}
62+
}
63+
assert.NotNil(t, firstTask)
64+
assert.Equal(t, "Summary Task 1", firstTask.Name)
65+
assert.Equal(t, CreateTime(2015, 8, 3, 8, 0, 0), firstTask.Start)
66+
assert.Equal(t, CreateTime(2015, 8, 6, 17, 0, 0), firstTask.Finish)
67+
assert.Equal(t, "/5", firstTask.Link.Href)
68+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
69+
}
70+
71+
// Test for get task.
72+
func Test_Tasks_GetTask(t *testing.T) {
73+
localFileName := "Project2016.mpp"
74+
remoteFileName := CreateRandomGuid() + localFileName
75+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
76+
77+
opts := &requests.GetTaskOpts{
78+
TaskUid: 5,
79+
Name: remoteFileName,
80+
Folder: optional.NewString(remoteBaseTestDataFolder),
81+
}
82+
result, _, err := client.TasksApi.GetTask(ctx, opts)
83+
if err != nil {
84+
t.Error(err)
85+
}
86+
assert.Equal(t, int32(200), result.Code)
87+
assert.NotNil(t, result.Task)
88+
assert.Equal(t, int32(5), result.Task.Uid)
89+
assert.Equal(t, []int32{1, 2, 3, 4}, result.Task.SubtasksUids)
90+
assert.Equal(t, "Summary Task 1", result.Task.Name)
91+
assert.Equal(t, CreateTime(2015, 8, 3, 8, 0, 0), result.Task.Start)
92+
assert.Equal(t, CreateTime(2015, 8, 6, 17, 0, 0), result.Task.Finish)
93+
assert.Equal(t, "1.08:00:00", *result.Task.RemainingWork)
94+
assert.Equal(t, float64(1920), result.Task.WorkVariance)
95+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
96+
}
97+
98+
// Test for delete task.
99+
func Test_Tasks_DeleteTask(t *testing.T) {
100+
localFileName := "Project2016.mpp"
101+
remoteFileName := CreateRandomGuid() + localFileName
102+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
103+
104+
deleteOpts := &requests.DeleteTaskOpts{
105+
TaskUid: 4,
106+
Name: remoteFileName,
107+
Folder: optional.NewString(remoteBaseTestDataFolder),
108+
}
109+
deleteResult, _, err := client.TasksApi.DeleteTask(ctx, deleteOpts)
110+
if err != nil {
111+
t.Error(err)
112+
}
113+
assert.Equal(t, int32(200), deleteResult.Code)
114+
115+
result, _, err := client.TasksApi.GetTasks(ctx, &requests.GetTasksOpts{
116+
Name: remoteFileName,
117+
Folder: optional.NewString(remoteBaseTestDataFolder),
118+
})
119+
if err != nil {
120+
t.Error(err)
121+
}
122+
assert.Equal(t, int32(200), result.Code)
123+
assert.NotNil(t, result.Tasks)
124+
assert.Equal(t, 5, len(result.Tasks.TaskItem))
125+
isDeletedTaskFound := false
126+
for _, t := range result.Tasks.TaskItem {
127+
if t.Uid == deleteOpts.TaskUid {
128+
isDeletedTaskFound = true
129+
break
130+
}
131+
}
132+
assert.False(t, isDeletedTaskFound)
133+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
134+
}
135+
136+
// Test for post tasks.
137+
func Test_Tasks_PostTasks(t *testing.T) {
138+
localFileName := "Home_move_plan.mpp"
139+
remoteFileName := CreateRandomGuid() + localFileName
140+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
141+
142+
postTasksOpts := &requests.PostTasksOpts{
143+
Requests: []models.TaskCreationRequest{
144+
{
145+
TaskName: "SomeFirstTaskName",
146+
},
147+
{
148+
TaskName: "SomeSecondTaskNameWithParent",
149+
ParentTaskUid: 2,
150+
},
151+
},
152+
Name: remoteFileName,
153+
Folder: optional.NewString(remoteBaseTestDataFolder),
154+
}
155+
postResult, _, err := client.TasksApi.PostTasks(ctx, postTasksOpts)
156+
if err != nil {
157+
t.Error(err)
158+
}
159+
assert.Equal(t, int32(201), postResult.Code)
160+
assert.NotNil(t, postResult.Tasks)
161+
assert.Equal(t, len(postTasksOpts.Requests), len(postResult.Tasks.TaskItem))
162+
163+
var newSubtaskUid int32
164+
for _, t := range postResult.Tasks.TaskItem {
165+
if t.Name == postTasksOpts.Requests[1].TaskName {
166+
newSubtaskUid = t.Uid
167+
break
168+
}
169+
}
170+
getResult, _, err := client.TasksApi.GetTask(ctx, &requests.GetTaskOpts{
171+
TaskUid: postTasksOpts.Requests[1].ParentTaskUid,
172+
Name: remoteFileName,
173+
Folder: optional.NewString(remoteBaseTestDataFolder),
174+
})
175+
if err != nil {
176+
t.Error(err)
177+
}
178+
assert.Equal(t, int32(200), getResult.Code)
179+
assert.NotNil(t, getResult.Task)
180+
isTaskContainsNewSubtaskUid := false
181+
for _, uid := range getResult.Task.SubtasksUids {
182+
if uid == newSubtaskUid {
183+
isTaskContainsNewSubtaskUid = true
184+
break
185+
}
186+
}
187+
assert.True(t, isTaskContainsNewSubtaskUid)
188+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
189+
}
190+
191+
// Test for post task.
192+
func Test_Tasks_PostTask(t *testing.T) {
193+
localFileName := "Project2016.mpp"
194+
remoteFileName := CreateRandomGuid() + localFileName
195+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
196+
197+
postTaskOpts := &requests.PostTaskOpts{
198+
Name: remoteFileName,
199+
TaskName: optional.NewString("New task name"),
200+
BeforeTaskId: optional.NewInt32(4),
201+
Folder: optional.NewString(remoteBaseTestDataFolder),
202+
}
203+
postResult, _, err := client.TasksApi.PostTask(ctx, postTaskOpts)
204+
if err != nil {
205+
t.Error(err)
206+
}
207+
assert.Equal(t, int32(201), postResult.Code)
208+
assert.NotNil(t, postResult.TaskItem)
209+
210+
getResult, _, err := client.TasksApi.GetTask(ctx, &requests.GetTaskOpts{
211+
TaskUid: postResult.TaskItem.Uid,
212+
Name: remoteFileName,
213+
Folder: optional.NewString(remoteBaseTestDataFolder),
214+
})
215+
if err != nil {
216+
t.Error(err)
217+
}
218+
assert.Equal(t, int32(200), getResult.Code)
219+
assert.NotNil(t, getResult.Task)
220+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
221+
}
222+
223+
// Test for put task.
224+
func Test_Tasks_PutTask(t *testing.T) {
225+
localFileName := "Project2016.mpp"
226+
remoteFileName := CreateRandomGuid() + localFileName
227+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
228+
229+
getTaskOpts := &requests.GetTaskOpts{
230+
TaskUid: 4,
231+
Name: remoteFileName,
232+
Folder: optional.NewString(remoteBaseTestDataFolder),
233+
}
234+
getResult, _, err := client.TasksApi.GetTask(ctx, getTaskOpts)
235+
if err != nil {
236+
t.Error(err)
237+
}
238+
assert.Equal(t, int32(200), getResult.Code)
239+
assert.NotNil(t, getResult.Task)
240+
241+
taskToModify := getResult.Task
242+
taskToModify.Name = "Modified task name"
243+
taskToModify.IsManual = true
244+
taskToModify.ManualStart = CreateTime(2015, 10, 1, 9, 15, 0)
245+
taskToModify.ManualFinish = CreateTime(2015, 10, 1, 17, 15, 0)
246+
putTaskOpts := &requests.PutTaskOpts{
247+
TaskUid: getTaskOpts.TaskUid,
248+
Recalculate: optional.NewBool(false),
249+
Mode: optional.NewString(string(models.NONE_CalculationMode)),
250+
Task: *taskToModify,
251+
Name: remoteFileName,
252+
Folder: optional.NewString(remoteBaseTestDataFolder),
253+
}
254+
putResult, _, err := client.TasksApi.PutTask(ctx, putTaskOpts)
255+
if err != nil {
256+
t.Error(err)
257+
}
258+
assert.Equal(t, int32(200), putResult.Code)
259+
260+
getResult, _, err = client.TasksApi.GetTask(ctx, &requests.GetTaskOpts{
261+
TaskUid: putTaskOpts.TaskUid,
262+
Name: remoteFileName,
263+
Folder: optional.NewString(remoteBaseTestDataFolder),
264+
})
265+
if err != nil {
266+
t.Error(err)
267+
}
268+
assert.Equal(t, int32(200), getResult.Code)
269+
assert.NotNil(t, getResult.Task)
270+
assert.Equal(t, taskToModify.Name, getResult.Task.Name)
271+
assert.Equal(t, taskToModify.IsManual, getResult.Task.IsManual)
272+
assert.Equal(t, taskToModify.ManualStart, getResult.Task.ManualStart)
273+
assert.Equal(t, taskToModify.ManualFinish, getResult.Task.ManualFinish)
274+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
275+
}
276+
277+
// Test for get task assignments.
278+
func Test_Tasks_GetTaskAssignments(t *testing.T) {
279+
localFileName := "Home_move_plan.mpp"
280+
remoteFileName := CreateRandomGuid() + localFileName
281+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
282+
283+
opts := &requests.GetTaskAssignmentsOpts{
284+
TaskUid: 1,
285+
Name: remoteFileName,
286+
Folder: optional.NewString(remoteBaseTestDataFolder),
287+
}
288+
result, _, err := client.TasksApi.GetTaskAssignments(ctx, opts)
289+
if err != nil {
290+
t.Error(err)
291+
}
292+
assert.Equal(t, int32(200), result.Code)
293+
assert.NotNil(t, result.Assignments)
294+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
295+
}
296+
297+
// Test for put move task.
298+
func Test_Tasks_PutMoveTask(t *testing.T) {
299+
localFileName := "sample.mpp"
300+
remoteFileName := CreateRandomGuid() + localFileName
301+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
302+
303+
getOpts := &requests.GetTaskOpts{
304+
TaskUid: 6,
305+
Name: remoteFileName,
306+
Folder: optional.NewString(remoteBaseTestDataFolder),
307+
}
308+
getResult, _, err := client.TasksApi.GetTask(ctx, getOpts)
309+
if err != nil {
310+
t.Error(err)
311+
}
312+
assert.Equal(t, int32(200), getResult.Code)
313+
assert.NotNil(t, getResult.Task)
314+
for _, uid := range getResult.Task.SubtasksUids {
315+
assert.NotEqual(t, int32(10), uid)
316+
}
317+
318+
putMoveOpts := &requests.PutMoveTaskOpts{
319+
TaskUid: 10,
320+
ParentTaskUid: getOpts.TaskUid,
321+
Name: remoteFileName,
322+
Folder: optional.NewString(remoteBaseTestDataFolder),
323+
}
324+
putMoveResult, _, err := client.TasksApi.PutMoveTask(ctx, putMoveOpts)
325+
if err != nil {
326+
t.Error(err)
327+
}
328+
assert.Equal(t, int32(200), putMoveResult.Code)
329+
getResult, _, err = client.TasksApi.GetTask(ctx, getOpts)
330+
if err != nil {
331+
t.Error(err)
332+
}
333+
assert.Equal(t, int32(200), getResult.Code)
334+
assert.NotNil(t, getResult.Task)
335+
isTaskContainsNewSubtaskUid := false
336+
for _, uid := range getResult.Task.SubtasksUids {
337+
if uid == putMoveOpts.TaskUid {
338+
isTaskContainsNewSubtaskUid = true
339+
break
340+
}
341+
}
342+
assert.True(t, isTaskContainsNewSubtaskUid)
343+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
344+
}
345+
346+
// Test for put move task to sibling.
347+
func Test_Tasks_PutMoveTaskToSibling(t *testing.T) {
348+
localFileName := "NewProductDev.mpp"
349+
remoteFileName := CreateRandomGuid() + localFileName
350+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
351+
352+
putMoveToSiblingOpts := &requests.PutMoveTaskToSiblingOpts{
353+
TaskUid: 40,
354+
BeforeTaskUid: 41,
355+
Name: remoteFileName,
356+
Folder: optional.NewString(remoteBaseTestDataFolder),
357+
}
358+
putMoveToSiblingResult, _, err := client.TasksApi.PutMoveTaskToSibling(ctx, putMoveToSiblingOpts)
359+
if err != nil {
360+
t.Error(err)
361+
}
362+
assert.Equal(t, int32(200), putMoveToSiblingResult.Code)
363+
364+
getTaskOpts := &requests.GetTaskOpts{
365+
TaskUid: 38,
366+
Name: remoteFileName,
367+
Folder: optional.NewString(remoteBaseTestDataFolder),
368+
}
369+
getResult, _, err := client.TasksApi.GetTask(ctx, getTaskOpts)
370+
if err != nil {
371+
t.Error(err)
372+
}
373+
assert.Equal(t, int32(200), getResult.Code)
374+
assert.NotNil(t, getResult.Task)
375+
assert.Equal(t, []int32{39, 40, 41}, getResult.Task.SubtasksUids)
376+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
377+
}
378+
379+
// Test for put move task to sibling, should return response with code 404 if input uid is not found.
380+
func Test_Tasks_PutMoveTaskToSibling_Return404IfUidIsNotFound(t *testing.T) {
381+
localFileName := "NewProductDev.mpp"
382+
remoteFileName := CreateRandomGuid() + localFileName
383+
client, ctx := UploadTestFileToStorage(t, localFileName, remoteBaseTestDataFolder+"/"+remoteFileName)
384+
385+
putMoveToSiblingOpts := &requests.PutMoveTaskToSiblingOpts{
386+
TaskUid: 99999,
387+
BeforeTaskUid: -1,
388+
Name: remoteFileName,
389+
Folder: optional.NewString(remoteBaseTestDataFolder),
390+
}
391+
_, _, err := client.TasksApi.PutMoveTaskToSibling(ctx, putMoveToSiblingOpts)
392+
if err != nil {
393+
assert.Equal(t, "Task with 99999 Uid doesn't exist", err.Error())
394+
} else {
395+
assert.Fail(t, "error must be produced")
396+
}
397+
t.Cleanup(func() { DeleteTestFileFromStorage(t, ctx, client) })
398+
}

0 commit comments

Comments
 (0)