Skip to content

Lesson 7: endLottery TEST what about the other accounts? #1803

Open
@emilrueh

Description

@emilrueh

(Around the 08:10:00 mark in the tutorial video.)

Hi, wondering how we could test whether the other accounts pass as recentWinner when setting our STATIC_RNG to 778.

Right now we use 777 as the random value which with 3 players equals to index 0 therefore our standard account.
I also want to test if another index can be the winner or only our standard account.

Right now it is unclear if the test is indeed doing what we want and not only passing the standard account if selected as winner, right?


I tried below but but that throws a TypeError: 'Account' object is not subscriptable so I might just not know how to get the other added players index:

STATIC_RNG = 778
assert lottery.recentWinner() == account[1]

I also tried to use lottery.players to get a players address but that does not work.


The full code of that test:

def test_can_pick_winner_correctly():

    # ARRANGE
    if network.show_active() not in LOCAL_BLOCKCHAIN_ENVIRONMENTS:
        pytest.skip()
    lottery = deploy_lottery()
    account = get_account()

    # ACT
    lottery.startLottery({"from": account})

    lottery.enterLottery({"from": account, "value": lottery.getEntranceFee()})
    lottery.enterLottery(
        {"from": get_account(index=1), "value": lottery.getEntranceFee()}
    )
    lottery.enterLottery(
        {"from": get_account(index=2), "value": lottery.getEntranceFee()}
    )

    fund_with_link(lottery)

    starting_balance_of_account = account.balance()
    balance_of_lottery = lottery.balance()

    transaction = lottery.end({"from": account})
    request_id = transaction.events["RequestedRandomness"]["requestId"]
    STATIC_RNG = 777
    get_contract("vrf_coordinator").callBackWithRandomness(
        request_id, STATIC_RNG, lottery.address, {"from": account}
    )
    print(lottery.players)  # just a test to see how to use it to get a player

    # ASSERT
    assert lottery.recentWinner() == account
    assert lottery.balance() == 0
    assert account.balance() == starting_balance_of_account + balance_of_lottery

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions