Access bucket data during rate event
commit
200ae99ce5
|
@ -98,7 +98,7 @@ module.exports = Class( 'RateEventHandler' )
|
||||||
var qstep = quote.getCurrentStepId();
|
var qstep = quote.getCurrentStepId();
|
||||||
|
|
||||||
// arbitrary delay before rating (use as a last resort)
|
// arbitrary delay before rating (use as a last resort)
|
||||||
var delay = ( typeof +data.value === 'number' )
|
var delay = ( !isNaN( data.value ) )
|
||||||
? data.value * 1e3
|
? data.value * 1e3
|
||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,181 @@ describe( 'RateEventHandler', () =>
|
||||||
} )
|
} )
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
describe( "Handles rating delay", () =>
|
||||||
|
{
|
||||||
|
it( "uses a number to determine rating delay", done =>
|
||||||
|
{
|
||||||
|
let set_timeout_called = false;
|
||||||
|
let actual_delay = 0;
|
||||||
|
|
||||||
|
const delay = '25';
|
||||||
|
const expected_delay = 25000;
|
||||||
|
|
||||||
|
const quote = {
|
||||||
|
getExplicitLockStep: () => 0,
|
||||||
|
setLastPremiumDate: () => {},
|
||||||
|
setInitialRatedDate: () => {},
|
||||||
|
getCurrentStepId: () => 1,
|
||||||
|
refreshData: () => {},
|
||||||
|
isLocked: () => {},
|
||||||
|
getId: () => "111111"
|
||||||
|
};
|
||||||
|
|
||||||
|
const client = {
|
||||||
|
uiDialog: {
|
||||||
|
showRatingInProgressDialog: () =>
|
||||||
|
{
|
||||||
|
return { close: () => {} }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
showRatingInProgressDialog: () => "Some Dialog",
|
||||||
|
getQuote: () => quote,
|
||||||
|
isSaving: () => false,
|
||||||
|
once: ( _, __ ) => {},
|
||||||
|
getUi: () =>
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
getStep: ( _ ) =>
|
||||||
|
{
|
||||||
|
return { invalidate: () => {} }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getDataByName: ( name ) => { return [ 'foo' ]; },
|
||||||
|
};
|
||||||
|
|
||||||
|
const proxy = {
|
||||||
|
get: ( url, callback ) => callback(
|
||||||
|
{
|
||||||
|
content: {
|
||||||
|
data: "Some Data",
|
||||||
|
initialRatedDate: 111,
|
||||||
|
lastRatedDate: 222
|
||||||
|
}
|
||||||
|
},
|
||||||
|
null
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
const sut = Sut( client, proxy );
|
||||||
|
|
||||||
|
const old_setTimeout = setTimeout;
|
||||||
|
|
||||||
|
setTimeout = ( callback, delay ) => {
|
||||||
|
set_timeout_called = true;
|
||||||
|
actual_delay = delay;
|
||||||
|
|
||||||
|
callback.apply( this, arguments );
|
||||||
|
}
|
||||||
|
|
||||||
|
sut.handle(
|
||||||
|
"",
|
||||||
|
( _, __ ) => {},
|
||||||
|
{
|
||||||
|
indv: 'somerater',
|
||||||
|
stepId: 1,
|
||||||
|
value: delay
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
setTimeout = old_setTimeout;
|
||||||
|
|
||||||
|
expect( set_timeout_called ).to.equal( true );
|
||||||
|
expect( actual_delay ).to.equal( expected_delay );
|
||||||
|
done();
|
||||||
|
} )
|
||||||
|
|
||||||
|
|
||||||
|
it( "rating delay defaults to zero", done =>
|
||||||
|
{
|
||||||
|
let set_timeout_called = false;
|
||||||
|
let actual_delay = 0;
|
||||||
|
|
||||||
|
const delay = 'foo';
|
||||||
|
const expected_delay = 0;
|
||||||
|
|
||||||
|
const quote = {
|
||||||
|
getExplicitLockStep: () => 0,
|
||||||
|
setLastPremiumDate: () => {},
|
||||||
|
setInitialRatedDate: () => {},
|
||||||
|
getCurrentStepId: () => 1,
|
||||||
|
refreshData: () => {},
|
||||||
|
isLocked: () => {},
|
||||||
|
getId: () => "111111"
|
||||||
|
};
|
||||||
|
|
||||||
|
const client = {
|
||||||
|
uiDialog: {
|
||||||
|
showRatingInProgressDialog: () =>
|
||||||
|
{
|
||||||
|
return { close: () => {} }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
showRatingInProgressDialog: () => "Some Dialog",
|
||||||
|
getQuote: () => quote,
|
||||||
|
isSaving: () => false,
|
||||||
|
once: ( _, __ ) => {},
|
||||||
|
getUi: () =>
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
getStep: ( _ ) =>
|
||||||
|
{
|
||||||
|
return { invalidate: () => {} }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const proxy = {
|
||||||
|
get: ( url, callback ) => callback(
|
||||||
|
{
|
||||||
|
content: {
|
||||||
|
data: "Some Data",
|
||||||
|
initialRatedDate: 111,
|
||||||
|
lastRatedDate: 222
|
||||||
|
}
|
||||||
|
},
|
||||||
|
null
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
const sut = Sut( client, proxy );
|
||||||
|
|
||||||
|
const old_setTimeout = setTimeout;
|
||||||
|
|
||||||
|
setTimeout = ( callback, delay ) => {
|
||||||
|
set_timeout_called = true;
|
||||||
|
actual_delay = delay;
|
||||||
|
|
||||||
|
callback.apply( this, arguments );
|
||||||
|
}
|
||||||
|
|
||||||
|
// this is necessary because if something breaks here, setTimeout
|
||||||
|
// will not be restored and will yield a false negative on other
|
||||||
|
// tests
|
||||||
|
try {
|
||||||
|
sut.handle(
|
||||||
|
"",
|
||||||
|
( _, __ ) => {},
|
||||||
|
{
|
||||||
|
indv: 'somerater',
|
||||||
|
stepId: 1,
|
||||||
|
value: delay
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
catch( e ) {}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
setTimeout = old_setTimeout;
|
||||||
|
}
|
||||||
|
|
||||||
|
expect( set_timeout_called ).to.equal( true );
|
||||||
|
expect( actual_delay ).to.equal( expected_delay );
|
||||||
|
done();
|
||||||
|
} )
|
||||||
|
} );
|
||||||
|
|
||||||
describe( "Handle Rating Event with locked quote", () =>
|
describe( "Handle Rating Event with locked quote", () =>
|
||||||
{
|
{
|
||||||
it( "calls #handle to do the rating with a locked quote", done =>
|
it( "calls #handle to do the rating with a locked quote", done =>
|
||||||
|
|
Loading…
Reference in New Issue