Beispiel #1
0
def test_decide_parallel_cast_vote(telosdecide):
    init_telos_token(telosdecide.testnet)
    fonds = f'{10000:.4f} TLOS'
    telosdecide.testnet.transfer_token('eosio.token', 'eosio', fonds, '')

    telosdecide.init('2.0.0')
    telosdecide.deposit('eosio', fonds)

    sym = random_token_symbol()
    treasury_sym = f'4,{sym}'
    vote_supply = f'{10000000000:.4f} {sym}'
    telosdecide.new_treasury('eosio', vote_supply, 'public')

    total_voters = 3
    voters = [telosdecide.testnet.new_account() for x in range(total_voters)]
    telosdecide.register_voter('eosio', treasury_sym, 'eosio')
    minted = f'{100:.4f} {sym}'

    # parallel regvoter
    results = telosdecide.testnet.parallel_push_action(
        ((telosdecide.contract_name for _ in range(total_voters)),
         ('regvoter' for _ in range(total_voters)),
         ([voter, treasury_sym, voter]
          for voter in voters), (f'{voter}@active' for voter in voters)))
    for ec, _ in results:
        assert ec == 0

    for voter in voters:
        telosdecide.mint(voter, minted, 'vote!')

    ballot_name = random_eosio_name()
    category = 'poll'
    options = ['yes', 'no', 'abstain']
    telosdecide.new_ballot(ballot_name, category, 'eosio', treasury_sym,
                           '1token1vote', options)

    begin_time = datetime.utcnow()
    end_time = begin_time + timedelta(seconds=4)
    telosdecide.open_voting(ballot_name, eosio_format_date(end_time))

    start = time.time()

    for i, voter in enumerate(voters):
        ec, _ = telosdecide.cast_vote(voter, ballot_name, [options[i]])
        assert ec == 0

    end = time.time()

    time.sleep(5 - (end - start))

    ec, _ = telosdecide.close_voting(ballot_name)

    ballot = telosdecide.get_ballot(ballot_name)

    assert ballot is not None

    for option in ballot['options']:
        assert option['value'] == minted

    assert ballot['total_voters'] == total_voters
Beispiel #2
0
def test_decide_new_ballot(telosdecide):
    init_telos_token(telosdecide.testnet)
    fonds = f'{10000:.4f} TLOS'
    telosdecide.testnet.transfer_token('eosio.token', 'eosio', fonds, '')

    telosdecide.init('2.0.0')
    telosdecide.deposit('eosio', fonds)

    sym = random_token_symbol()
    treasury_sym = f'4,{sym}'
    vote_supply = f'{10000000000:.4f} {sym}'
    telosdecide.new_treasury('eosio', vote_supply, 'public')

    telosdecide.register_voter('eosio', treasury_sym, 'eosio')

    ballot_name = random_eosio_name()
    category = 'poll'
    options = ['yes', 'no', 'abstain']
    ec, _ = telosdecide.new_ballot(ballot_name, category, 'eosio',
                                   treasury_sym, '1token1vote', options)

    assert ec == 0

    ballot = telosdecide.get_ballot(ballot_name)

    assert ballot is not None
    assert ballot['category'] == category
    assert ballot['treasury_symbol'] == treasury_sym
    assert ballot['voting_method'] == '1token1vote'

    for option in ballot['options']:
        assert option['key'] in options
        options.remove(option['key'])

    assert len(options) == 0
Beispiel #3
0
def test_decide_close_voting(telosdecide):
    init_telos_token(telosdecide.testnet)
    fonds = f'{10000:.4f} TLOS'
    telosdecide.testnet.transfer_token('eosio.token', 'eosio', fonds, '')

    telosdecide.init('2.0.0')
    telosdecide.deposit('eosio', fonds)

    sym = random_token_symbol()
    treasury_sym = f'4,{sym}'
    vote_supply = f'{10000000000:.4f} {sym}'
    telosdecide.new_treasury('eosio', vote_supply, 'public')

    telosdecide.register_voter('eosio', treasury_sym, 'eosio')

    ballot_name = random_eosio_name()
    category = 'poll'
    options = ['yes', 'no', 'abstain']
    telosdecide.new_ballot(ballot_name, category, 'eosio', treasury_sym,
                           '1token1vote', options)

    begin_time = datetime.utcnow()
    end_time = begin_time + timedelta(seconds=4)
    telosdecide.open_voting(ballot_name, eosio_format_date(end_time))

    time.sleep(5)

    ec, _ = telosdecide.close_voting(ballot_name)

    ballot = telosdecide.get_ballot(ballot_name)

    assert ballot is not None
    assert ballot['status'] == 'closed'