diff --git a/src/server/daemon/controller.js b/src/server/daemon/controller.js
index 7e8ca54..5b1b6b0 100644
--- a/src/server/daemon/controller.js
+++ b/src/server/daemon/controller.js
@@ -85,7 +85,6 @@ const {
RatingService,
RatingServicePublish,
- RatingServiceSubmitNotify,
TokenedService,
},
diff --git a/src/server/service/RatingServiceSubmitNotify.js b/src/server/service/RatingServiceSubmitNotify.js
deleted file mode 100644
index 05712c6..0000000
--- a/src/server/service/RatingServiceSubmitNotify.js
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Notification on all submit
- *
- * Copyright (C) 2010-2019 R-T Specialty, LLC.
- *
- * This file is part of liza.
- *
- * liza is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License
- * along with this program. If not, see .
- */
-
-'use strict';
-
-const { Trait } = require( 'easejs' );
-const DslRaterContext = require( '../rater/DslRaterContext' )
-const RatingService = require( './RatingService' );
-
-
-/**
- * Triggers DataApi when no results are available
- *
- * This information is currently stored in `__prem_avail_count`. In the
- * future, it may be worth accepting a parameter to configure this at
- * runtime.
- *
- * Notification status will persist using the provided DAO. The next time
- * such a notification is requested, it will only occur if the flag is not
- * set. The flag is not set in the event of an error (determined by the
- * DataApi; usually an HTTP error).
- */
-module.exports = Trait( 'RatingServiceSubmitNotify' )
- .extend( RatingService,
-{
- /**
- * Function returning DataApi to trigger
- * @type {Function(UserSession):DataApi}
- */
- 'private _dapif': null,
-
- /**
- * Data store for notification flag
- * @type {ServerDao}
- */
- 'private _notifyDao': null,
-
-
- /**
- * Initialize mixin with DataApi to trigger
- *
- * @param {Function(UserSession):DataApi} dapif Function producing DataApi
- * @param {ServerDao} dao store for notification flag
- */
- __mixin( dapif, dao )
- {
- this._dapif = dapif;
- this._notifyDao = dao;
- },
-
-
- /**
- * Trigger previously provided DataApi when no results are available
- *
- * Result count is determined by DATA.__prem_avail_count. If the
- * notification is successful (determined by the DataApi), then a
- * flag will be set preventing the request from being trigerred for
- * subsequent rating data.
- *
- * @param {UserRequest} request user request
- * @param {Object} data rating data returned
- * @param {Array} actions actions to send to client
- * @param {Program} program program used to perform rating
- * @param {Quote} quote quote used for rating
- *
- * @return {undefined}
- */
- 'override protected postProcessRaterData'(
- request, data, actions, program, quote
- )
- {
- const quote_id = quote.getId();
- const avail = ( data.__prem_avail_count || [ 0 ] )[ 0 ];
-
- if ( avail === 0 )
- {
- this._maybeNotify( quote_id, request );
- }
-
- this.__super( request, data, actions, program, quote );
- },
-
-
- /**
- * Perform notification if flag has not been set
- *
- * See #postProcessRaterData for more information.
- *
- * @param {number} quote_id effective quote/document id
- * @param {UserRequest} request user request
- *
- * @return {undefined}
- */
- 'private _maybeNotify'( quote_id, request )
- {
- this._getNotifyState( quote_id, notified =>
- {
- if ( notified === true )
- {
- return;
- }
-
- // make the request, only setting the notification flag if
- // it is successful
- this._dapif( request )
- .request( { quote_id: quote_id }, err =>
- {
- err || this._setNotified( quote_id );
- } );
- } );
- },
-
-
- /**
- * Get value of notification flag
- *
- * @param {number} quote_id id of quote
- * @param {function(boolean)} callback callback to call when complete
- *
- * @return {undefined}
- */
- 'private _getNotifyState'( quote_id, callback )
- {
- this._notifyDao.getDocumentField(
- quote_id,
- 'submitNotified',
- ( err, value ) => callback( value )
- );
- },
-
-
- /**
- * Set notification flag
- *
- * @param {number} quote_id id of quote
- *
- * @return {undefined}
- */
- 'private _setNotified'( quote_id )
- {
- this._notifyDao.setDocumentField(
- quote_id, 'submitNotified', true
- );
- },
-} );
diff --git a/test/server/service/RatingServiceSubmitNotifyTest.js b/test/server/service/RatingServiceSubmitNotifyTest.js
deleted file mode 100644
index 1333eaf..0000000
--- a/test/server/service/RatingServiceSubmitNotifyTest.js
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * Tests RatingServiceSubmitNotify
- *
- * Copyright (C) 2010-2019 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 .
- */
-
-'use strict'
-
-const { Class } = require( 'easejs' );
-const { expect } = require( 'chai' );
-
-
-const {
- dapi: {
- DataApi,
- },
- server: {
- service: {
- RatingServiceSubmitNotify: Sut,
- RatingService,
- },
- },
- test: {
- server: {
- service: {
- RatingServiceStub,
- },
- },
- },
-} = require( '../../../' );
-
-
-describe( 'RatingServiceSubmitNotify', () =>
-{
- [
- // not available; make successful request and save flag
- {
- prem_avail_count: [ 0 ],
- prev_called: false,
- expected_request: true,
- request_err: null,
- save: true,
- },
- // not available; make failing request, don't save flag
- {
- prem_avail_count: [ 0 ],
- prev_called: false,
- expected_request: true,
- request_err: Error(),
- save: false,
- },
- // available
- {
- prem_avail_count: [ 2 ],
- prev_called: false,
- expected_request: false,
- request_err: null,
- save: false,
- },
- // this shouldn't happen; ignore all but first index
- {
- prem_avail_count: [ 2, 2 ],
- prev_called: false,
- expected_request: false,
- request_err: null,
- save: false,
- },
- // save as above, but already saved
- {
- prem_avail_count: [ 0 ],
- prev_called: true,
- expected_request: false,
- request_err: null,
- save: false,
- },
- // available; don't make request
- {
- prem_avail_count: [ 2 ],
- prev_called: true,
- expected_request: false,
- request_err: null,
- save: false,
- },
- // this shouldn't happen; ignore all but first index
- {
- prem_avail_count: [ 2, 2 ],
- prev_called: true,
- expected_request: false,
- request_err: null,
- save: false,
- },
- ].forEach( ( expected, i ) =>
- it( `sends request on post process if no premiums (#${i})`, done =>
- {
- const {
- dao,
- logger,
- quote,
- raters,
- request,
- response,
- server,
- stub_rate_data,
- } = RatingServiceStub.getStubs();
-
- const quote_id = 1234;
- let requested = false;
-
- const dapif = given_request =>
- Class.implement( DataApi ).extend(
- {
- // warning: if an expectation fails, because of how
- // RatingService handles errors, it will cause the test to
- // _hang_ rather than throw the assertion error
- request( data, callback, id )
- {
- expect( given_request ).to.equal( request );
- expect( data ).to.deep.equal( { quote_id: quote_id } );
-
- requested = true;
-
- callback( expected.request_err, null );
- },
- } )();
-
- const sut = RatingService.use( Sut( dapif, dao ) )(
- logger, dao, server, raters
- );
-
- quote.getId = () => quote_id;
-
- // one of the methods that is called by the supertype
- let save_called = false;
- dao.setWorksheets = () => save_called = true;
-
- // whether the notify flag is actually set
- let notify_saved = false;
-
- // request for notification status
- dao.getDocumentField = ( qid, key, callback ) =>
- {
- expect( qid ).to.equal( quote_id );
- expect( key ).to.equal( 'submitNotified' );
-
- callback( expected.flag_error, expected.prev_called );
- };
-
- dao.setDocumentField = ( qid, key, value, callback ) =>
- {
- expect( qid ).to.equal( quote_id );
- expect( key ).to.equal( 'submitNotified' );
- expect( value ).to.equal( true );
-
- notify_saved = true;
- };
-
- stub_rate_data.__prem_avail_count = expected.prem_avail_count;
-
- sut.request( request, response, quote, 'something', () =>
- {
- expect( requested ).to.equal( expected.expected_request );
- expect( save_called ).to.be.true;
-
- // only save notification status if we're notifying
- expect( notify_saved ).to.equal( expected.save );
-
- done();
- } );
- } )
- );
-} );