nextcloud-tasks/tests/javascript/unit/models/task.spec.js

199 lines
7.2 KiB
JavaScript

import Task from 'Models/task'
import ICAL from 'ical.js'
import { loadICS } from '../../../assets/loadAsset'
describe('task', () => {
'use strict'
it('Should set status to "COMPLETED" on completion.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
task.complete = 100
expect(task.status).toEqual('COMPLETED')
expect(task.completed).toEqual(true)
expect(task.completedDate).not.toEqual(null)
})
it('Should set status to "NEEDS-ACTION" when complete is 0.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
task.complete = 0
expect(task.status).toEqual('NEEDS-ACTION')
expect(task.completed).toEqual(false)
expect(task.completedDate).toEqual(null)
})
it('Should set status to "IN-PROCESS" when complete is >0 and <100.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
task.complete = 50
expect(task.status).toEqual('IN-PROCESS')
expect(task.completed).toEqual(false)
expect(task.completedDate).toEqual(null)
})
it('Should set complete to 100 when status is "COMPLETED".', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
task.status = 'COMPLETED'
expect(task.complete).toEqual(100)
expect(task.completed).toEqual(true)
expect(task.completedDate).not.toEqual(null)
})
it('Should set complete to 0 when status is "NEEDS-ACTION".', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
task.complete = 100
task.status = 'NEEDS-ACTION'
expect(task.complete).toEqual(0)
expect(task.completed).toEqual(false)
expect(task.completedDate).toEqual(null)
})
it('Should set complete to >0 and <100 when status is "IN-PROCESS".', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
task.complete = 100
task.status = 'IN-PROCESS'
expect(task.complete).toBeGreaterThan(0)
expect(task.complete).toBeLessThan(100)
expect(task.completed).toEqual(false)
expect(task.completedDate).toEqual(null)
})
it('Should set complete to <100 when setting completed to false.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
task.complete = 100
task.completed = false
expect(task.status).toEqual('IN-PROCESS')
expect(task.complete).toBeLessThan(100)
expect(task.completedDate).toEqual(null)
})
it('Should set complete to 100 when setting completed to true.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
task.complete = 0
task.completed = true
expect(task.status).toEqual('COMPLETED')
expect(task.complete).toEqual(100)
expect(task.completedDate).not.toEqual(null)
})
it('Should set and get the uid', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
expect(task.uid).toEqual('pwen4kz18g')
task.uid = 'pwen4kz19g'
expect(task.uid).toEqual('pwen4kz19g')
})
it('Should set and get the summary', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
expect(task.summary).toEqual('Test 1')
task.summary = 'Test 2'
expect(task.summary).toEqual('Test 2')
})
it('Should set and get the priority', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
expect(task.priority).toEqual(null)
task.priority = 1
expect(task.priority).toEqual(1)
})
it('Should not return "CHILD" relation.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-reltype-child'), {})
expect(task.related).toEqual(null)
})
it('Should not return "SIBLING" relation.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-reltype-sibling'), {})
expect(task.related).toEqual(null)
})
it('Should return "PARENT" relation.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-reltype-parent'), {})
expect(task.related).toEqual('255ce6ca-fbae-4263-89c5-5743f8456b22')
})
it('Should return relation if RELTYPE is not specified.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-reltype-default'), {})
expect(task.related).toEqual('255ce6ca-fbae-4263-89c5-5743f8456b22')
})
it('Should correctly set the parent.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-default'), {})
expect(task.related).toEqual(null)
task.related = 'newparent123'
expect(task.related).toEqual('newparent123')
task.related = 'newparent124'
expect(task.related).toEqual('newparent124')
task.related = null
expect(task.related).toEqual(null)
})
it('Should correctly set the parent if a "RELATED-TO;RELTYPE=CHILD" property already exists.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-reltype-child'), {})
expect(task.related).toEqual(null)
task.related = 'newparent123'
expect(task.related).toEqual('newparent123')
})
it('Should not change the sort order, when the created date is changed and x-apple-sort-order is set.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-sortOrder1'), {})
expect(task.sortOrder).toEqual(1)
task.created = ICAL.Time.fromDateTimeString('2018-11-19T18:39:11')
expect(task.sortOrder).toEqual(1)
})
it('Should update the sort order, when the created date is changed and x-apple-sort-order is not set.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-sortOrderByCreated1'), {})
expect(task.sortOrder).toEqual(564345550)
task.created = ICAL.Time.fromDateTimeString('2018-11-19T18:39:11')
expect(task.sortOrder).toEqual(564345551)
})
it('Should update the sort order, when x-apple-sort-order is deleted.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-sortOrder1'), {})
expect(task.sortOrder).toEqual(1)
task.sortOrder = null
expect(task.sortOrder).toEqual(564345559)
})
it('Should update the sort order, when a new sort order is set.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-sortOrder1'), {})
expect(task.sortOrder).toEqual(1)
task.sortOrder = 2
expect(task.sortOrder).toEqual(2)
})
it('Should show all categories from multiple properties.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-categories-multiple'), {})
expect(task.categories.length).toEqual(3)
})
it('Should properly add and remove categories from multiple properties.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-categories-multiple'), {})
expect(task.categories.length).toEqual(3)
expect(task.categories).toEqual(['cat1', 'cat2', 'cat3'])
task.categories = ['cat1', 'cat5']
expect(task.categories).toEqual(['cat1', 'cat5'])
task.categories = []
expect(task.categories.length).toEqual(0)
})
it('Should properly add and remove categories from a single property.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-categories-single'), {})
expect(task.categories.length).toEqual(2)
expect(task.categories).toEqual(['cat1', 'cat2'])
task.categories = ['cat1', 'cat3']
expect(task.categories).toEqual(['cat1', 'cat3'])
task.categories = []
expect(task.categories.length).toEqual(0)
})
it('Should properly add and remove categories if none are set yet.', () => {
const task = new Task(loadICS('vcalendars/vcalendar-categories-none'), {})
expect(task.categories.length).toEqual(0)
task.categories = ['cat1', 'cat3']
expect(task.categories).toEqual(['cat1', 'cat3'])
task.categories = []
expect(task.categories.length).toEqual(0)
})
})