Skip to content

Instantly share code, notes, and snippets.

@KTruong008
Created July 29, 2016 17:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KTruong008/21cd2d45ac32edd5daf5d1970d3eae6b to your computer and use it in GitHub Desktop.
Save KTruong008/21cd2d45ac32edd5daf5d1970d3eae6b to your computer and use it in GitHub Desktop.
import mock
import datetime
import time
from random import randint
from dateutil.relativedelta import relativedelta
from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse
from carrier.tenant_carrier.models import Carrier
from iris.conf import config
from fortus.constants import PROVINCE_CODE
from lob.auto.apps.quote.services import lead_sale_unlock_get, lead_sale_unlock_submit
from lob.base.constants import LINE_OF_BUSINESS
from pivotal.models import Lead, LEAD_STEPS
from quote.models import Quote, QuoteContact, QuoteCarriers, QuoteInfo, QuoteIteration, ReturnQuote
from quote.services import QuoteList
from registrar.models import LeadSaleLog
from tenant.models import Tenant
from tests.quote.services import LeadWrapper, split_time, get_current_caps
from tests.erebus.testcases import CarrierTestCase
from freezegun import freeze_time
class TestLeadDistribution(CarrierTestCase):
all_carriers = True
cycle_affiliate = True
for_tenant = "lowestrates"
def setUp(self):
super(TestLeadDistribution, self).setUp()
User = get_user_model()
self.user = User(
username="test_user",
is_active=True,
)
self.user.save()
login = self.client.login(username=self.user.username)
self.assertTrue(login)
resp = self.client.get(reverse('kickout'))
self.session = self.client.session
self.session.update({'auto:current_step': 4.01,
'last_view': 'get-started',
'current_lob': 'auto',
'auto:farthest_step': 3})
self.session.save()
def make_return_quotes(self, server_date, carrier, quote):
quote_iteration = QuoteIteration.objects.create()
quote_iteration.save()
for c in Carrier.objects.all():
prem = 100 if c.code == carrier else 1000
rank = 1 if c.code == carrier else 2
return_quote = ReturnQuote.objects.create(
carrier=c.code,
iteration=quote_iteration,
policy_premium=prem,
quote=quote,
rank=rank,
)
return_quote.save()
def make_lead_extras(self, server_date, carrier, province='ON', converted=True):
quote_info = QuoteInfo.objects.create(
eff_date=server_date,
)
quote = Quote.objects.create(
eff_date=server_date,
quote_info=quote_info,
line_of_business=LINE_OF_BUSINESS.auto,
province=province,
unlocked=converted,
)
quote_contact = QuoteContact.objects.create(
quote=quote,
first_name='test_first',
last_name='test_last',
date_of_birth=datetime.datetime.today() - relativedelta(years=50)
)
self.make_return_quotes(server_date, carrier, quote)
return_quotes = ReturnQuote.objects.all()
quote_info.save()
quote.save()
quote_contact.save()
return quote, return_quotes
def _make_lead(self, server_time, carrier, created=None,
converted=True, server_date=None, province='ON'):
if not created:
created = datetime.datetime.now()
if server_date == None:
server_date = datetime.date.today()
quote, return_quotes = self.make_lead_extras(server_date, carrier, converted=converted, province=province)
lead = Lead.objects.create(
created=created,
converted=converted,
converted_on=server_time,
lead_step=Lead.STEPS.step4,
lead_highest_step=Lead.STEPS.step4,
line_of_business='auto',
question_version='0.0.1',
quote_id=quote.pk,
rule_version='0.0.1',
)
lead_log = LeadSaleLog(
for_lead = lead,
)
lead.latest_lead_sale_log = lead_log
lead_log.save()
lead.save()
lead = LeadWrapper(lead)
return lead, quote, return_quotes
def make_lead(self, server_time, carrier, converted=True, province='ON', server_date=None):
if server_date == None:
server_date = datetime.date.today()
server_time = split_time(server_time)
with freeze_time(server_time, tick=True):
# ReturnQuote.objects.all().delete()
lead, quote, return_quotes = self._make_lead(server_time, carrier, converted=converted, province=province, server_date=server_date)
results_get = lead_sale_unlock_get(return_quotes, quote, lead.lead)
lead.lead.assigned_brokerage = results_get.get('assigned_brokerage')
lead.lead.save()
results_get['lead'] = lead
results_get['quote'] = quote
return results_get
# Hourly cap test for ihs, southland, westland
# If these have changed, tests will need to be adjusted accordingly
# 3 IHS
# 8 SCIS
# 1 Westland
# def test_verify_hourly_cap_numbers_for_brokerages_have_not_changed(self):
# ihs_caps = get_current_caps().get('ihs').get('HOURLY_CAPS').get('9')
# self.assertEquals(ihs_caps, '3')
#
# smartcov_caps = get_current_caps().get('smartcov').get('HOURLY_CAPS').get('9')
# self.assertEquals(smartcov_caps, '8')
#
# westland_caps = get_current_caps().get('westland').get('HOURLY_CAPS').get('9')
# self.assertEquals(westland_caps, '1')
# TEST Auto ON hourly cap and reset for IHS
# all quotes after IHS cap should be DRISI
# each new hour should reset the cap
# each hour tests a different enabled carrier for Auto ON
def test_ihs_hourly_caps_reset_all_carriers(self):
# Aviva
lead1 = self.make_lead('9:01', 'GA')
lead2 = self.make_lead('9:02', 'GA')
lead3 = self.make_lead('9:03', 'GA')
lead4 = self.make_lead('9:04', 'GA')
lead5 = self.make_lead('9:05', 'GA')
lead6 = self.make_lead('9:06', 'GA')
lead7 = self.make_lead('9:07', 'GA')
lead8 = self.make_lead('9:08', 'GA')
lead9 = self.make_lead('9:09', 'GA')
lead10 = self.make_lead('9:10', 'GA')
self.assertEquals(lead1.get('lead_destination'), 'drisi')
self.assertEquals(lead2.get('lead_destination'), 'ihs')
self.assertEquals(lead3.get('lead_destination'), 'drisi')
self.assertEquals(lead4.get('lead_destination'), 'ihs')
self.assertEquals(lead5.get('lead_destination'), 'drisi')
self.assertEquals(lead6.get('lead_destination'), 'ihs')
self.assertEquals(lead7.get('lead_destination'), 'drisi')
self.assertEquals(lead8.get('lead_destination'), 'drisi')
self.assertEquals(lead9.get('lead_destination'), 'drisi')
self.assertEquals(lead10.get('lead_destination'), 'drisi')
self.assertEquals({
'ihs': '3',
'drisi': '7',
'smartcov': '0',
}, get_current_caps().get('9'))
self.assertFalse(get_current_caps().get('10'))
# Economical
lead11 = self.make_lead('10:01', 'ECON')
lead12 = self.make_lead('10:02', 'ECON')
lead13 = self.make_lead('10:03', 'ECON')
lead14 = self.make_lead('10:04', 'ECON')
lead15 = self.make_lead('10:05', 'ECON')
lead16 = self.make_lead('10:06', 'ECON')
lead17 = self.make_lead('10:07', 'ECON')
lead18 = self.make_lead('10:08', 'ECON')
lead19 = self.make_lead('10:09', 'ECON')
lead20 = self.make_lead('10:10', 'ECON')
self.assertEquals(lead11.get('lead_destination'), 'ihs')
self.assertEquals(lead12.get('lead_destination'), 'drisi')
self.assertEquals(lead13.get('lead_destination'), 'ihs')
self.assertEquals(lead14.get('lead_destination'), 'drisi')
self.assertEquals(lead15.get('lead_destination'), 'ihs')
self.assertEquals(lead16.get('lead_destination'), 'drisi')
self.assertEquals(lead17.get('lead_destination'), 'drisi')
self.assertEquals(lead18.get('lead_destination'), 'drisi')
self.assertEquals(lead19.get('lead_destination'), 'drisi')
self.assertEquals(lead20.get('lead_destination'), 'drisi')
self.assertEquals({
'ihs': '3',
'drisi': '7',
'smartcov': '0',
}, get_current_caps().get('10'))
self.assertFalse(get_current_caps().get('11'))
# Pafco
lead21 = self.make_lead('11:01', 'PAF')
lead22 = self.make_lead('11:02', 'PAF')
lead23 = self.make_lead('11:03', 'PAF')
lead24 = self.make_lead('11:04', 'PAF')
lead25 = self.make_lead('11:05', 'PAF')
lead26 = self.make_lead('11:06', 'PAF')
lead27 = self.make_lead('11:07', 'PAF')
lead28 = self.make_lead('11:08', 'PAF')
lead29 = self.make_lead('11:09', 'PAF')
lead30 = self.make_lead('11:10', 'PAF')
self.assertEquals(lead21.get('lead_destination'), 'ihs')
self.assertEquals(lead22.get('lead_destination'), 'drisi')
self.assertEquals(lead23.get('lead_destination'), 'ihs')
self.assertEquals(lead24.get('lead_destination'), 'drisi')
self.assertEquals(lead25.get('lead_destination'), 'ihs')
self.assertEquals(lead26.get('lead_destination'), 'drisi')
self.assertEquals(lead27.get('lead_destination'), 'drisi')
self.assertEquals(lead28.get('lead_destination'), 'drisi')
self.assertEquals(lead29.get('lead_destination'), 'drisi')
self.assertEquals(lead30.get('lead_destination'), 'drisi')
self.assertEquals({
'ihs': '3',
'drisi': '7',
'smartcov': '0',
}, get_current_caps().get('11'))
self.assertFalse(get_current_caps().get('12'))
# Pembridge
lead31 = self.make_lead('12:01', 'PEM')
lead32 = self.make_lead('12:02', 'PEM')
lead33 = self.make_lead('12:03', 'PEM')
lead34 = self.make_lead('12:04', 'PEM')
lead35 = self.make_lead('12:05', 'PEM')
lead36 = self.make_lead('12:06', 'PEM')
lead37 = self.make_lead('12:07', 'PEM')
lead38 = self.make_lead('12:08', 'PEM')
lead39 = self.make_lead('12:09', 'PEM')
lead40 = self.make_lead('12:10', 'PEM')
self.assertEquals(lead31.get('lead_destination'), 'ihs')
self.assertEquals(lead32.get('lead_destination'), 'drisi')
self.assertEquals(lead33.get('lead_destination'), 'ihs')
self.assertEquals(lead34.get('lead_destination'), 'drisi')
self.assertEquals(lead35.get('lead_destination'), 'ihs')
self.assertEquals(lead36.get('lead_destination'), 'drisi')
self.assertEquals(lead37.get('lead_destination'), 'drisi')
self.assertEquals(lead38.get('lead_destination'), 'drisi')
self.assertEquals(lead39.get('lead_destination'), 'drisi')
self.assertEquals(lead40.get('lead_destination'), 'drisi')
self.assertEquals({
'ihs': '3',
'drisi': '7',
'smartcov': '0',
}, get_current_caps().get('12'))
self.assertFalse(get_current_caps().get('13'))
# Royal & Sun Alliance
lead41 = self.make_lead('13:01', 'ROY')
lead42 = self.make_lead('13:02', 'ROY')
lead43 = self.make_lead('13:03', 'ROY')
lead44 = self.make_lead('13:04', 'ROY')
lead45 = self.make_lead('13:05', 'ROY')
lead46 = self.make_lead('13:06', 'ROY')
lead47 = self.make_lead('13:07', 'ROY')
lead48 = self.make_lead('13:08', 'ROY')
lead49 = self.make_lead('13:09', 'ROY')
lead50 = self.make_lead('13:10', 'ROY')
self.assertEquals(lead41.get('lead_destination'), 'ihs')
self.assertEquals(lead42.get('lead_destination'), 'drisi')
self.assertEquals(lead43.get('lead_destination'), 'ihs')
self.assertEquals(lead44.get('lead_destination'), 'drisi')
self.assertEquals(lead45.get('lead_destination'), 'ihs')
self.assertEquals(lead46.get('lead_destination'), 'drisi')
self.assertEquals(lead47.get('lead_destination'), 'drisi')
self.assertEquals(lead48.get('lead_destination'), 'drisi')
self.assertEquals(lead49.get('lead_destination'), 'drisi')
self.assertEquals(lead50.get('lead_destination'), 'drisi')
self.assertEquals({
'ihs': '3',
'drisi': '7',
'smartcov': '0',
}, get_current_caps().get('13'))
self.assertFalse(get_current_caps().get('14'))
# Zenith
lead51 = self.make_lead('14:01', 'ZENI')
lead52 = self.make_lead('14:02', 'ZENI')
lead53 = self.make_lead('14:03', 'ZENI')
lead54 = self.make_lead('14:04', 'ZENI')
lead55 = self.make_lead('14:05', 'ZENI')
lead56 = self.make_lead('14:06', 'ZENI')
lead57 = self.make_lead('14:07', 'ZENI')
lead58 = self.make_lead('14:08', 'ZENI')
lead59 = self.make_lead('14:09', 'ZENI')
lead60 = self.make_lead('14:10', 'ZENI')
self.assertEquals(lead51.get('lead_destination'), 'ihs')
self.assertEquals(lead52.get('lead_destination'), 'drisi')
self.assertEquals(lead53.get('lead_destination'), 'ihs')
self.assertEquals(lead54.get('lead_destination'), 'drisi')
self.assertEquals(lead55.get('lead_destination'), 'ihs')
self.assertEquals(lead56.get('lead_destination'), 'drisi')
self.assertEquals(lead57.get('lead_destination'), 'drisi')
self.assertEquals(lead58.get('lead_destination'), 'drisi')
self.assertEquals(lead59.get('lead_destination'), 'drisi')
self.assertEquals(lead60.get('lead_destination'), 'drisi')
self.assertEquals({
'ihs': '3',
'drisi': '7',
'smartcov': '0',
}, get_current_caps().get('14'))
self.assertFalse(get_current_caps().get('15'))
# TEST Auto ON hourly cap and reset for IHS
# all quotes after IHS cap should be DRISI
# each new hour should reset the cap
# each hour tests a random set of enabled carriers for Auto ON
def test_ihs_hourly_caps_reset_all_carriers_random_per_hour(self):
# Hour 1
lead1 = self.make_lead('9:01', 'GA')
lead2 = self.make_lead('9:02', 'ECON')
lead3 = self.make_lead('9:03', 'PAF')
lead4 = self.make_lead('9:04', 'PEM')
lead5 = self.make_lead('9:05', 'ROY')
lead6 = self.make_lead('9:06', 'ZENI')
lead7 = self.make_lead('9:07', 'GA')
lead8 = self.make_lead('9:08', 'ECON')
lead9 = self.make_lead('9:09', 'PAF')
lead10 = self.make_lead('9:10', 'PEM')
self.assertEquals(lead1.get('lead_destination'), 'drisi')
self.assertEquals(lead2.get('lead_destination'), 'ihs')
self.assertEquals(lead3.get('lead_destination'), 'drisi')
self.assertEquals(lead4.get('lead_destination'), 'ihs')
self.assertEquals(lead5.get('lead_destination'), 'drisi')
self.assertEquals(lead6.get('lead_destination'), 'ihs')
self.assertEquals(lead7.get('lead_destination'), 'drisi')
self.assertEquals(lead8.get('lead_destination'), 'drisi')
self.assertEquals(lead9.get('lead_destination'), 'drisi')
self.assertEquals(lead10.get('lead_destination'), 'drisi')
self.assertEquals({
'ihs': '3',
'drisi': '7',
'smartcov': '0',
}, get_current_caps().get('9'))
self.assertFalse(get_current_caps().get('10'))
# Hour 2
lead11 = self.make_lead('10:01', 'ZENI')
lead12 = self.make_lead('10:02', 'ECON')
lead13 = self.make_lead('10:03', 'GA')
lead14 = self.make_lead('10:04', 'PEM')
lead15 = self.make_lead('10:05', 'ROY')
lead16 = self.make_lead('10:06', 'PAF')
lead17 = self.make_lead('10:07', 'ECON')
lead18 = self.make_lead('10:08', 'PAF')
lead19 = self.make_lead('10:09', 'GA')
lead20 = self.make_lead('10:10', 'ZENI')
self.assertEquals(lead11.get('lead_destination'), 'ihs')
self.assertEquals(lead12.get('lead_destination'), 'drisi')
self.assertEquals(lead13.get('lead_destination'), 'ihs')
self.assertEquals(lead14.get('lead_destination'), 'drisi')
self.assertEquals(lead15.get('lead_destination'), 'ihs')
self.assertEquals(lead16.get('lead_destination'), 'drisi')
self.assertEquals(lead17.get('lead_destination'), 'drisi')
self.assertEquals(lead18.get('lead_destination'), 'drisi')
self.assertEquals(lead19.get('lead_destination'), 'drisi')
self.assertEquals(lead20.get('lead_destination'), 'drisi')
self.assertEquals({
'ihs': '3',
'drisi': '7',
'smartcov': '0',
}, get_current_caps().get('10'))
self.assertFalse(get_current_caps().get('11'))
# Hour 3
lead21 = self.make_lead('11:01', 'PAF')
lead22 = self.make_lead('11:02', 'GA')
lead23 = self.make_lead('11:03', 'ZENI')
lead24 = self.make_lead('11:04', 'ECON')
lead25 = self.make_lead('11:05', 'PEM')
lead26 = self.make_lead('11:06', 'ROY')
lead27 = self.make_lead('11:07', 'ECON')
lead28 = self.make_lead('11:08', 'ZENI')
lead29 = self.make_lead('11:09', 'GA')
lead30 = self.make_lead('11:10', 'PAF')
self.assertEquals(lead21.get('lead_destination'), 'ihs')
self.assertEquals(lead22.get('lead_destination'), 'drisi')
self.assertEquals(lead23.get('lead_destination'), 'ihs')
self.assertEquals(lead24.get('lead_destination'), 'drisi')
self.assertEquals(lead25.get('lead_destination'), 'ihs')
self.assertEquals(lead26.get('lead_destination'), 'drisi')
self.assertEquals(lead27.get('lead_destination'), 'drisi')
self.assertEquals(lead28.get('lead_destination'), 'drisi')
self.assertEquals(lead29.get('lead_destination'), 'drisi')
self.assertEquals(lead30.get('lead_destination'), 'drisi')
self.assertEquals({
'ihs': '3',
'drisi': '7',
'smartcov': '0',
}, get_current_caps().get('11'))
self.assertFalse(get_current_caps().get('12'))
# TEST Auto ON hourly cap and reset for SCIS
# Only carrier tested is Scottish and York as it's the only available carrier for SCIS
# all quotes after cap should be DRISI or IHS because SCIS is capped and Scottish is removed from list
def test_scis_hourly_caps_reset_all_carriers(self):
lead1 = self.make_lead('9:01', 'SR')
lead2 = self.make_lead('9:02', 'SR')
lead3 = self.make_lead('9:03', 'SR')
lead4 = self.make_lead('9:04', 'SR')
lead5 = self.make_lead('9:05', 'SR')
lead6 = self.make_lead('9:06', 'SR')
lead7 = self.make_lead('9:07', 'SR')
lead8 = self.make_lead('9:08', 'SR')
lead9 = self.make_lead('9:09', 'SR')
lead10 = self.make_lead('9:10', 'GA')
self.assertEquals(lead1.get('lead_destination'), 'smartcov')
self.assertEquals(lead2.get('lead_destination'), 'smartcov')
self.assertEquals(lead3.get('lead_destination'), 'smartcov')
self.assertEquals(lead4.get('lead_destination'), 'smartcov')
self.assertEquals(lead5.get('lead_destination'), 'smartcov')
self.assertEquals(lead6.get('lead_destination'), 'smartcov')
self.assertEquals(lead7.get('lead_destination'), 'smartcov')
self.assertEquals(lead8.get('lead_destination'), 'smartcov')
self.assertEquals(lead9.get('lead_destination'), 'drisi')
self.assertEquals(lead10.get('lead_destination'), 'ihs')
self.assertEquals({
'ihs': '1',
'drisi': '1',
'smartcov': '8',
}, get_current_caps().get('9'))
self.assertFalse(get_current_caps().get('10'))
lead11 = self.make_lead('10:01', 'SR')
lead12 = self.make_lead('10:02', 'SR')
lead13 = self.make_lead('10:03', 'SR')
lead14 = self.make_lead('10:04', 'SR')
lead15 = self.make_lead('10:05', 'SR')
lead16 = self.make_lead('10:06', 'SR')
lead17 = self.make_lead('10:07', 'SR')
lead18 = self.make_lead('10:08', 'SR')
lead19 = self.make_lead('10:09', 'SR')
lead20 = self.make_lead('10:10', 'GA')
self.assertEquals(lead11.get('lead_destination'), 'smartcov')
self.assertEquals(lead12.get('lead_destination'), 'smartcov')
self.assertEquals(lead13.get('lead_destination'), 'smartcov')
self.assertEquals(lead14.get('lead_destination'), 'smartcov')
self.assertEquals(lead15.get('lead_destination'), 'smartcov')
self.assertEquals(lead16.get('lead_destination'), 'smartcov')
self.assertEquals(lead17.get('lead_destination'), 'smartcov')
self.assertEquals(lead18.get('lead_destination'), 'smartcov')
self.assertEquals(lead19.get('lead_destination'), 'drisi')
self.assertEquals(lead20.get('lead_destination'), 'ihs')
self.assertEquals({
'ihs': '1',
'drisi': '1',
'smartcov': '8',
}, get_current_caps().get('10'))
self.assertFalse(get_current_caps().get('11'))
# TEST Auto AB hourly cap and reset
# all quotes after westland cap should be surex
# each new hour should reset the cap
# each hour tests a different enabled carrier for Auto AB
def test_westland_hourly_caps_reset_all_carriers(self):
# Aviva
lead1 = self.make_lead('9:01', 'GA', province='AB')
lead2 = self.make_lead('9:02', 'GA', province='AB')
lead3 = self.make_lead('9:03', 'GA', province='AB')
lead4 = self.make_lead('9:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('9'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('10'))
# Dominion
lead5 = self.make_lead('10:01', 'DOC', province='AB')
lead6 = self.make_lead('10:02', 'DOC', province='AB')
lead7 = self.make_lead('10:03', 'DOC', province='AB')
lead8 = self.make_lead('10:04', 'DOC', province='AB')
self.assertEquals(lead5.get('lead_destination'), 'westland')
self.assertEquals(lead6.get('lead_destination'), 'surex')
self.assertEquals(lead7.get('lead_destination'), 'surex')
self.assertEquals(lead8.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('10'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('11'))
# Economical
lead9 = self.make_lead('11:01', 'ECON', province='AB')
lead10 = self.make_lead('11:02', 'ECON', province='AB')
lead11 = self.make_lead('11:03', 'ECON', province='AB')
lead12 = self.make_lead('11:04', 'ECON', province='AB')
self.assertEquals(lead9.get('lead_destination'), 'surex')
self.assertEquals(lead10.get('lead_destination'), 'surex')
self.assertEquals(lead11.get('lead_destination'), 'surex')
self.assertEquals(lead12.get('lead_destination'), 'westland')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('11'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('12'))
# Intact
lead13 = self.make_lead('12:01', 'WU', province='AB')
lead14 = self.make_lead('12:02', 'WU', province='AB')
lead15 = self.make_lead('12:03', 'WU', province='AB')
lead16 = self.make_lead('12:04', 'WU', province='AB')
self.assertEquals(lead13.get('lead_destination'), 'westland')
self.assertEquals(lead14.get('lead_destination'), 'surex')
self.assertEquals(lead15.get('lead_destination'), 'surex')
self.assertEquals(lead16.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('12'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('13'))
# Peace Hills
lead17 = self.make_lead('13:01', 'PEA', province='AB')
lead18 = self.make_lead('13:02', 'PEA', province='AB')
lead19 = self.make_lead('13:03', 'PEA', province='AB')
lead20 = self.make_lead('13:04', 'PEA', province='AB')
self.assertEquals(lead17.get('lead_destination'), 'westland')
self.assertEquals(lead18.get('lead_destination'), 'surex')
self.assertEquals(lead19.get('lead_destination'), 'surex')
self.assertEquals(lead20.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('13'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('14'))
# Royal & Sun Alliance
lead21 = self.make_lead('14:01', 'ROY', province='AB')
lead22 = self.make_lead('14:02', 'ROY', province='AB')
lead23 = self.make_lead('14:03', 'ROY', province='AB')
lead24 = self.make_lead('14:04', 'ROY', province='AB')
self.assertEquals(lead21.get('lead_destination'), 'westland')
self.assertEquals(lead22.get('lead_destination'), 'surex')
self.assertEquals(lead23.get('lead_destination'), 'surex')
self.assertEquals(lead24.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('14'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('15'))
# SGI Canada
lead25 = self.make_lead('15:01', 'SGI', province='AB')
lead26 = self.make_lead('15:02', 'SGI', province='AB')
lead27 = self.make_lead('15:03', 'SGI', province='AB')
lead28 = self.make_lead('15:04', 'SGI', province='AB')
self.assertEquals(lead25.get('lead_destination'), 'westland')
self.assertEquals(lead26.get('lead_destination'), 'surex')
self.assertEquals(lead27.get('lead_destination'), 'surex')
self.assertEquals(lead28.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('15'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('16'))
# Wawnesa
lead29 = self.make_lead('16:01', 'WAWA', province='AB')
lead30 = self.make_lead('16:02', 'WAWA', province='AB')
lead31 = self.make_lead('16:03', 'WAWA', province='AB')
lead32 = self.make_lead('16:04', 'WAWA', province='AB')
self.assertEquals(lead29.get('lead_destination'), 'westland')
self.assertEquals(lead30.get('lead_destination'), 'surex')
self.assertEquals(lead31.get('lead_destination'), 'surex')
self.assertEquals(lead32.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('16'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('17'))
# TEST Auto AB hourly cap and reset
# all quotes after westland cap should be surex
# each new hour should reset the cap
# each hour tests a different enabled carrier for Auto AB
def test_westland_hourly_caps_reset_all_carriers_random_per_hour(self):
# Hour 1
lead1 = self.make_lead('9:01', 'GA', province='AB')
lead2 = self.make_lead('9:02', 'DOC', province='AB')
lead3 = self.make_lead('9:03', 'ECON', province='AB')
lead4 = self.make_lead('9:04', 'WU', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('9'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('10'))
# Hour 2
lead5 = self.make_lead('10:01', 'PEA', province='AB')
lead6 = self.make_lead('10:02', 'ROY', province='AB')
lead7 = self.make_lead('10:03', 'SGI', province='AB')
lead8 = self.make_lead('10:04', 'WAWA', province='AB')
self.assertEquals(lead5.get('lead_destination'), 'westland')
self.assertEquals(lead6.get('lead_destination'), 'surex')
self.assertEquals(lead7.get('lead_destination'), 'surex')
self.assertEquals(lead8.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('10'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('11'))
# Hour 3
lead9 = self.make_lead('11:01', 'ROY', province='AB')
lead10 = self.make_lead('11:02', 'SGI', province='AB')
lead11 = self.make_lead('11:03', 'WAWA', province='AB')
lead12 = self.make_lead('11:04', 'ECON', province='AB')
self.assertEquals(lead9.get('lead_destination'), 'surex')
self.assertEquals(lead10.get('lead_destination'), 'surex')
self.assertEquals(lead11.get('lead_destination'), 'surex')
self.assertEquals(lead12.get('lead_destination'), 'westland')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('11'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('12'))
# Hour 4
lead13 = self.make_lead('12:01', 'DOC', province='AB')
lead14 = self.make_lead('12:02', 'WU', province='AB')
lead15 = self.make_lead('12:03', 'GA', province='AB')
lead16 = self.make_lead('12:04', 'PEA', province='AB')
self.assertEquals(lead13.get('lead_destination'), 'westland')
self.assertEquals(lead14.get('lead_destination'), 'surex')
self.assertEquals(lead15.get('lead_destination'), 'surex')
self.assertEquals(lead16.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('12'))
self.assertEquals({
'surex': '0',
'westland': '0',
}, get_current_caps().get('13'))
# TEST Auto AB Westland custom hourly cap numbers
# Test times listed are in UTC, Westland is in MT
# MT 09:00 - 23:00
# UTC 15:00 - 05:00
# 0:1, 1:1, 2:1, 3:1, 4:1, 5:1, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0,
# 13:0, 14:0, 15:1, 16:1, 17:1, 18:1, 19:1, 20:1, 21:1, 22:1, 23:1
# all quotes within approved hours follow round robin rules
# all quotes outside of approved hours should go to surex only
def test_westland_custom_caps_hour_0(self):
lead1 = self.make_lead('0:01', 'GA', province='AB')
lead2 = self.make_lead('0:02', 'GA', province='AB')
lead3 = self.make_lead('0:03', 'GA', province='AB')
lead4 = self.make_lead('0:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('0'))
def test_westland_custom_caps_hour_1(self):
lead1 = self.make_lead('1:01', 'GA', province='AB')
lead2 = self.make_lead('1:02', 'GA', province='AB')
lead3 = self.make_lead('1:03', 'GA', province='AB')
lead4 = self.make_lead('1:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('1'))
def test_westland_custom_caps_hour_2(self):
lead1 = self.make_lead('2:01', 'GA', province='AB')
lead2 = self.make_lead('2:02', 'GA', province='AB')
lead3 = self.make_lead('2:03', 'GA', province='AB')
lead4 = self.make_lead('2:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('2'))
def test_westland_custom_caps_hour_3(self):
lead1 = self.make_lead('3:01', 'GA', province='AB')
lead2 = self.make_lead('3:02', 'GA', province='AB')
lead3 = self.make_lead('3:03', 'GA', province='AB')
lead4 = self.make_lead('3:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('3'))
def test_westland_custom_caps_hour_4(self):
lead1 = self.make_lead('4:01', 'GA', province='AB')
lead2 = self.make_lead('4:02', 'GA', province='AB')
lead3 = self.make_lead('4:03', 'GA', province='AB')
lead4 = self.make_lead('4:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('4'))
def test_westland_custom_caps_hour_5(self):
lead1 = self.make_lead('5:01', 'GA', province='AB')
lead2 = self.make_lead('5:02', 'GA', province='AB')
lead3 = self.make_lead('5:03', 'GA', province='AB')
lead4 = self.make_lead('5:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('5'))
def test_westland_custom_caps_hour_6(self):
lead1 = self.make_lead('6:01', 'GA', province='AB')
lead2 = self.make_lead('6:02', 'GA', province='AB')
lead3 = self.make_lead('6:03', 'GA', province='AB')
lead4 = self.make_lead('6:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '4',
'westland': '0',
}, get_current_caps().get('6'))
def test_westland_custom_caps_hour_7(self):
lead1 = self.make_lead('7:01', 'GA', province='AB')
lead2 = self.make_lead('7:02', 'GA', province='AB')
lead3 = self.make_lead('7:03', 'GA', province='AB')
lead4 = self.make_lead('7:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '4',
'westland': '0',
}, get_current_caps().get('7'))
def test_westland_custom_caps_hour_8(self):
lead1 = self.make_lead('8:01', 'GA', province='AB')
lead2 = self.make_lead('8:02', 'GA', province='AB')
lead3 = self.make_lead('8:03', 'GA', province='AB')
lead4 = self.make_lead('8:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '4',
'westland': '0',
}, get_current_caps().get('8'))
def test_westland_custom_caps_hour_9(self):
lead1 = self.make_lead('9:01', 'GA', province='AB')
lead2 = self.make_lead('9:02', 'GA', province='AB')
lead3 = self.make_lead('9:03', 'GA', province='AB')
lead4 = self.make_lead('9:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '4',
'westland': '0',
}, get_current_caps().get('9'))
def test_westland_custom_caps_hour_10(self):
lead1 = self.make_lead('10:01', 'GA', province='AB')
lead2 = self.make_lead('10:02', 'GA', province='AB')
lead3 = self.make_lead('10:03', 'GA', province='AB')
lead4 = self.make_lead('10:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '4',
'westland': '0',
}, get_current_caps().get('10'))
def test_westland_custom_caps_hour_11(self):
lead1 = self.make_lead('11:01', 'GA', province='AB')
lead2 = self.make_lead('11:02', 'GA', province='AB')
lead3 = self.make_lead('11:03', 'GA', province='AB')
lead4 = self.make_lead('11:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '4',
'westland': '0',
}, get_current_caps().get('11'))
def test_westland_custom_caps_hour_12(self):
lead1 = self.make_lead('12:01', 'GA', province='AB')
lead2 = self.make_lead('12:02', 'GA', province='AB')
lead3 = self.make_lead('12:03', 'GA', province='AB')
lead4 = self.make_lead('12:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '4',
'westland': '0',
}, get_current_caps().get('12'))
def test_westland_custom_caps_hour_13(self):
lead1 = self.make_lead('13:01', 'GA', province='AB')
lead2 = self.make_lead('13:02', 'GA', province='AB')
lead3 = self.make_lead('13:03', 'GA', province='AB')
lead4 = self.make_lead('13:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '4',
'westland': '0',
}, get_current_caps().get('13'))
def test_westland_custom_caps_hour_14(self):
lead1 = self.make_lead('14:01', 'GA', province='AB')
lead2 = self.make_lead('14:02', 'GA', province='AB')
lead3 = self.make_lead('14:03', 'GA', province='AB')
lead4 = self.make_lead('14:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'surex')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '4',
'westland': '0',
}, get_current_caps().get('14'))
def test_westland_custom_caps_hour_15(self):
lead1 = self.make_lead('15:01', 'GA', province='AB')
lead2 = self.make_lead('15:02', 'GA', province='AB')
lead3 = self.make_lead('15:03', 'GA', province='AB')
lead4 = self.make_lead('15:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('15'))
def test_westland_custom_caps_hour_16(self):
lead1 = self.make_lead('16:01', 'GA', province='AB')
lead2 = self.make_lead('16:02', 'GA', province='AB')
lead3 = self.make_lead('16:03', 'GA', province='AB')
lead4 = self.make_lead('16:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('16'))
def test_westland_custom_caps_hour_17(self):
lead1 = self.make_lead('17:01', 'GA', province='AB')
lead2 = self.make_lead('17:02', 'GA', province='AB')
lead3 = self.make_lead('17:03', 'GA', province='AB')
lead4 = self.make_lead('17:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('17'))
def test_westland_custom_caps_hour_18(self):
lead1 = self.make_lead('18:01', 'GA', province='AB')
lead2 = self.make_lead('18:02', 'GA', province='AB')
lead3 = self.make_lead('18:03', 'GA', province='AB')
lead4 = self.make_lead('18:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('18'))
def test_westland_custom_caps_hour_19(self):
lead1 = self.make_lead('19:01', 'GA', province='AB')
lead2 = self.make_lead('19:02', 'GA', province='AB')
lead3 = self.make_lead('19:03', 'GA', province='AB')
lead4 = self.make_lead('19:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('19'))
def test_westland_custom_caps_hour_20(self):
lead1 = self.make_lead('20:01', 'GA', province='AB')
lead2 = self.make_lead('20:02', 'GA', province='AB')
lead3 = self.make_lead('20:03', 'GA', province='AB')
lead4 = self.make_lead('20:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('20'))
def test_westland_custom_caps_hour_21(self):
lead1 = self.make_lead('21:01', 'GA', province='AB')
lead2 = self.make_lead('21:02', 'GA', province='AB')
lead3 = self.make_lead('21:03', 'GA', province='AB')
lead4 = self.make_lead('21:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('21'))
def test_westland_custom_caps_hour_22(self):
lead1 = self.make_lead('22:01', 'GA', province='AB')
lead2 = self.make_lead('22:02', 'GA', province='AB')
lead3 = self.make_lead('22:03', 'GA', province='AB')
lead4 = self.make_lead('22:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('22'))
def test_westland_custom_caps_hour_23(self):
lead1 = self.make_lead('23:01', 'GA', province='AB')
lead2 = self.make_lead('23:02', 'GA', province='AB')
lead3 = self.make_lead('23:03', 'GA', province='AB')
lead4 = self.make_lead('23:04', 'GA', province='AB')
self.assertEquals(lead1.get('lead_destination'), 'surex')
self.assertEquals(lead2.get('lead_destination'), 'westland')
self.assertEquals(lead3.get('lead_destination'), 'surex')
self.assertEquals(lead4.get('lead_destination'), 'surex')
self.assertEquals({
'surex': '3',
'westland': '1',
}, get_current_caps().get('23'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment