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+ } ) ;
0 commit comments