Skip to content
Snippets Groups Projects
Commit ad9dc230 authored by Holger Nahrstaedt's avatar Holger Nahrstaedt
Browse files

Add votes command to cli

cli
* add votes command to view outgoing/incoming  votes of an account
Unit tests
* improve unit tess for account and vote
* Add test_instance to check if set_shared_steem_instance, shared_steem_instance is working
* Add new command to test_cli
parent d3483242
No related branches found
No related tags found
No related merge requests found
......@@ -16,6 +16,7 @@ from beem.profile import Profile
from beem.witness import Witness, WitnessesRankedByVote, WitnessesVotedByAccount
from beem.blockchain import Blockchain
from beem.utils import formatTimeString
from beem.vote import AccountVotes, ActiveVotes
from beem import exceptions
from beem.version import version as __version__
from datetime import datetime, timedelta
......@@ -1215,6 +1216,30 @@ def witnesses(account, limit):
witnesses.printAsTable()
@cli.command()
@click.argument('account', nargs=1, required=False)
@click.option('--direction', default="in", help="in or out (default: in)")
@click.option('--days', default=2, help="Limit shown vote history by this amount of days (default: 2)")
def votes(account, direction, days):
""" List outgoing/incoming account votes
"""
stm = shared_steem_instance()
if not account:
account = stm.config["default_account"]
utc = pytz.timezone('UTC')
limit_time = utc.localize(datetime.utcnow()) - timedelta(days=days)
if direction == "out":
votes = AccountVotes(account, steem_instance=stm)
votes.printAsTable(start=limit_time)
else:
account = Account(account, steem_instance=stm)
votes_list = []
for v in account.history(start=limit_time, only_ops=["vote"]):
votes_list.append(v)
votes = ActiveVotes(votes_list, steem_instance=stm)
votes.printAsTable(votee=account["name"])
@cli.command()
@click.argument('account', nargs=1, required=False)
@click.option('--reward_steem', help='Amount of STEEM you would like to claim', default="0 STEEM")
......
......@@ -200,31 +200,28 @@ class Testcases(unittest.TestCase):
account = Account("gtg", steem_instance=stm)
h_list = []
max_index = account.virtual_op_count()
for h in account.history(start=max_index - 4, use_block_num=False, batch_size=2, raw_output=False):
for h in account.history(start=max_index - 4, stop=max_index, use_block_num=False, batch_size=2, raw_output=False):
h_list.append(h)
self.assertEqual(len(h_list), 5)
for i in range(1, 5):
self.assertEqual(h_list[i]["index"] - h_list[i - 1]["index"], 1)
h_list = []
max_index = account.virtual_op_count()
for h in account.history(start=max_index - 4, use_block_num=False, batch_size=6, raw_output=False):
for h in account.history(start=max_index - 4, stop=max_index, use_block_num=False, batch_size=6, raw_output=False):
h_list.append(h)
self.assertEqual(len(h_list), 5)
for i in range(1, 5):
self.assertEqual(h_list[i]["index"] - h_list[i - 1]["index"], 1)
h_list = []
max_index = account.virtual_op_count()
for h in account.history(start=max_index - 4, use_block_num=False, batch_size=2, raw_output=True):
for h in account.history(start=max_index - 4, stop=max_index, use_block_num=False, batch_size=2, raw_output=True):
h_list.append(h)
self.assertEqual(len(h_list), 5)
for i in range(1, 5):
self.assertEqual(h_list[i][0] - h_list[i - 1][0], 1)
h_list = []
max_index = account.virtual_op_count()
for h in account.history(start=max_index - 4, use_block_num=False, batch_size=6, raw_output=True):
for h in account.history(start=max_index - 4, stop=max_index, use_block_num=False, batch_size=6, raw_output=True):
h_list.append(h)
self.assertEqual(len(h_list), 5)
for i in range(1, 5):
......@@ -242,31 +239,28 @@ class Testcases(unittest.TestCase):
account = Account("gtg", steem_instance=stm)
h_list = []
max_index = account.virtual_op_count()
for h in account.history_reverse(stop=max_index - 4, use_block_num=False, batch_size=2, raw_output=False):
for h in account.history_reverse(start=max_index, stop=max_index - 4, use_block_num=False, batch_size=2, raw_output=False):
h_list.append(h)
self.assertEqual(len(h_list), 5)
for i in range(1, 5):
self.assertEqual(h_list[i]["index"] - h_list[i - 1]["index"], -1)
h_list = []
max_index = account.virtual_op_count()
for h in account.history_reverse(stop=max_index - 4, use_block_num=False, batch_size=6, raw_output=False):
for h in account.history_reverse(start=max_index, stop=max_index - 4, use_block_num=False, batch_size=6, raw_output=False):
h_list.append(h)
self.assertEqual(len(h_list), 5)
for i in range(1, 5):
self.assertEqual(h_list[i]["index"] - h_list[i - 1]["index"], -1)
h_list = []
max_index = account.virtual_op_count()
for h in account.history_reverse(stop=max_index - 4, use_block_num=False, batch_size=6, raw_output=True):
for h in account.history_reverse(start=max_index, stop=max_index - 4, use_block_num=False, batch_size=6, raw_output=True):
h_list.append(h)
self.assertEqual(len(h_list), 5)
for i in range(1, 5):
self.assertEqual(h_list[i][0] - h_list[i - 1][0], -1)
h_list = []
max_index = account.virtual_op_count()
for h in account.history_reverse(stop=max_index - 4, use_block_num=False, batch_size=2, raw_output=True):
for h in account.history_reverse(start=max_index, stop=max_index - 4, use_block_num=False, batch_size=2, raw_output=True):
h_list.append(h)
self.assertEqual(len(h_list), 5)
for i in range(1, 5):
......
......@@ -217,6 +217,13 @@ class Testcases(unittest.TestCase):
result = runner.invoke(cli, ['witnesses'])
self.assertEqual(result.exit_code, 0)
def test_votes(self):
runner = CliRunner()
result = runner.invoke(cli, ['votes', '--direction', 'out'])
self.assertEqual(result.exit_code, 0)
result = runner.invoke(cli, ['votes', '--direction', 'in'])
self.assertEqual(result.exit_code, 0)
def test_approvewitness(self):
runner = CliRunner()
result = runner.invoke(cli, ['-o', 'approvewitness', 'beem1'], input="test\n")
......
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from builtins import range
from builtins import super
import mock
import string
import unittest
import random
from pprint import pprint
from beem import Steem
from beem.amount import Amount
from beem.witness import Witness
from beem.account import Account
from beem.instance import set_shared_steem_instance, shared_steem_instance, set_shared_config
from beem.blockchain import Blockchain
from beem.block import Block
from beem.market import Market
from beem.price import Price
from beem.comment import Comment
from beem.vote import Vote
from beem.wallet import Wallet
from beem.transactionbuilder import TransactionBuilder
from beembase.operations import Transfer
from beemgraphenebase.account import PasswordKey, PrivateKey, PublicKey
from beem.utils import parse_time, formatTimedelta
from beemgrapheneapi.rpcutils import NumRetriesReached
# Py3 compatibility
import sys
core_unit = "STM"
class Testcases(unittest.TestCase):
@classmethod
def setUpClass(cls):
stm = shared_steem_instance()
stm.config.refreshBackup()
stm.set_default_nodes("")
del stm
cls.url = "https://api.steemitdev.com"
bts = Steem(
node=[cls.url],
nobroadcast=True,
num_retries=10
)
set_shared_steem_instance(bts)
@classmethod
def tearDownClass(cls):
stm = shared_steem_instance()
stm.config.recover_with_latest_backup()
def test_account(self):
acc = Account("test")
self.assertEqual(acc.steem.rpc.url, self.url)
self.assertEqual(acc["balance"].steem.rpc.url, self.url)
def test_amount(self):
o = Amount("1 SBD")
self.assertEqual(o.steem.rpc.url, self.url)
def test_block(self):
o = Block(1)
self.assertEqual(o.steem.rpc.url, self.url)
def test_blockchain(self):
o = Blockchain()
self.assertEqual(o.steem.rpc.url, self.url)
def test_comment(self):
o = Comment("@gtg/witness-gtg-log")
self.assertEqual(o.steem.rpc.url, self.url)
def test_market(self):
o = Market()
self.assertEqual(o.steem.rpc.url, self.url)
def test_price(self):
o = Price(10.0, "STEEM/SBD")
self.assertEqual(o.steem.rpc.url, self.url)
def test_vote(self):
o = Vote("@gtg/ffdhu-gtg-witness-log|gandalf")
self.assertEqual(o.steem.rpc.url, self.url)
def test_wallet(self):
o = Wallet()
self.assertEqual(o.steem.rpc.url, self.url)
def test_witness(self):
o = Witness("gtg")
self.assertEqual(o.steem.rpc.url, self.url)
def test_transactionbuilder(self):
o = TransactionBuilder()
self.assertEqual(o.steem.rpc.url, self.url)
def test_steem(self):
stm = shared_steem_instance()
stm = Steem()
del stm
o = shared_steem_instance()
self.assertEqual(o.rpc.url, self.url)
def test_config(self):
set_shared_config({"node": [self.url]})
set_shared_steem_instance(None)
o = shared_steem_instance()
self.assertEqual(o.rpc.url, self.url)
......@@ -120,6 +120,8 @@ class Testcases(unittest.TestCase):
bts = self.appbase
votes = ActiveVotes(self.authorperm, steem_instance=bts)
votes.printAsTable()
vote_list = votes.get_list()
self.assertTrue(isinstance(vote_list, list))
@parameterized.expand([
("non_appbase"),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment