requireRequest(); testSupport.lib('request/calendar_query'); testSupport.lib('resources/calendar'), testSupport.lib('xhr'); testSupport.lib('connection'); suite('caldav/resources/calendar', function() { var Calendar; var Connection; var CalendarQuery; var con; var url = 'foobar.com'; var subject; suiteSetup(function() { Calendar = Caldav.require('resources/calendar'); Connection = Caldav.require('connection'); CalendarQuery = Caldav.require('request/calendar_query'); }); setup(function() { con = new Connection(); subject = new Calendar(con, { url: url }); }); suite('initialization', function() { test('without calendar data', function() { assert.equal(subject.url, url); assert.equal(subject.connection, con); }); test('with calendar data', function() { return; var calledWith, data = { value: 'wow'}; subject.updateFromServer = function() { calledWith = arguments; } subject.constructor.call(this, con, data); assert.equal(calledWith[0], data); }); }); suite('#createQuery', function() { var result; setup(function() { result = subject.createQuery(); }); test('result', function() { assert.instanceOf(result, CalendarQuery); assert.equal(result.url, url); }); }); suite('#updateFromServer', function() { function status(value, status) { if (typeof(status) === 'undefined') { status = '200'; } return { status: status, value: value }; } var input = { displayname: status('name'), 'calendar-color': status('#FFF'), 'calendar-description': status('desc'), 'getctag': status('17'), 'resourcetype': status(['calendar']), 'current-user-privilege-set': status(null, 404) }; var expected = { name: 'name', color: '#FFF', description: 'desc', ctag: '17', resourcetype: ['calendar'], privilegeSet: [] }; test('full set', function() { var key; subject.updateFromServer(input); for (key in expected) { if (expected.hasOwnProperty(key)) { assert.deepEqual( subject[key], expected[key], key + ' was not set' ); } } }); test('partial update', function() { subject.updateFromServer(input); subject.updateFromServer({ 'calendar-description': status('baz') }); assert.equal(subject.color, '#FFF', 'should not clear old values'); assert.equal(subject.description, 'baz'); }); }); });