gradio / node_modules /oboe /test /specs /publicApi.unit.spec.js
reisarod's picture
Upload folder using huggingface_hub
5fae594 verified
/*
Tests that calling the public api gets through correctly to the writing
correctly. streamingXhr is a stub so no actual calls are made.
Technically this tests some of instanceController.js as well as publicApi.js but the tests were
written before the logic was split into two.
*/
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({
/* Under Jasmine's toHaveBeenCalledLike, subject(foo, undefined)
is considered different from subject(foo). This is slightly
looser and considers those equal.
*/
toHaveBeenCalledLike:function(/*expectedArgs*/){
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;
// check for one too many arguments given. But this is ok
// if the extra arg is undefined.
if( actualArgs[expectedArgs.length] != undefined ) {
return false;
}
return expectedArgs.every(function( expectedArg, index ){
return equals( actualArgs[index], expectedArg );
});
});
}
});
})
});