Skip to content

Commit 1af8e6d

Browse files
[TASKSCLOUD-283] - Added tests for resources endpoints.
1 parent 303cd1e commit 1af8e6d

File tree

2 files changed

+188
-4
lines changed

2 files changed

+188
-4
lines changed

test/baseTest.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,17 @@ export function initializeTasksApi(debugMode?: boolean) {
4646
}
4747

4848
export function getDateOnly(arg :Date): Date {
49-
return new Date(arg.getUTCFullYear(), arg.getUTCMonth(), arg.getUTCDate());
49+
return new Date(arg.getFullYear(), arg.getMonth(), arg.getDate());
5050
}
5151

5252
export function getTimeOnly(arg :Date): Date {
53-
return new Date(0, 0, 0, arg.getUTCHours(), arg.getUTCMinutes(), arg.getUTCSeconds());
53+
return new Date(0, 0, 0, arg.getHours(), arg.getMinutes(), arg.getSeconds());
5454
}
5555

56-
export function convertArrayBufferToString(buffer: ArrayBuffer): string {
56+
export function convertArrayBufferToStrings(buffer: ArrayBuffer): string[] {
5757
const uintArray = new Uint8Array(buffer);
58-
return String.fromCharCode.apply(this, uintArray)
58+
const string = String.fromCharCode.apply(this, uintArray);
59+
return string.split("\r\n")
5960
}
6061

6162
/**

test/resourcesTests.ts

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
/*
2+
* MIT License
3+
4+
* Copyright (c) 2019 Aspose Pty Ltd
5+
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
25+
import { expect } from "chai";
26+
import "mocha";
27+
28+
import { GetResourcesRequest, PostResourceRequest, PutResourceRequest, GetResourceRequest, CalculationMode, Baseline, BaselineType, DeleteResourceRequest } from "../src/model/model";
29+
import * as BaseTest from "./baseTest";
30+
31+
describe("getResources function", () => {
32+
it("should return response with code 200 and correct data", async () => {
33+
34+
const tasksApi = BaseTest.initializeTasksApi();
35+
const fileName = "NewProductDev.mpp";
36+
const localPath = BaseTest.localBaseTestDataFolder + fileName;
37+
const remotePath = BaseTest.remoteBaseTestDataFolder;
38+
const remoteFullPath = remotePath + "/" + fileName;
39+
40+
await tasksApi.uploadFileToStorage(remoteFullPath, localPath);
41+
42+
const request = new GetResourcesRequest();
43+
request.name = fileName;
44+
request.folder = remotePath;
45+
46+
const result = await tasksApi.getResources(request);
47+
48+
expect(result.response.statusCode).to.equal(200);
49+
expect(result.body.resources).is.not.undefined.and.not.null;
50+
expect(result.body.resources.resourceItem.length).to.equal(2);
51+
expect(result.body.resources.resourceItem[1].name).to.equal("Project manager");
52+
expect(result.body.resources.resourceItem[1].uid).to.equal(1);
53+
expect(result.body.resources.resourceItem[1].id).to.equal(1);
54+
});
55+
});
56+
57+
describe("postResource function", () => {
58+
it("should return response with code 200 and correct data", async () => {
59+
60+
const tasksApi = BaseTest.initializeTasksApi();
61+
const fileName = "Home_move_plan.mpp";
62+
const localPath = BaseTest.localBaseTestDataFolder + fileName;
63+
const remotePath = BaseTest.remoteBaseTestDataFolder;
64+
const remoteFullPath = remotePath + "/" + fileName;
65+
66+
await tasksApi.uploadFileToStorage(remoteFullPath, localPath);
67+
68+
const getRequest = new GetResourcesRequest();
69+
getRequest.name = fileName;
70+
getRequest.folder = remotePath;
71+
72+
let getResult = await tasksApi.getResources(getRequest);
73+
74+
expect(getResult.body.code).to.equal(200);
75+
76+
const count = getResult.body.resources.resourceItem.length;
77+
78+
const postRequest = new PostResourceRequest();
79+
postRequest.name = fileName;
80+
postRequest.folder = remotePath;
81+
postRequest.resourceName = "new resource";
82+
83+
const postResult = await tasksApi.postResource(postRequest);
84+
85+
expect(postResult.body.code).to.equal(201);
86+
87+
getResult = await tasksApi.getResources(getRequest);
88+
89+
expect(getResult.body.resources.resourceItem.length).to.equal(count + 1);
90+
const addedResource = getResult.body.resources.resourceItem.find(r => r.uid == postResult.body.resourceItem.uid);
91+
expect(addedResource.name).to.equal("new resource");
92+
});
93+
});
94+
95+
describe("putResource function", () => {
96+
it("should return response with code 200 and correct data", async () => {
97+
98+
const tasksApi = BaseTest.initializeTasksApi();
99+
const fileName = "sample.mpp";
100+
const localPath = BaseTest.localBaseTestDataFolder + fileName;
101+
const remotePath = BaseTest.remoteBaseTestDataFolder;
102+
const remoteFullPath = remotePath + "/" + fileName;
103+
104+
await tasksApi.uploadFileToStorage(remoteFullPath, localPath);
105+
106+
const getRequest = new GetResourceRequest();
107+
getRequest.name = fileName;
108+
getRequest.folder = remotePath;
109+
getRequest.resourceUid = 1;
110+
111+
const getResult = await tasksApi.getResource(getRequest);
112+
113+
expect(getResult.body.code).to.equal(200);
114+
expect(getResult.body.resource).is.not.undefined.and.not.null;
115+
116+
const baseline = new Baseline();
117+
baseline.baselineNumber = BaselineType.Baseline1;
118+
baseline.cost = 44;
119+
const resource = getResult.body.resource;
120+
resource.name = "Modified Resource1";
121+
resource.cost = 200;
122+
resource.start = new Date(Date.UTC(2000, 9, 10));
123+
resource.work = "4.04:10:00";
124+
resource.finish = new Date(Date.UTC(2000, 9, 10));
125+
resource.overtimeWork = "4.04:00:00";
126+
resource.standardRate = 101;
127+
resource.baselines = [baseline];
128+
129+
const putRequest = new PutResourceRequest();
130+
putRequest.name = fileName;
131+
putRequest.folder = remotePath;
132+
putRequest.resourceUid = 1;
133+
putRequest.recalculate = false;
134+
putRequest.resource = resource;
135+
putRequest.mode = CalculationMode.None;
136+
137+
const putResult = await tasksApi.putResource(putRequest);
138+
139+
expect(putResult.body.code).to.equal(200);
140+
141+
expect(putResult.body.resource.baselines.length).to.equal(1);
142+
expect(putResult.body.resource.baselines[0].baselineNumber).to.equal(BaselineType.Baseline1);
143+
expect(putResult.body.resource.baselines[0].cost).to.equal(44);
144+
expect(putResult.body.resource.standardRate).to.equal(resource.standardRate);
145+
expect(BaseTest.getDateOnly(putResult.body.resource.start)).to.eql(BaseTest.getDateOnly(resource.start));
146+
expect(putResult.body.resource.work).to.equal(resource.work);
147+
expect(BaseTest.getDateOnly(putResult.body.resource.finish)).to.eql(BaseTest.getDateOnly(resource.finish));
148+
expect(putResult.body.resource.overtimeWork).to.equal(resource.overtimeWork);
149+
expect(putResult.body.resource.cost).to.equal(resource.cost);
150+
});
151+
});
152+
153+
describe("deleteResource function", () => {
154+
it("should return response with code 200 and correct data", async () => {
155+
156+
const tasksApi = BaseTest.initializeTasksApi();
157+
const fileName = "Home_move_plan.mpp";
158+
const localPath = BaseTest.localBaseTestDataFolder + fileName;
159+
const remotePath = BaseTest.remoteBaseTestDataFolder;
160+
const remoteFullPath = remotePath + "/" + fileName;
161+
162+
await tasksApi.uploadFileToStorage(remoteFullPath, localPath);
163+
164+
const deleteRequest = new DeleteResourceRequest();
165+
deleteRequest.name = fileName;
166+
deleteRequest.folder = remotePath;
167+
deleteRequest.resourceUid = 0;
168+
169+
const deleteResult = await tasksApi.deleteResource(deleteRequest);
170+
171+
expect(deleteResult.response.statusCode).to.equal(200);
172+
173+
174+
const getRequest = new GetResourcesRequest();
175+
getRequest.name = fileName;
176+
getRequest.folder = remotePath;
177+
178+
const getResult = await tasksApi.getResources(getRequest);
179+
180+
expect(getResult.response.statusCode).to.equal(200);
181+
expect(getResult.body.resources.resourceItem.length).to.equal(0);
182+
});
183+
});

0 commit comments

Comments
 (0)