event-feed-param.js 1.99 KB
describe('event feed params', function() {

	var options;

	beforeEach(function() {
		affix('#cal');

		options = {
			defaultDate: '2014-05-01',
			defaultView: 'month'
		};

		$.mockjax({
			url: '*',
			contentType: 'text/json',
			responseText: [
				{
					title: 'my event',
					start: '2014-05-21'
				}
			]
		});
		$.mockjaxSettings.log = function() { }; // don't console.log
	});

	afterEach(function() {
		$.mockjaxClear();
	});

	it('utilizes custom startParam, endParam, and timezoneParam names', function() {
		options.events = 'my-feed.php';
		options.timezone = 'America/Los_Angeles';
		options.startParam = 'mystart';
		options.endParam = 'myend';
		options.timezoneParam = 'currtz';
		$('#cal').fullCalendar(options);
		var request = $.mockjax.mockedAjaxCalls()[0];
		expect(request.data.start).toBeUndefined();
		expect(request.data.end).toBeUndefined();
		expect(request.data.timezone).toBeUndefined();
		expect(request.data.mystart).toEqual('2014-04-27');
		expect(request.data.myend).toEqual('2014-06-08');
		expect(request.data.currtz).toEqual('America/Los_Angeles');
	});

	it('utilizes event-source-specific startParam, endParam, and timezoneParam names', function() {
		options.timezone = 'America/Los_Angeles';
		options.startParam = 'mystart';
		options.endParam = 'myend';
		options.timezoneParam = 'currtz';
		options.eventSources = [
			{
				url: 'my-feed.php',
				startParam: 'feedstart',
				endParam: 'feedend',
				timezoneParam: 'feedctz'
			}
		];
		$('#cal').fullCalendar(options);
		var request = $.mockjax.mockedAjaxCalls()[0];
		expect(request.data.start).toBeUndefined();
		expect(request.data.end).toBeUndefined();
		expect(request.data.timezone).toBeUndefined();
		expect(request.data.mystart).toBeUndefined();
		expect(request.data.myend).toBeUndefined();
		expect(request.data.currtz).toBeUndefined();
		expect(request.data.feedstart).toEqual('2014-04-27');
		expect(request.data.feedend).toEqual('2014-06-08');
		expect(request.data.feedctz).toEqual('America/Los_Angeles');
	});

});