diff --git a/bpfin/tests/test_financials/test_cash_balance.py b/bpfin/tests/test_financials/test_cash_balance.py index fa1a08d15285c56f9d971680500c90b3a0b5c45d..2f27f7b9b79f91608b4fac9a9c6f5070e433c78c 100644 --- a/bpfin/tests/test_financials/test_cash_balance.py +++ b/bpfin/tests/test_financials/test_cash_balance.py @@ -2,6 +2,29 @@ from bpfin.financials.cash_balance import cash_balance from datetime import date +def test_cash_balance_year_gap(): + input_dictionary = { + date(2014, 11, 1): (500, False), + date(2014, 12, 1): (400, False), + date(2014, 3, 13): (600, False), + date(2016, 11, 11): (500, False), + date(2016, 12, 31): (400, True) + } + input_analysis_date = { + 'proforma_start': date(2012, 5, 3), + 'proforma_duration': 12 + } + output_cash_balance = { + 2012: 450, + 2013: 450, + 2014: 500, + 2015: 450, + 2016: 400 + } + result = cash_balance(input_analysis_date, input_dictionary) + assert result == output_cash_balance + + def test_cash_balance(): input_dictionary = { date(2014, 11, 1): (500, False), diff --git a/bpfin/tests/testdata/sample_data.py b/bpfin/tests/testdata/sample_data.py index 5be9768c163292485775813cef3683961361756d..2fb3de612ea48efa75a2300af7a8645e6110b220 100644 --- a/bpfin/tests/testdata/sample_data.py +++ b/bpfin/tests/testdata/sample_data.py @@ -2869,8 +2869,128 @@ inflation_coeff_dict = { datetime.date(2070, 12, 31): 2.9304467575976516} - - - - - +raw_gas_bill_demo = {} +raw_gas_bill_demo['utility_type'] = 'gas' +raw_gas_bill_demo['date_from'] = [ + datetime.date(2016, 11, 22), datetime.date(2016, 10, 18), datetime.date(2016, 9, 30), + datetime.date(2016, 9, 19), datetime.date(2016, 8, 18), datetime.date(2016, 7, 20), + datetime.date(2016, 6, 20), datetime.date(2016, 5, 18), datetime.date(2016, 4, 19), + datetime.date(2016, 3, 18), datetime.date(2016, 2, 17), datetime.date(2016, 1, 19), + datetime.date(2015, 12, 16), datetime.date(2015, 11, 16), datetime.date(2015, 10, 16), + datetime.date(2015, 9, 19), datetime.date(2015, 8, 18), datetime.date(2015, 7, 20), + datetime.date(2015, 6, 18), datetime.date(2015, 5, 19)] +raw__gas_bill_demo['date_to'] = [ + datetime.date(2016, 12, 16), datetime.date(2016, 11, 22), datetime.date(2016, 10, 18), + datetime.date(2016, 9, 30), datetime.date(2016, 9, 19), datetime.date(2016, 8, 18), + datetime.date(2016, 7, 20), datetime.date(2016, 6, 20), datetime.date(2016, 5, 18), + datetime.date(2016, 4, 19), datetime.date(2016, 3, 18), datetime.date(2016, 2, 17), + datetime.date(2016, 1, 19), datetime.date(2015, 12, 16), datetime.date(2015, 11, 16), + datetime.date(2015, 10, 16), datetime.date(2015, 9, 19), datetime.date(2015, 8, 18), + datetime.date(2015, 7, 20), datetime.date(2015, 6, 18)] +raw_gas_bill_demo['charge'] = [ + 304.79, 456.54, 232.75, 372.16, + 192.29, 379.36, 385.14, 400.74, + 343.49, 377.99, 378.44, 361.68, + 454.84, 397.33, 401.29, 354.76, + 412.32, 378.43, 414.33, 390.65] +raw_gas_bill_demo['usage'] = [ + 322.00, 470.00, 241.00, 148.00, + 429.00, 389.00, 402.00, 443.00, + 389.00, 429.00, 402.00, 389.00, + 456.00, 402.00, 416.00, 362.00, + 429.00, 389.00, 429.00, 402.00] + +raw_elec_bill_demo = {} +raw_elec_bill_demo['utility_type'] = 'electricity' +raw_elec_bill_demo['date_from'] = [ + datetime.date(2016, 11, 28), datetime.date(2016, 10, 26), datetime.date(2016, 9, 26), + datetime.date(2016, 8, 25), datetime.date(2016, 7, 27), datetime.date(2016, 6, 27), + datetime.date(2016, 5, 26), datetime.date(2016, 4, 27), datetime.date(2016, 3, 29), + datetime.date(2016, 2, 29), datetime.date(2016, 1, 28), datetime.date(2016, 12, 29), + datetime.date(2015, 11, 25), datetime.date(2015, 10, 27), datetime.date(2015, 9, 25), + datetime.date(2015, 8, 26), datetime.date(2015, 7, 28), datetime.date(2015, 6, 26), + datetime.date(2015, 5, 28), datetime.date(2015, 4, 28), datetime.date(2015, 3, 30), + datetime.date(2015, 2, 27), datetime.date(2015, 1, 28)] +raw_elec_bill_demo['date_to'] = [ + datetime.date(2016, 12, 28), datetime.date(2016, 11, 28), datetime.date(2016, 10, 26), + datetime.date(2016, 9, 26), datetime.date(2016, 8, 25), datetime.date(2016, 7, 27), + datetime.date(2016, 6, 27), datetime.date(2016, 5, 26), datetime.date(2016, 4, 27), + datetime.date(2016, 3, 29), datetime.date(2016, 2, 29), datetime.date(2016, 1, 28), + datetime.date(2016, 12, 29), datetime.date(2015, 11, 25), datetime.date(2015, 10, 27), + datetime.date(2015, 9, 25), datetime.date(2015, 8, 26), datetime.date(2015, 7, 28), + datetime.date(2015, 6, 26), datetime.date(2015, 5, 28), datetime.date(2015, 4, 28), + datetime.date(2015, 3, 30), datetime.date(2015, 2, 27)] +raw_elec_bill_demo['charge'] = [ + 56.01, 39.62, 67.42, 63.6, + 57.25, 56.21, 71.66, 68.28, + 63.57, 68.12, 71.73, 145.44, + 172.37, 130.65, 136.1, 137.14, + 126.16, 152.56, 169.68, 196.46, + 163.49, 163.88, 172.33] +raw_elec_bill_demo['usage'] = [ + 117.88, 91.93, 89.07, 98.17, + 86.88, 87.05, 101.05, 88.19, + 90.05, 104.19, 98.13, 182.55, + 208.85, 144.06, 136.16, 162.13, + 154.95, 179.64, 189.02, 168.92, + 190.8, 189.42, 214.66] + + +raw_oil_bill_demo = {} +raw_oil_bill_demo['utility_type'] = 'oil' +raw_oil_bill_demo['date_from'] = [ + datetime.date(2016, 11, 28), datetime.date(2016, 10, 26), datetime.date(2016, 9, 26), + datetime.date(2016, 8, 25), datetime.date(2016, 7, 27), datetime.date(2016, 6, 27), + datetime.date(2016, 5, 26), datetime.date(2016, 4, 27), datetime.date(2016, 3, 29), + datetime.date(2016, 2, 29), datetime.date(2016, 1, 28), datetime.date(2016, 12, 29), + datetime.date(2015, 11, 25), datetime.date(2015, 10, 27), datetime.date(2015, 9, 25), + datetime.date(2015, 8, 26), datetime.date(2015, 7, 28), datetime.date(2015, 6, 26), + datetime.date(2015, 5, 28), datetime.date(2015, 4, 28), datetime.date(2015, 3, 30), + datetime.date(2015, 2, 27), datetime.date(2015, 1, 28)] +raw_oil_bill_demo['date_to'] = [ + datetime.date(2016, 12, 28), datetime.date(2016, 11, 28), datetime.date(2016, 10, 26), + datetime.date(2016, 9, 26), datetime.date(2016, 8, 25), datetime.date(2016, 7, 27), + datetime.date(2016, 6, 27), datetime.date(2016, 5, 26), datetime.date(2016, 4, 27), + datetime.date(2016, 3, 29), datetime.date(2016, 2, 29), datetime.date(2016, 1, 28), + datetime.date(2016, 12, 29), datetime.date(2015, 11, 25), datetime.date(2015, 10, 27), + datetime.date(2015, 9, 25), datetime.date(2015, 8, 26), datetime.date(2015, 7, 28), + datetime.date(2015, 6, 26), datetime.date(2015, 5, 28), datetime.date(2015, 4, 28), + datetime.date(2015, 3, 30), datetime.date(2015, 2, 27)] +raw_oil_bill_demo['charge'] = [ + 3100, 2400, 3380, 1850, + 3000, 3200, 6700, 5300, + 4850, 5130, 5700, 3120, + 2420, 3400, 1870, 3020, + 3220, 6720, 5320, 4870, + 5150, 5720, 3680] +raw_oil_bill_demo['usage'] = [ + 1200, 700, 1000, 500, + 800, 900, 1700, 1400, + 1200, 1300, 1500, 1200, + 750, 1050, 550, 850, + 950, 1750, 1450, 1250, + 1350, 1550, 1450] + +raw_water_bill_demo = {} +raw_water_bill_demo['utility_type'] = 'water' +raw_water_bill_demo['date_from'] = [ + datetime.date(2016, 1, 3), datetime.date(2015, 1, 1), datetime.date(2014, 1, 2)] +raw_water_bill_demo['date_to'] = [ + datetime.date(2016, 12, 28), datetime.date(2016, 1, 2), datetime.date(2014, 12, 31)] +raw_water_bill_demo['charge'] = [ + 20000, 20500, 21000] +raw_water_bill_demo['usage'] = [ + 3500000, 3600000, 3300000] + +bill_demo = {'gas_bill': raw_gas_bill_demo, 'electricity_bill': raw_elec_bill_demo, + 'oil_bill': raw_oil_bill_demo, 'water_bill': raw_water_bill_demo} + +raw_income_input_demo = {2014: {'total_revenue': 200000, 'other_utility_expenses': 10000, 'energy_expenses': 67000, 'utility_expenses': 77000, 'non_utility_operating_expenses': 105000, +'total_expenses': 182000, 'noi': 18000}, 2015: {'total_revenue': 196000, 'other_utility_expenses': 8400, 'energy_expenses': 69000, 'utility_expenses': 77400, 'non_utility_operating_expenses': 104000, +'total_expenses': 181400, 'noi': 14600}, 2016: {'total_revenue': 205000, 'other_utility_expenses': 8100, 'energy_expenses': 70000, 'utility_expenses': 78100, 'non_utility_operating_expenses': 130000, +'total_expenses': 208100, 'noi': -3100}} + + +raw_balance_sheet_demo = {2014: {'cash': 60000, 'other_debt_service': 1000, 'noi': 18000}, + 2015: {'cash': 62000, 'other_debt_service': 1000, 'noi': 14600}, + 2016: {'cash': 52000, 'other_debt_service': 1000, 'noi': -3100}}