def test_fiscal_date_converter(input_template: DataTemplate, output_template: DataTemplate) -> None:
    data = input_template.to_df([
        {'uuid': '1', 'sourceFiscal': '201213-Q1'},
        {'uuid': '2', 'sourceFiscal': '201213-Q2'},
        {'uuid': '3', 'sourceFiscal': '201213-Q3'},
        {'uuid': '4', 'sourceFiscal': '201213-Q4'},
    ])
    output = transform.transform(data).to_dict('records')
    expected = output_template.to_dicts([
        {
            'uuid': '1',
            'source_fiscal': datetime.date(2012, 4, 1),
            'reporting_period_start': datetime.date(2012, 4, 1),
            'reporting_period_end': datetime.date(2018, 3, 31),
            'reporting_period_value': 6000.00
        }, {
            'uuid': '2',
            'source_fiscal': datetime.date(2012, 7, 1),
            'reporting_period_start': datetime.date(2012, 4, 1),
            'reporting_period_end': datetime.date(2018, 3, 31),
        }, {
            'uuid': '3',
            'source_fiscal': datetime.date(2012, 10, 1),
            'reporting_period_start': datetime.date(2012, 4, 1),
            'reporting_period_end': datetime.date(2018, 3, 31),
        }, {
            'uuid': '4',
            'source_fiscal': datetime.date(2013, 1, 1),
            'reporting_period_start': datetime.date(2012, 4, 1),
            'reporting_period_end': datetime.date(2018, 3, 31),
        },
    ])
    assert output == expected
def test_blank_fiscal_rows_dropped(input_template: DataTemplate) -> None:
    data = input_template.to_df([
        {'sourceFiscal': ''},
    ])

    output = transform.transform(data).to_dict('records')
    assert output == []
def test_fiscal_date_converting_bad_data(input_template: DataTemplate) -> None:
    data = input_template.to_df([
        {'uuid': 1, 'sourceFiscal': '2012-04-01'},
        {'uuid': 2, 'sourceFiscal': '201213'},
        {'uuid': 3, 'sourceFiscal': '201213-Q5'},
    ])
    output = transform.transform(data).to_dict('records')
    assert output == []
def test_bad_contract_dates(input_template: DataTemplate, output_template: DataTemplate) -> None:
    data = input_template.to_df([{
        'contractDate': '2012-10-10',
        'contractPeriodStart': '0001-01-01',
        'contractPeriodEnd': '1899-12-31',
    }])

    expected = output_template.to_dicts([{
        'contract_date': datetime.date(2012, 10, 10),
        'contract_period_start': datetime.date(2012, 10, 10),
        'contract_period_end': datetime.date(2012, 10, 10),
        'reporting_period_start': datetime.date(2012, 10, 10),
        'reporting_period_end': datetime.date(2012, 10, 10),
    }])
    assert transform.transform(data).to_dict('records') == expected
def test_contract_starts_that_go_backwards_in_time(
        input_template: DataTemplate, output_template: DataTemplate) -> None:
    data = input_template.to_df([{
        'contractDate': '2012-01-01',
        'contractPeriodStart': '2011-12-01',
        'contractPeriodEnd': '2014-01-01',
        'sourceFiscal': '201213-Q4',
    }, {
        'contractDate': '2013-01-01',
        'contractPeriodStart': '2010-01-01',
        'contractPeriodEnd': '2015-01-01',
        'sourceFiscal': '201314-Q1',
    }])
    output = transform.transform(data).to_dict('records')
    output = sorted(output, key=lambda r: r['contract_date'])

    expected = output_template.to_dicts([{
        'contract_date':
        datetime.date(2012, 1, 1),
        'contract_period_start':
        datetime.date(2010, 1, 1),
        'contract_period_end':
        datetime.date(2014, 1, 1),
        'source_fiscal':
        datetime.date(2013, 1, 1),
        'reporting_period_start':
        datetime.date(2010, 1, 1),
        'reporting_period_end':
        datetime.date(2013, 3, 31),
        'reporting_period_value':
        4867.31,
    }, {
        'contract_date':
        datetime.date(2013, 1, 1),
        'contract_period_start':
        datetime.date(2010, 1, 1),
        'contract_period_end':
        datetime.date(2015, 1, 1),
        'source_fiscal':
        datetime.date(2013, 4, 1),
        'reporting_period_start':
        datetime.date(2013, 4, 1),
        'reporting_period_end':
        datetime.date(2015, 1, 1),
        'reporting_period_value':
        1132.69,
    }])
    assert output == expected
def test_reporting_periods_broken_up(input_template: DataTemplate,
                                     output_template: DataTemplate) -> None:
    data = input_template.to_df([{
        'contractDate': '2012-10-02',
        'contractPeriodStart': '2012-10-01',
        'contractPeriodEnd': '2014-12-31',
        'sourceFiscal': '201213-Q3'
    }, {
        'contractDate': '2014-01-02',
        'contractPeriodStart': '2012-10-01',
        'contractPeriodEnd': '2015-12-31',
        'sourceFiscal': '201314-Q4'
    }])

    expected = output_template.to_dicts([{
        'contract_date':
        datetime.date(2012, 10, 2),
        'contract_period_start':
        datetime.date(2012, 10, 1),
        'contract_period_end':
        datetime.date(2014, 12, 31),
        'source_fiscal':
        datetime.date(2012, 10, 1),
        'reporting_period_start':
        datetime.date(2012, 10, 1),
        'reporting_period_end':
        datetime.date(2014, 1, 1),
        'reporting_period_value':
        3343.07,
    }, {
        'contract_date':
        datetime.date(2014, 1, 2),
        'contract_period_start':
        datetime.date(2012, 10, 1),
        'contract_period_end':
        datetime.date(2015, 12, 31),
        'source_fiscal':
        datetime.date(2014, 1, 1),
        'reporting_period_start':
        datetime.date(2014, 1, 2),
        'reporting_period_end':
        datetime.date(2015, 12, 31),
        'reporting_period_value':
        2656.93,
    }])

    assert transform.transform(data).to_dict('records') == expected
Esempio n. 7
0
def test_transform(input_template: DataTemplate,
                   output_template: DataTemplate) -> None:
    data = input_template.to_df([{}])
    output = transform.transform(data).to_dict('records')
    expected = output_template.to_dicts([{}])
    assert output == expected