|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
describe("public api", function(){ |
|
"use strict"; |
|
|
|
describe("propagates through to wiring function", function(){ |
|
|
|
beforeEach(function() { |
|
spyOn(window, 'wire'); |
|
}); |
|
|
|
it('exports a usable function for GETs', function(){ |
|
|
|
oboe('http://example.com/oboez') |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'GET', |
|
'http://example.com/oboez' |
|
) |
|
}) |
|
|
|
it('can create a no-ajax instance', function(){ |
|
|
|
oboe() |
|
|
|
expect(wire).toHaveBeenCalledLike() |
|
}) |
|
|
|
describe('get', function(){ |
|
|
|
it('works via arguments', function(){ |
|
|
|
oboe('http://example.com/oboez') |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'GET', |
|
'http://example.com/oboez' |
|
) |
|
|
|
}) |
|
|
|
it('works via options object', function(){ |
|
|
|
oboe({url: 'http://example.com/oboez'}) |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'GET', |
|
'http://example.com/oboez' |
|
) |
|
}) |
|
|
|
it('can disable caching', function(){ |
|
var time = sinon.useFakeTimers(123); |
|
|
|
oboe({url: 'http://example.com/oboez', cached:false}) |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'GET', |
|
'http://example.com/oboez?_=123' |
|
) |
|
|
|
time.restore(); |
|
}) |
|
|
|
it('can explicitly not disable caching', function(){ |
|
|
|
var time = sinon.useFakeTimers(123); |
|
|
|
oboe({url: 'http://example.com/oboez', cached:true}) |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'GET', |
|
'http://example.com/oboez' |
|
) |
|
|
|
time.restore(); |
|
}) |
|
|
|
it('can disable caching if url already has query param', function(){ |
|
|
|
var time = sinon.useFakeTimers(123); |
|
|
|
spyOn(Date, 'now').andReturn(123); |
|
|
|
oboe({url: 'http://example.com/oboez?foo=bar', cached:false}) |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'GET', |
|
'http://example.com/oboez?foo=bar&_=123' |
|
) |
|
|
|
time.restore(); |
|
}) |
|
|
|
it('propogates headers', function(){ |
|
|
|
var headers = {'X-HEADER-1':'value1', 'X-HEADER-2':'value2'}; |
|
|
|
oboe({url: 'http://example.com/oboez', |
|
method:'GET', |
|
headers:headers}) |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'GET', |
|
'http://example.com/oboez', |
|
undefined, |
|
headers |
|
) |
|
}) |
|
|
|
}); |
|
|
|
describe('delete', function(){ |
|
|
|
|
|
it('works via options object', function(){ |
|
|
|
oboe({url: 'http://example.com/oboez', |
|
method: 'DELETE'}) |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'DELETE', |
|
'http://example.com/oboez' |
|
) |
|
}) |
|
|
|
|
|
}); |
|
|
|
|
|
describe('post', function(){ |
|
|
|
it('can post an object', function(){ |
|
|
|
oboe({ method:'POST', |
|
url:'http://example.com/oboez', |
|
body:[1,2,3,4,5] |
|
}) |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'POST', |
|
'http://example.com/oboez', |
|
[1,2,3,4,5] |
|
) |
|
}) |
|
|
|
it('can post a string', function(){ |
|
|
|
oboe({ method:'POST', |
|
url:'http://example.com/oboez', |
|
body:'my_data' |
|
}) |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'POST', |
|
'http://example.com/oboez', |
|
'my_data' |
|
) |
|
}) |
|
|
|
|
|
}); |
|
|
|
describe('put', function(){ |
|
it('can put a string', function(){ |
|
|
|
oboe({ method:'PUT', |
|
url:'http://example.com/oboez', |
|
'body':'my_data'}) |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'PUT', |
|
'http://example.com/oboez', |
|
'my_data' |
|
) |
|
}) |
|
|
|
|
|
}); |
|
|
|
describe('patch', function(){ |
|
it('can patch a string', function(){ |
|
oboe({url:'http://example.com/oboez', |
|
body:'my_data', |
|
method:'PATCH'}); |
|
|
|
expect(wire).toHaveBeenCalledLike( |
|
'PATCH', |
|
'http://example.com/oboez', |
|
'my_data' |
|
) |
|
}) |
|
|
|
}) |
|
|
|
}); |
|
|
|
this.beforeEach(function(){ |
|
|
|
this.addMatchers({ |
|
|
|
|
|
|
|
|
|
toHaveBeenCalledLike:function(){ |
|
var expectedArgs = Array.prototype.slice.apply(arguments); |
|
var actualCalls = this.actual.calls; |
|
|
|
var equals = this.env.equals_.bind(this.env); |
|
|
|
this.message = function() { |
|
var invertedMessage = "Expected spy " + this.actual.identity + " not to have been called like " + jasmine.pp(expectedArgs) + " but it was."; |
|
var positiveMessage = ""; |
|
if (this.actual.callCount === 0) { |
|
positiveMessage = "Expected spy " + this.actual.identity + " to have been called like " + jasmine.pp(expectedArgs) + " but it was never called."; |
|
} else { |
|
positiveMessage = "Expected spy " + this.actual.identity + " to have been called like " + jasmine.pp(expectedArgs) + " but actual calls were " + jasmine.pp(this.actual.argsForCall).replace(/^\[ | \]$/g, '') |
|
} |
|
return [positiveMessage, invertedMessage]; |
|
}; |
|
|
|
return actualCalls.some(function( actualCall ){ |
|
|
|
var actualArgs = actualCall.args; |
|
|
|
|
|
|
|
if( actualArgs[expectedArgs.length] != undefined ) { |
|
|
|
return false; |
|
} |
|
|
|
return expectedArgs.every(function( expectedArg, index ){ |
|
|
|
return equals( actualArgs[index], expectedArg ); |
|
}); |
|
|
|
}); |
|
} |
|
}); |
|
}) |
|
|
|
}); |
|
|
|
|
|
|
|
|