diff --git a/.gitignore b/.gitignore index 26794025038b3acb43a3effa792a22a3df4ff161..09802776c703ac95e9c50a4bd52b05e49b1f1a05 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ build .vscode .env .python-version +*.swp +*.coverage diff --git a/bpfin/tests/test_financials/test_liability.py b/bpfin/tests/test_financials/test_liability.py index 3c0433b317243c1d041616efba813522a55d7395..fb7d543ee7d8e43a665660fe96a563e5758d7607 100644 --- a/bpfin/tests/test_financials/test_liability.py +++ b/bpfin/tests/test_financials/test_liability.py @@ -1,8 +1,122 @@ -from datetime import date -from bpfin.financials.liability import final_liability_dict +"""Tests for liability file in financials.""" +from datetime import date, datetime +from bpfin.financials.liability import final_liability_dict, add_months, define_date_start, liability_calendar +from bpfin.financials.liability import create_liability_dict from bpfin.tests.testdata import sample_data as db +class TestLiability: + """Test all functions in liability file.""" + + def test_add_months_1(self): + """Test add_months with 0 months to add.""" + start_date = date(2017, 6, 1) + expected_result = datetime(2017, 6, 1) + result = add_months(start_date, 0) + assert result == expected_result + + def test_add_months_2(self): + """Test adding 1 month to December.""" + start_date = date(2016, 12, 10) + expected_result = datetime(2017, 1, 10) + result = add_months(start_date, 1) + assert result == expected_result + + def test_add_months_3(self): + """Test adding 1 month to Jan 31.""" + start_date = date(2017, 1, 31) + expected_result = datetime(2017, 2, 28) + result = add_months(start_date, 1) + assert result == expected_result + + def test_add_months_4(self): + """Test adding 1 month to Jan 31 in leap year.""" + start_date = date(2016, 1, 31) + expected_result = datetime(2016, 2, 29) + result = add_months(start_date, 1) + assert result == expected_result + + def test_add_months_5(self): + """Test adding 15 months to July 4.""" + start_date = date(2016, 7, 4) + expected_result = datetime(2017, 10, 4) + result = add_months(start_date, 15) + assert result == expected_result + + def test_define_start_date_1(self): + """Test define_date_start for a liability dictionary with one date.""" + input_dict = {'debt1': (150, 'NYSERDA', 12, date(2013, 5, 1))} + expected_result = date(2013, 5, 1) + result = define_date_start(input_dict) + assert result == expected_result + def test_define_start_date_2(self): + """Test with 4 debts in the liability dictionary.""" + input_dict = { + 'debt1': (100, 'NYSERDA', 10, date(2012, 3, 4)), + 'debt2': (150, 'NYSERDA', 12, date(2014, 4, 3)), + 'debt3': (120, 'NYSERDA', 14, date(2011, 6, 3)), + 'debt4': (200, 'NYSERDA', 18, date(2014, 8, 1)), + } + expected_result = date(2014, 8, 1) + result = define_date_start(input_dict) + assert result == expected_result + + def test_liability_calendar_1(self): + """Test the liability_calendar function for a date and months as 0.""" + expected_result = [] + result = liability_calendar(date(2013, 2, 1), 0) + assert result == expected_result + + def test_liability_calendar_2(self): + """Test the liability_calendar function for a date and months as 1.""" + expected_result = [date(2013, 2, 5)] + result = liability_calendar(date(2013, 2, 5), 1) + assert result == expected_result + + def test_liability_calendar_3(self): + """Test the liability_calendar function for a date and months as 15""" + expected_result = [ + date(2013, 5, 10), + date(2013, 6, 10), + date(2013, 7, 10), + date(2013, 8, 10), + date(2013, 9, 10), + date(2013, 10, 10), + date(2013, 11, 10), + date(2013, 12, 10), + date(2014, 1, 10), + date(2014, 2, 10), + date(2014, 3, 10), + date(2014, 4, 10), + date(2014, 5, 10), + date(2014, 6, 10), + date(2014, 7, 10), + ] + result = liability_calendar(date(2013, 5, 10), 15) + assert result == expected_result + + def test_create_liability_dict_1(self): + """Test the create_liability_dict function with one input.""" + input_dict = {'debt1': (100, 'NYSERDA', 12, date(2012, 10, 11))} + expected_result = [ + { + date(2012, 10, 11): 100, + date(2012, 11, 11): 100, + date(2012, 12, 11): 100, + date(2013, 1, 11): 100, + date(2013, 2, 11): 100, + date(2013, 3, 11): 100, + date(2013, 4, 11): 100, + date(2013, 5, 11): 100, + date(2013, 6, 11): 100, + date(2013, 7, 11): 100, + date(2013, 8, 11): 100, + date(2013, 9, 11): 100, + }, + ] + result = create_liability_dict(input_dict) + assert result == expected_result + def test_final_liability_dict(): input_analysis_date = db.analysis_date input_dict = db.liability_input