def test_action_cancel_route_comparison(): """There was a bug in ActionCancelRoute comparison function which we check for""" routes1 = [] routes2 = [RouteState(ADDR, ADDR)] a = ActionCancelRoute(UNIT_TRANSFER_INITIATOR, 5, routes1) b = ActionCancelRoute(UNIT_TRANSFER_TARGET, 5, routes1) c = ActionCancelRoute(UNIT_TRANSFER_TARGET, 3, routes2) d = ActionCancelRoute(UNIT_TRANSFER_TARGET, 3, routes2) assert a != b assert a != c assert c == d
def test_next_route(): amount = UNIT_TRANSFER_AMOUNT channel1 = factories.make_channel( our_balance=amount, token_address=UNIT_TOKEN_ADDRESS, token_network_identifier=UNIT_TOKEN_NETWORK_ADDRESS, ) channel2 = factories.make_channel( our_balance=0, token_address=UNIT_TOKEN_ADDRESS, token_network_identifier=UNIT_TOKEN_NETWORK_ADDRESS, ) channel3 = factories.make_channel( our_balance=amount, token_address=UNIT_TOKEN_ADDRESS, token_network_identifier=UNIT_TOKEN_NETWORK_ADDRESS, ) pseudo_random_generator = random.Random() channelmap = { channel1.identifier: channel1, channel2.identifier: channel2, channel3.identifier: channel3, } available_routes = [ factories.route_from_channel(channel1), factories.route_from_channel(channel2), factories.route_from_channel(channel3), ] block_number = 10 state = make_initiator_state( available_routes, factories.UNIT_TRANSFER_DESCRIPTION, channelmap, pseudo_random_generator, block_number, ) msg = 'an initialized state must use the first valid route' assert state.initiator.channel_identifier == channel1.identifier, msg assert not state.cancelled_channels state_change = ActionCancelRoute( UNIT_REGISTRY_IDENTIFIER, channel1.identifier, available_routes, ) iteration = initiator_manager.state_transition( state, state_change, channelmap, pseudo_random_generator, block_number, ) # HOP3 should be ignored because it doesnt have enough balance assert iteration.new_state.cancelled_channels == [channel1.identifier]