From 2c0bf764d1cb8cef86227f280622844a4dade8f8 Mon Sep 17 00:00:00 2001 From: Joseph Frazer Date: Wed, 15 Aug 2018 14:06:07 -0400 Subject: [PATCH] [DEV-3393] Add more metadata to the init endpoint --- src/client/quote/ClientQuote.js | 28 +++++++++ src/quote/BaseQuote.js | 61 ++++++++++++++++++++ src/server/Server.js | 5 ++ test/client/quote/ClientQuoteTest.js | 86 ++++++++++++++++++++++++++++ test/quote/BaseQuoteTest.js | 65 +++++++++++++++++++++ 5 files changed, 245 insertions(+) create mode 100644 test/client/quote/ClientQuoteTest.js create mode 100644 test/quote/BaseQuoteTest.js diff --git a/src/client/quote/ClientQuote.js b/src/client/quote/ClientQuote.js index cc44889..acdcfb0 100644 --- a/src/client/quote/ClientQuote.js +++ b/src/client/quote/ClientQuote.js @@ -135,6 +135,10 @@ module.exports = Class( 'ClientQuote' ) .setCurrentStepId( data.currentStepId || 0 ) .setTopVisitedStepId( data.topVisitedStepId || 0 ) .setAgentId( data.agentId || 0 ) + .setAgentName( data.agentName || "" ) + .setAgentEntityId( data.agentEntityId || "" ) + .setStartDate( data.startDate || 0 ) + .setInitialRatedDate( data.initialRatedDate || 0 ) .setImported( data.imported || false ) .setBound( data.bound || false ) .needsImport( data.needsImport || false ) @@ -553,6 +557,14 @@ module.exports = Class( 'ClientQuote' ) 'public proxy getStartDate': '_quote', + /** + * Returns the quote's initial rated date + * + * @return {number} quote's initial rated date + */ + 'public proxy getInitialRatedDate': '_quote', + + /** * Returns the id of the agent that owns the quote * @@ -561,6 +573,22 @@ module.exports = Class( 'ClientQuote' ) 'public proxy getAgentId': '_quote', + /** + * Returns the name of the agent that owns the quote + * + * @return {string} agent name + */ + 'public proxy getAgentName': '_quote', + + + /** + * Returns the entity id of the agent that owns the quote + * + * @return {string} agent entity id + */ + 'public proxy getAgentEntityId': '_quote', + + /** * Returns whether the quote has been imported * diff --git a/src/quote/BaseQuote.js b/src/quote/BaseQuote.js index c44eece..8b146c6 100644 --- a/src/quote/BaseQuote.js +++ b/src/quote/BaseQuote.js @@ -80,12 +80,24 @@ module.exports = Class( 'BaseQuote' ) */ 'private _startDate': 0, + /** + * Date (UNIX timestamp) that the quote was initially rated + * @type {number} + */ + 'private _initialRatedDate': 0, + /** * Id of agent that owns the quote * @type {number} */ 'private _agentId': 0, + /** + * Id of agent entity that owns the quote + * @type {string} + */ + 'private _agentEntityId': '', + /** * Agency name * @type {string} @@ -235,6 +247,30 @@ module.exports = Class( 'BaseQuote' ) }, + /** + * Sets the quote's initial rated date + * + * @param {number} time initial rated date as a UNIX timestamp + * + * @return {Quote} self + */ + 'public setInitialRatedDate': function( time ) + { + this._initialRatedDate = +( time ); + return this; + }, + + /** + * Returns the quote's initial rated date + * + * @return {number} quote's initial rated date + */ + 'public getInitialRatedDate': function() + { + return this._initialRatedDate; + }, + + /** * Sets id of agent that owns the quote * @@ -260,6 +296,31 @@ module.exports = Class( 'BaseQuote' ) }, + /** + * Sets id of agent entity that owns the quote + * + * @param {string} id agent id + * + * @return {Quote} self + */ + 'public setAgentEntityId': function( id ) + { + this._agentEntityId = ''+( id ); + return this; + }, + + + /** + * Returns the id of the agent entity that owns the quote + * + * @return {string} agent entity id + */ + 'public getAgentEntityId': function() + { + return this._agentEntityId; + }, + + /** * Sets name of agent that owns the quote * diff --git a/src/server/Server.js b/src/server/Server.js index de66a8c..9c3536e 100644 --- a/src/server/Server.js +++ b/src/server/Server.js @@ -326,6 +326,8 @@ module.exports = Class( 'Server' ) .setQuickSaveData( quote_data.quicksave || {} ) .setAgentId( quote_data.agentId || agent_id ) .setAgentName( quote_data.agentName || agent_name ) + .setAgentEntityId( data.agentEntityId || "" ) + .setInitialRatedDate( data.initialRatedDate || 0 ) .setStartDate( quote_data.getStartDate || Math.round( new Date().getTime() / 1000 ) @@ -739,6 +741,9 @@ module.exports = Class( 'Server' ) explicitLockStepId: lock_step, agentId: quote.getAgentId(), agentName: quote.getAgentName(), + agentEntityId: quote.getAgentEntityId(), + startDate: quote.getStartDate(), + initialRatedDate: quote.getInitialRatedDate(), quicksave: quote.getQuickSaveData(), diff --git a/test/client/quote/ClientQuoteTest.js b/test/client/quote/ClientQuoteTest.js new file mode 100644 index 0000000..1c8f308 --- /dev/null +++ b/test/client/quote/ClientQuoteTest.js @@ -0,0 +1,86 @@ +/** + * Tests ClientQuote + * + * Copyright (C) 2017 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 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 chai = require( 'chai' ); +const expect = chai.expect; +const { BaseQuote } = require( '../../../' ).quote; +const { ClientQuote } = require( '../../../' ).client.quote; +const { QuoteDataBucket } = require( '../../../' ).bucket; + +chai.use( require( 'chai-as-promised' ) ); + +describe( 'ClientQuote', () => +{ + const baseQuote = BaseQuote( 123, QuoteDataBucket() ), + startDate = 12345, + agentId = 90000, + agentName = 'John Doe', + agentEntityId = '12434300', + initialRatedDate = 1531507748, + quote = ClientQuote( + baseQuote, + { + startDate: startDate, + agentId: agentId, + agentName: agentName, + agentEntityId: agentEntityId, + initialRatedDate: initialRatedDate, + }, + bucket => bucket + ); + + it( 'constructor', () => + { + expect( quote ).to.be.an.instanceof( ClientQuote ); + } ); + + it( 'getStartDate proxy', () => + { + expect( quote.getStartDate ).to.not.be.undefined; + expect( quote.getStartDate() ).to.equal( startDate ); + } ); + + it( 'getAgentId proxy', () => + { + expect( quote.getAgentId ).to.not.be.undefined; + expect( quote.getAgentId() ).to.equal( agentId ); + } ); + + it( 'getAgentName proxy', () => + { + expect( quote.getAgentName ).to.not.be.undefined; + expect( quote.getAgentName() ).to.equal( agentName ); + } ); + + it( 'getAgentEntityId proxy', () => + { + expect( quote.getAgentEntityId ).to.not.be.undefined; + expect( quote.getAgentEntityId() ).to.equal( agentEntityId ); + } ); + + it( 'getInitialRatedDate proxy', () => + { + expect( quote.getInitialRatedDate ).to.not.be.undefined; + expect( quote.getInitialRatedDate() ).to.equal( initialRatedDate ); + } ); +} ); diff --git a/test/quote/BaseQuoteTest.js b/test/quote/BaseQuoteTest.js new file mode 100644 index 0000000..746cbd7 --- /dev/null +++ b/test/quote/BaseQuoteTest.js @@ -0,0 +1,65 @@ +/** + * Tests BaseQuote + * + * Copyright (C) 2017 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 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 chai = require( 'chai' ); +const expect = chai.expect; +const { BaseQuote } = require( '../../' ).quote; + +chai.use( require( 'chai-as-promised' ) ); + +describe( 'BaseQuote', () => +{ + [ + { + property: 'startDate', + value: 12345 + }, + { + property: 'initialRatedDate', + value: 12345 + }, + { + property: 'agentEntityId', + value: 'AGT5432' + }, + ].forEach( testCase => + { + const quote = BaseQuote( 123, {} ), + property = testCase.property, + titleCased = property.charAt( 0 ).toUpperCase() + property.slice( 1 ), + setter = 'set' + titleCased, + getter = 'get' + titleCased; + + it( property, () => + { + expect( quote ).to.be.an.instanceof( BaseQuote ); + + expect( quote[setter] ).to.not.be.undefined; + expect( quote[getter] ).to.not.be.undefined; + expect( quote[getter].call( null ) ).to.be.undefined; + + quote[setter].call( null, testCase.value ); + expect( quote[getter].call( null ) ).to.equal( testCase.value ); + } ); + } ); +} );