mirror of
https://github.com/Wan-Video/Wan2.1.git
synced 2025-06-08 08:14:57 +00:00
254 lines
7.5 KiB
JavaScript
254 lines
7.5 KiB
JavaScript
|
|
/*
|
|
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 );
|
|
});
|
|
|
|
});
|
|
}
|
|
});
|
|
})
|
|
|
|
});
|
|
|
|
|
|
|