Skip to content

Commit 20341b5

Browse files
committed
HierarchicalObject test implemented
1 parent 8de097e commit 20341b5

File tree

5 files changed

+86
-15
lines changed

5 files changed

+86
-15
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
node_modules
22
package-lock.json
3-
dist
3+
dist
4+
.vscode

jasmine.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"spec_dir": "tests",
3+
"spec_files": ["**/*[tT]est.ts"]
4+
}

package.json

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,26 @@
3131
"main": "dist/lib/api.js",
3232
"types": "dist/lib/api.d.ts",
3333
"files": [
34-
"dist"
34+
"dist/src"
3535
],
3636
"scripts": {
37-
"compile": "tsc --build tsconfig.json"
37+
"compile": "tsc --build tsconfig.json",
38+
"test": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine.json"
3839
},
3940
"dependencies": {
4041
"@types/request": "^2.47.0",
4142
"request": "^2.87.0",
4243
"request-debug": "^0.2.0"
4344
},
4445
"devDependencies": {
46+
"@types/jasmine": "^3.5.0",
4547
"@types/node": "^12.0.10",
46-
"@types/jest": "^23.3.9",
47-
"@types/jest-each": "^0.3.2",
48-
"jest": "^23.6.0",
49-
"jest-each": "^23.6.0",
50-
"jest-junit": "^5.2.0",
51-
"ts-jest": "^23.10.4",
52-
"ts-node": "^4.0.2",
53-
"tslint": "^5.8.0",
54-
"typescript": "^3.1.1",
55-
"cross-var": "^1.1.0"
48+
"@types/uuid": "^3.4.6",
49+
"cross-var": "^1.1.0",
50+
"jasmine": "^3.5.0",
51+
"nyc": "^14.1.1",
52+
"ts-node": "^4.1.0",
53+
"typescript": "^3.7.2",
54+
"uuid": "^3.3.3"
5655
}
5756
}

tests/api-test.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import { EmailApi } from '../src/api'
2+
import * as requests from '../src/model/requests/requests';
3+
import uuidv4 from 'uuid/v4';
4+
import * as models from '../src/model/model';
5+
6+
describe('EmailApi', function() {
7+
var api :EmailApi;
8+
var folder :string;
9+
var storage = 'First Storage';
10+
11+
beforeAll(function() {
12+
api = new EmailApi(process.env.appSid, process.env.appKey, process.env.apiBaseUrl);
13+
folder = uuidv4();
14+
jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000;
15+
})
16+
17+
it('HierarchicalObject', async function() {
18+
var calendarFile = await createCalendar();
19+
var calendar = await api.getCalendar(new requests.GetCalendarRequest(calendarFile, folder, storage));
20+
expect(calendar.body.name).toBe('CALENDAR');
21+
var filtered = calendar.body.internalProperties.filter(item => item.type == 'PrimitiveObject');
22+
expect(filtered.length).toBeGreaterThanOrEqual(3);
23+
var primitive = filtered[0] as models.PrimitiveObject;
24+
expect(primitive.value).toBeDefined();
25+
});
26+
27+
async function createCalendar(startDate? : Date) :Promise<string> {
28+
var fileName = uuidv4() + '.ics';
29+
startDate = (startDate == null) ? getDate(undefined, 1) : startDate;
30+
var endDate = getDate(startDate, 1);
31+
await api.createCalendar(new requests.CreateCalendarRequest(
32+
fileName,
33+
new models.HierarchicalObjectRequest(
34+
new models.HierarchicalObject(
35+
'CALENDAR',
36+
undefined, [
37+
new models.PrimitiveObject("LOCATION", undefined, "location"),
38+
new models.PrimitiveObject("STARTDATE", undefined, startDate.toUTCString()),
39+
new models.PrimitiveObject("ENDDATE", undefined, endDate.toUTCString()),
40+
new models.HierarchicalObject("ORGANIZER", undefined, [
41+
new models.PrimitiveObject("ADDRESS", undefined, "organizer@am.ru"),
42+
new models.PrimitiveObject("DISPLAYNAME", undefined, "Organizer Name")
43+
]),
44+
new models.HierarchicalObject("ATTENDEES", undefined, [
45+
new models.IndexedHierarchicalObject("ATTENDEE", undefined, 0, [
46+
new models.PrimitiveObject("ADDRESS", undefined, "attendee@am.ru"),
47+
new models.PrimitiveObject("DISPLAYNAME", undefined, "Attendee Name")
48+
])
49+
])]
50+
),
51+
new models.StorageFolderLocation(storage, folder)
52+
)
53+
));
54+
return fileName;
55+
}
56+
57+
function getDate(baseDate?: Date, addHours?:number) : Date {
58+
baseDate = (baseDate == null) ? new Date() : baseDate;
59+
addHours = (addHours == null) ? 0 : addHours;
60+
var hour = 60*60*1000;
61+
var result = new Date();
62+
result.setTime(baseDate.getTime() + addHours * hour);
63+
return result;
64+
}
65+
});

tsconfig.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
"declaration": true,
1414
"lib": ["es6", "scripthost", "es2017"],
1515
"outDir": "dist",
16-
"rootDir": "./"
16+
"rootDir": "./",
17+
"esModuleInterop": true
1718
},
1819
"include": [
19-
"src"
20+
"src",
21+
"tests"
2022
],
2123
"exclude": [
2224
"node_modules",

0 commit comments

Comments
 (0)