get events-json-feed test using mockjax

This commit is contained in:
Adam Shaw
2014-05-22 17:03:12 -07:00
parent dd317f19fa
commit d149352a7e
+37 -29
View File
@@ -2,59 +2,72 @@
describe('events as a json feed', function() {
var options;
var sampleResponse;
beforeEach(function() {
jasmine.Ajax.install();
affix('#cal');
options = {
defaultDate: '2014-05-01',
defaultView: 'month'
};
sampleResponse = {
status: 200,
responseText: JSON.stringify([
$.mockjax({
url: '*',
contentType: 'text/json',
responseText: [
{
title: 'my event',
start: '2014-05-21'
}
])
};
]
});
$.mockjaxSettings.log = function() { }; // don't console.log
});
afterEach(function() {
$.mockjaxClear();
});
it('requests correctly when no timezone', function() {
options.events = 'my-feed.php';
$('#cal').fullCalendar(options);
var request = jasmine.Ajax.requests.mostRecent();
expect(request.url).toMatch(/^my-feed\.php\?start=2014-04-27&end=2014-06-08&_=/);
var request = $.mockjax.mockedAjaxCalls()[0];
expect(request.data.start).toEqual('2014-04-27');
expect(request.data.end).toEqual('2014-06-08');
expect(request.data.timezone).toBeUndefined();
});
it('requests correctly when local timezone', function() {
options.events = 'my-feed.php';
options.timezone = 'local';
$('#cal').fullCalendar(options);
var request = jasmine.Ajax.requests.mostRecent();
expect(request.url).toMatch(/^my-feed\.php\?start=2014-04-27&end=2014-06-08&_=/);
var request = $.mockjax.mockedAjaxCalls()[0];
expect(request.data.start).toEqual('2014-04-27');
expect(request.data.end).toEqual('2014-06-08');
expect(request.data.timezone).toBeUndefined();
});
it('requests correctly when UTC timezone', function() {
options.events = 'my-feed.php';
options.timezone = 'UTC';
$('#cal').fullCalendar(options);
var request = jasmine.Ajax.requests.mostRecent();
expect(request.url).toMatch(/^my-feed\.php\?start=2014-04-27&end=2014-06-08&timezone=UTC&_=/);
var request = $.mockjax.mockedAjaxCalls()[0];
expect(request.data.start).toEqual('2014-04-27');
expect(request.data.end).toEqual('2014-06-08');
expect(request.data.timezone).toEqual('UTC');
});
it('requests correctly when custom timezone', function() {
options.events = 'my-feed.php';
options.timezone = 'America/Chicago';
$('#cal').fullCalendar(options);
var request = jasmine.Ajax.requests.mostRecent();
expect(request.url).toMatch(/^my-feed\.php\?start=2014-04-27&end=2014-06-08&timezone=America%2FChicago&_=/);
var request = $.mockjax.mockedAjaxCalls()[0];
expect(request.data.start).toEqual('2014-04-27');
expect(request.data.end).toEqual('2014-06-08');
expect(request.data.timezone).toEqual('America/Chicago');
});
it('requests correctly with event source extended form', function(done) {
var request;
var eventSource = {
url: 'my-feed.php',
className: 'customeventclass'
@@ -62,17 +75,17 @@ describe('events as a json feed', function() {
options.eventSources = [ eventSource ];
options.timezone = 'America/Chicago';
options.eventRender = function(eventObj, eventElm) {
expect(request.url).toMatch(/^my-feed\.php\?start=2014-04-27&end=2014-06-08&timezone=America%2FChicago&_=/);
var request = $.mockjax.mockedAjaxCalls()[0];
expect(request.data.start).toEqual('2014-04-27');
expect(request.data.end).toEqual('2014-06-08');
expect(request.data.timezone).toEqual('America/Chicago');
expect(eventElm).toHaveClass('customeventclass');
done();
};
$('#cal').fullCalendar(options);
request = jasmine.Ajax.requests.mostRecent();
request.response(sampleResponse);
});
it('accepts jQuery.ajax params', function(done) {
var request;
var eventSource = {
url: 'my-feed.php',
data: {
@@ -83,18 +96,15 @@ describe('events as a json feed', function() {
spyOn(eventSource, 'success').and.callThrough();
options.eventSources = [ eventSource ];
options.eventAfterAllRender = function() {
expect(request.url).toMatch(/^my-feed\.php/);
expect(request.url).toMatch(/[?&]customParam=yes/);
var request = $.mockjax.mockedAjaxCalls()[0];
expect(request.data.customParam).toMatch('yes');
expect(eventSource.success.calls.count()).toEqual(1);
done();
};
$('#cal').fullCalendar(options);
request = jasmine.Ajax.requests.mostRecent();
request.response(sampleResponse); // needed to trigger eventAfterAllRender (bad)
});
it('accepts a dynamic data function', function(done) {
var request;
var eventSource = {
url: 'my-feed.php',
data: function() {
@@ -105,13 +115,11 @@ describe('events as a json feed', function() {
};
options.eventSources = [ eventSource ];
options.eventAfterAllRender = function() {
expect(request.url).toMatch(/^my-feed\.php/);
expect(request.url).toMatch(/[?&]customParam=heckyeah/);
var request = $.mockjax.mockedAjaxCalls()[0];
expect(request.data.customParam).toMatch('heckyeah');
done();
};
$('#cal').fullCalendar(options);
request = jasmine.Ajax.requests.mostRecent();
request.response(sampleResponse); // needed to trigger eventAfterAllRender (bad)
});
});