From ee1ab4f0570bdcb781dc9eb6759baeaca8e4f5fc Mon Sep 17 00:00:00 2001 From: chenzheng06 Date: Mon, 15 May 2017 14:52:25 -0400 Subject: [PATCH 1/2] create 2 test files for liability --- bpfin/tests/test_financials/test_liability.py | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/bpfin/tests/test_financials/test_liability.py b/bpfin/tests/test_financials/test_liability.py index 8c18ba5..179740d 100644 --- a/bpfin/tests/test_financials/test_liability.py +++ b/bpfin/tests/test_financials/test_liability.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import date from bpfin.financials.liability import final_liability_dict from bpfin.tests.testdata import sample_data as db @@ -14,6 +14,40 @@ def test_final_liability_dict(): } result = final_liability_dict(input_start_date, input_dict, input_duration) - print(result) + assert output == result + +def test_final_liability_dict_single_year(): + input_dict = { + 'debt1': (100, 'NYSERDA', 10, date(2012, 12, 31)) + } + input_start_date = db.analysis_date['proforma_start'] + input_duration = db.analysis_date['proforma_duration'] + output = { + 2012: 100, 2013: 900 + } + result = final_liability_dict(input_start_date, input_dict, input_duration) + assert output == result + + +def test_final_liability_dict_year_gap(): + input_dict = { + 'debt1': (100, 'NYSERDA', 10, date(2012, 12, 31)), + 'debt2': (200, 'Joe', 24, date(2014, 12, 10)), + 'debt3': (50, 'Tooraj', 12, date(2015, 3, 15)), + 'debt4': (250, 'Frank', 3, date(2018, 12, 31)) + } + input_start_date = db.analysis_date['proforma_start'] + input_duration = db.analysis_date['proforma_duration'] + output = { + 2012: 100, + 2013: 900, + 2014: 200, + 2015: 2900, # 2400 + 500 + 2016: 2300, # 2200 + 100 + 2017: 0, + 2018: 250, + 2019: 500 + } + result = final_liability_dict(input_start_date, input_dict, input_duration) assert output == result -- GitLab From 37bf180193ce888a8ca1ae5542d2cabf6afe48d6 Mon Sep 17 00:00:00 2001 From: Sarey Hamarneh Date: Mon, 15 May 2017 16:54:32 -0400 Subject: [PATCH 2/2] Solve problem --- bpfin/financials/liability.py | 12 +-- bpfin/tests/test_financials/test_liability.py | 91 +++++++++++++++---- 2 files changed, 81 insertions(+), 22 deletions(-) diff --git a/bpfin/financials/liability.py b/bpfin/financials/liability.py index 436893a..642df73 100644 --- a/bpfin/financials/liability.py +++ b/bpfin/financials/liability.py @@ -69,7 +69,7 @@ def create_liability_dict(liability_dictionary): return final_dict -def final_liability_dict(start_date, liability_dictionary, months): +def final_liability_dict(analysis_date, liability_dictionary): """Create dictionary of {(year,month):debt value}, which includes all debts Args: start_date (datetime): first date of the dictionary @@ -79,7 +79,9 @@ def final_liability_dict(start_date, liability_dictionary, months): dictionary: {(year,month):debt value} """ final_dict = {} - pro_forma_calendar = liability_calendar(start_date, months) + pro_forma_calendar = liability_calendar( + analysis_date['proforma_start'], + analysis_date['proforma_duration'] * 12) debt_list = create_liability_dict(liability_dictionary) for pro_date in pro_forma_calendar: for debt_date_dict in debt_list: @@ -92,10 +94,8 @@ def final_liability_dict(start_date, liability_dictionary, months): pro_date.year, pro_date.month, calendar.monthrange( pro_date.year, pro_date.month)[1])] = [] final_dict[(pro_date.year, - pro_date.month, - calendar.monthrange( - pro_date.year, - pro_date.month)[1] + pro_date.month, calendar.monthrange( + pro_date.year, pro_date.month)[1] )].append(debt_date_dict[debt_date]) for pro_date in pro_forma_calendar: if (pro_date.year, pro_date.month, calendar.monthrange( diff --git a/bpfin/tests/test_financials/test_liability.py b/bpfin/tests/test_financials/test_liability.py index 179740d..3c0433b 100644 --- a/bpfin/tests/test_financials/test_liability.py +++ b/bpfin/tests/test_financials/test_liability.py @@ -4,41 +4,82 @@ from bpfin.tests.testdata import sample_data as db def test_final_liability_dict(): - input_start_date = db.analysis_date['proforma_start'] + input_analysis_date = db.analysis_date input_dict = db.liability_input - input_duration = db.analysis_date['proforma_duration'] output = { 2012: 650, 2013: 2550, - 2014: 100 + 2014: 300, + 2015: 0, + 2016: 0, + 2017: 0, + 2018: 0, + 2019: 0, + 2020: 0, + 2021: 0, + 2022: 0, + 2023: 0, + 2024: 0, + 2025: 0, + 2026: 0, + 2027: 0, + 2028: 0, + 2029: 0, + 2030: 0, + 2031: 0, + 2032: 0, + 2033: 0, + 2034: 0, + 2035: 0, + 2036: 0, } - result = final_liability_dict(input_start_date, input_dict, input_duration) + result = final_liability_dict(input_analysis_date, input_dict) assert output == result def test_final_liability_dict_single_year(): - input_dict = { - 'debt1': (100, 'NYSERDA', 10, date(2012, 12, 31)) - } - input_start_date = db.analysis_date['proforma_start'] - input_duration = db.analysis_date['proforma_duration'] + input_dict = {'debt1': (100, 'NYSERDA', 10, date(2012, 12, 31))} + input_analysis_date = db.analysis_date output = { - 2012: 100, 2013: 900 + 2012: 100, + 2013: 900, + 2014: 0, + 2015: 0, + 2016: 0, + 2017: 0, + 2018: 0, + 2019: 0, + 2020: 0, + 2021: 0, + 2022: 0, + 2023: 0, + 2024: 0, + 2025: 0, + 2026: 0, + 2027: 0, + 2028: 0, + 2029: 0, + 2030: 0, + 2031: 0, + 2032: 0, + 2033: 0, + 2034: 0, + 2035: 0, + 2036: 0 } - result = final_liability_dict(input_start_date, input_dict, input_duration) + result = final_liability_dict(input_analysis_date, input_dict) assert output == result def test_final_liability_dict_year_gap(): input_dict = { 'debt1': (100, 'NYSERDA', 10, date(2012, 12, 31)), - 'debt2': (200, 'Joe', 24, date(2014, 12, 10)), + 'debt2': (200, 'Joe', 24, date(2014, 12, 31)), 'debt3': (50, 'Tooraj', 12, date(2015, 3, 15)), 'debt4': (250, 'Frank', 3, date(2018, 12, 31)) } - input_start_date = db.analysis_date['proforma_start'] - input_duration = db.analysis_date['proforma_duration'] + input_analysis_date = db.analysis_date output = { 2012: 100, 2013: 900, @@ -47,7 +88,25 @@ def test_final_liability_dict_year_gap(): 2016: 2300, # 2200 + 100 2017: 0, 2018: 250, - 2019: 500 + 2019: 500, + 2020: 0, + 2021: 0, + 2022: 0, + 2023: 0, + 2024: 0, + 2025: 0, + 2026: 0, + 2027: 0, + 2028: 0, + 2029: 0, + 2030: 0, + 2031: 0, + 2032: 0, + 2033: 0, + 2034: 0, + 2035: 0, + 2036: 0 + } - result = final_liability_dict(input_start_date, input_dict, input_duration) + result = final_liability_dict(input_analysis_date, input_dict) assert output == result -- GitLab