Example #1
0
def test_aggregation_for_multiple_trades_pending_state(
        mock_pre_transform_data):
    mock_pre_transform_data.return_value = [
        Trade(correlation_id=234,
              number_of_trades=3,
              trade_limit=1000,
              trade_value=100),
        Trade(correlation_id=234,
              number_of_trades=3,
              trade_limit=1000,
              trade_value=100),
    ]

    actual = get_aggregated_data(test_input_file)
    expected = {
        234:
        TradeAggregate(
            number_of_trades=3,
            trade_limit=1000,
            trade_value=200,
            trade_count=2,
            state="Pending",
        )
    }
    assert actual == expected
Example #2
0
def test_aggregation_for_multiple_trades_mock_aggregated_state(
        mock_pre_transform_data, mock_aggregate):
    mock_pre_transform_data.return_value = [
        Trade(correlation_id=234,
              number_of_trades=2,
              trade_limit=1000,
              trade_value=100),
        Trade(correlation_id=234,
              number_of_trades=2,
              trade_limit=1000,
              trade_value=200),
    ]

    mock_aggregate.return_value = TradeAggregate(
        number_of_trades=2,
        trade_limit=1000,
        trade_value=300,
        trade_count=2,
        state="Accepted",
    )

    actual = get_aggregated_data(test_input_file)
    expected = {
        234:
        TradeAggregate(
            number_of_trades=2,
            trade_limit=1000,
            trade_value=300,
            trade_count=2,
            state="Accepted",
        ),
    }
    assert actual == expected
Example #3
0
def test_pre_transform_multiple_row_data(mock_load_data):
    mock_load_data.return_value = [
                                       '\t<Trade CorrelationId="234" NumberOfTrades="3" Limit="1000" TradeID="654">100</Trade>\n',
                                        '\t<Trade CorrelationId="255" NumberOfTrades="6" Limit="1000" TradeID="444">300</Trade>\n'
                                    ]
    expected = [
            Trade(correlation_id=234, number_of_trades=3, trade_limit=1000, trade_value=100), 
            Trade(correlation_id=255, number_of_trades=6, trade_limit=1000, trade_value=300)
    ] 
    actual = pre_transform_data('')
    assert expected == actual
Example #4
0
def test_aggregation_for_multiple_trades_all_three_states(
        mock_pre_transform_data):
    mock_pre_transform_data.return_value = [
        Trade(correlation_id=234,
              number_of_trades=3,
              trade_limit=1000,
              trade_value=100),
        Trade(correlation_id=234,
              number_of_trades=3,
              trade_limit=1000,
              trade_value=200),
        Trade(correlation_id=234,
              number_of_trades=3,
              trade_limit=1000,
              trade_value=200),
        Trade(correlation_id=222,
              number_of_trades=1,
              trade_limit=500,
              trade_value=600),
        Trade(correlation_id=200,
              number_of_trades=2,
              trade_limit=2000,
              trade_value=1000),
    ]

    actual = get_aggregated_data(test_input_file)
    expected = {
        234:
        TradeAggregate(
            number_of_trades=3,
            trade_limit=1000,
            trade_value=500,
            trade_count=3,
            state="Accepted",
        ),
        222:
        TradeAggregate(
            number_of_trades=1,
            trade_limit=500,
            trade_value=600,
            trade_count=1,
            state="Rejected",
        ),
        200:
        TradeAggregate(
            number_of_trades=2,
            trade_limit=2000,
            trade_value=1000,
            trade_count=1,
            state="Pending",
        ),
    }
    assert actual == expected
Example #5
0
def test_pre_transform_row_data(mock_load_data):
    mock_load_data.return_value = [
                                       '\t<Trade CorrelationId="234" NumberOfTrades="3" Limit="1000" TradeID="654">100</Trade>\n',
                                    ]
    expected = Trade(correlation_id=234, number_of_trades=3, trade_limit=1000, trade_value=100)
    actual = pre_transform_data('')
    
    assert expected == actual[0]
Example #6
0
def pre_transform_data(file_name):
    entire_lines = load_data(file_name)
    row_data = map(extract, entire_lines)
    extra = []
    for item in row_data:
        *rest, _, trade_value = list(item)
        extra.append(Trade(*rest, trade_value))
    return extra
Example #7
0
def test_aggregate_first_time():
    trade = Trade(correlation_id=3,
                  number_of_trades=2,
                  trade_limit=100,
                  trade_value=1)
    actual = aggregate(trade, False)
    expected = TradeAggregate(
        number_of_trades=2,
        trade_limit=100,
        trade_value=1,
        trade_count=1,
        state="Pending",
    )
    assert actual == expected
Example #8
0
def test_accepted_single_trade_rejected_state(mock_pre_transform_data):
    mock_pre_transform_data.return_value = [
        Trade(correlation_id=234,
              number_of_trades=1,
              trade_limit=50,
              trade_value=100)
    ]

    actual = get_aggregated_data(test_input_file)
    expected = {
        234:
        TradeAggregate(
            number_of_trades=1,
            trade_limit=50,
            trade_value=100,
            trade_count=1,
            state="Rejected",
        )
    }
    assert actual == expected
Example #9
0
def test_aggregate_existing_trade():
    trade = Trade(correlation_id=2,
                  number_of_trades=2,
                  trade_limit=100,
                  trade_value=1)
    existing_trade = TradeAggregate(
        number_of_trades=2,
        trade_limit=100,
        trade_value=75,
        trade_count=1,
        state="Pending",
    )
    actual = aggregate(trade, existing_trade)
    expected = TradeAggregate(
        number_of_trades=2,
        trade_limit=100,
        trade_value=76,
        trade_count=2,
        state="Accepted",
    )
    assert actual == expected