mirror of
https://github.com/Wan-Video/Wan2.1.git
synced 2025-06-08 08:14:57 +00:00
77 lines
1.9 KiB
JavaScript
77 lines
1.9 KiB
JavaScript
function spiedPubSub() {
|
|
|
|
var realPubSub = pubSub();
|
|
|
|
function fakedPubSub( eventName ) {
|
|
|
|
var single = realPubSub(eventName);
|
|
|
|
if( !single.emit.isSpy ) {
|
|
spyOn( single, 'emit' ).andCallThrough();
|
|
spyOn( single, 'on' ).andCallThrough();
|
|
spyOn( single, 'un' ).andCallThrough();
|
|
}
|
|
|
|
return single;
|
|
}
|
|
|
|
fakedPubSub.emit = realPubSub.emit;
|
|
fakedPubSub.on = realPubSub.on;
|
|
fakedPubSub.un = realPubSub.un;
|
|
|
|
return fakedPubSub;
|
|
}
|
|
|
|
function fakePubSub( eventNames ) {
|
|
|
|
var eventTypes = {};
|
|
var eventsEmitted = [];
|
|
var eventNamesEmitted = [];
|
|
var eventTypesEmitted = {};
|
|
var callCount = {};
|
|
|
|
function record(eventName){
|
|
return function() {
|
|
eventsEmitted.push({
|
|
type: eventName,
|
|
args: arguments
|
|
});
|
|
|
|
eventNamesEmitted.push(eventName);
|
|
eventTypesEmitted[eventName].push(arguments);
|
|
callCount[eventName]++;
|
|
}
|
|
}
|
|
|
|
eventNames.forEach( function( eventName ){
|
|
eventTypes[eventName] = {
|
|
'emit': jasmine.createSpy(eventName + '/emit')
|
|
.andCallFake(record(eventName))
|
|
, 'on': jasmine.createSpy(eventName + '/on')
|
|
, 'un': jasmine.createSpy(eventName + '/un')
|
|
};
|
|
|
|
eventTypesEmitted[eventName] = [];
|
|
callCount[eventName] = 0;
|
|
});
|
|
|
|
function bus( eventName ) {
|
|
|
|
return eventTypes[eventName];
|
|
}
|
|
|
|
bus.events = eventsEmitted;
|
|
bus.eventNames = eventNamesEmitted;
|
|
bus.eventTypesEmitted = eventTypesEmitted;
|
|
bus.callCount = callCount;
|
|
|
|
|
|
['emit', 'on'].forEach(function(methodName){
|
|
|
|
bus[methodName] = varArgs(function(eventName, parameters){
|
|
apply( parameters, eventTypes[eventName][methodName]);
|
|
});
|
|
})
|
|
|
|
return bus;
|
|
}
|