1
0
Fork 0

RatingService: ensure #postProcessRaterData is called before save

master
Jeffrey Fisher 2018-04-24 10:45:26 -04:00 committed by Mike Gerwitz
parent 6380f610d3
commit 5b410005cd
3 changed files with 143 additions and 2 deletions

View File

@ -154,7 +154,7 @@ module.exports = Class( 'RatingService',
{
actions = actions || [];
_self._postProcessRaterData(
_self.postProcessRaterData(
rate_data, actions, program, quote
);
@ -251,7 +251,7 @@ module.exports = Class( 'RatingService',
*
* @return {undefined}
*/
_postProcessRaterData: function( data, actions, program, quote )
'virtual protected postProcessRaterData': function( data, actions, program, quote )
{
var meta = data._cmpdata || {};

View File

@ -0,0 +1,86 @@
/**
* Tests RatingService
*
* Copyright (C) 2018 R-T Specialty, LLC.
*
* This file is part of the Liza Data Collection Framework.
*
* liza is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
'use strict'
exports.getStubs = function()
{
const program_id = 'foo';
const program = {
getId: () => program_id,
};
// rate reply
const stub_rate_data = {};
const rater = {
rate: ( quote, session, indv, callback ) => callback( stub_rate_data ),
};
const raters = {
byId: () => rater,
};
const logger = {
log: () => {},
};
const server = {
sendResponse: () => {},
sendError: () => {},
};
const dao = {
mergeBucket: () => {},
saveQuoteClasses: () => {},
setWorksheets: () => {},
};
const session = {
isInternal: () => false,
};
const request = {
getSession: () => session,
};
const response = {};
const quote = {
getProgramId: () => program_id,
getProgram: () => program,
getId: () => 0,
};
return {
program: program,
stub_rate_data: stub_rate_data,
rater: rater,
raters: raters,
logger: logger,
server: server,
dao: dao,
session: session,
request: request,
response: response,
quote: quote,
};
};

View File

@ -0,0 +1,55 @@
/**
* Tests RatingService
*
* Copyright (C) 2018 R-T Specialty, LLC.
*
* This file is part of the Liza Data Collection Framework.
*
* liza is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
'use strict'
const { expect } = require( 'chai' );
const Sut = require( '../../../' ).server.service.RatingService;
const RatingServiceStub = require( '../../../' ).test.server.service.RatingServiceStub;
describe( 'RatingService', () =>
{
describe( "protected API", () =>
{
it( "calls #postProcessRaterData after rating before save", done =>
{
let processed = false;
const { logger, server, raters, dao, request, response, quote } = RatingServiceStub.getStubs();
dao.mergeBucket = () =>
{
expect( processed ).to.equal( true );
done();
};
const sut = Sut.extend(
{
'override postProcessRaterData'( data, actions, program, quote )
{
processed = true;
}
} )( logger, dao, server, raters );
sut.request( request, response, quote, 'something', () => {} );
} );
} );
} );