vtodogenerator
Version:
A library to generate VTODO compatible with RFC5545
86 lines (72 loc) • 2.49 kB
JavaScript
import VTodoGenerator from "../VTodoGenerator";
import ical from 'ical'
import moment from 'moment'
import { convertToTimeZone, generateNewUID } from "../helpers";
/**
* In this test we generate a sample todo with a VALARM component, parse it back, and confirm if they match
*/
test('VALARM test', () => {
const sampleUID = generateNewUID()
const sampleDue = moment("22/04/2022 23:00", 'D/M/YYYY H:mm')
const currentTime = moment()
const sampleValarms = [
{
action: "email",
trigger: {
isRelated: true,
value: -10,
relatedTo: "end"
},
advancedTriggerMode: false,
description:"test1",
summary:"Hey There",
attendees:[{commonName:"test1",email:"test@example.com"},{
commonName:"test2",email:"test2@example.com"
}]
},
{
action: "audio",
advancedTriggerMode: true,
trigger: {
isRelated: false,
value: moment("22/04/2022 23:00", 'D/M/YYYY H:mm'),
relatedTo: "end"
},
description:"b"
}
]
let todoData = {
// due:moment("22/04/2022").toString(),
due:sampleDue.toISOString(),
summary: "Sample Task",
categories: ["InProgress", "Imp!"],
status:"COMPLETED",
dtstamp:currentTime.toISOString(),
created:currentTime.toISOString(),
completion:42,
priority:2,
description:"Hi!!",
start: currentTime.toISOString(),
valarms: sampleValarms
}
let todo = new VTodoGenerator(todoData)
const generatedTodo = todo.generate()
console.log(generatedTodo)
const parsedData = ical.parseICS(generatedTodo);
// console.log(parsedData)
let noofAlarm = 0
let alarms=[]
for (let k in parsedData) {
//expect(parsedData[k]["rrule"]).toBeDefined();
for(let l in parsedData[k]){
// console.log(l, parsedData[k][l])
if(typeof parsedData[k][l] === 'object' && !Array.isArray(parsedData[k][l]) && parsedData[k][l] !== null){
if(("type" in parsedData[k][l]) && (parsedData[k][l]["type"]=="VALARM")){
noofAlarm++
// console.log(parsedData[k]["trigger"])
}
}
}
}
expect(noofAlarm).toBe(2)
})