def test_create_post_vs_banner(wallet_3hf: Wallet, post_budget, banner_budget): new_budget = copy(post_budget) update_budget_time(wallet_3hf, post_budget) validate_response(wallet_3hf.create_budget(**post_budget), wallet_3hf.create_budget.__name__) update_budget_time(wallet_3hf, banner_budget) validate_response(wallet_3hf.create_budget(**banner_budget), wallet_3hf.create_budget.__name__) update_budget_balance(wallet_3hf, post_budget) # update budget params / set budget id update_budget_balance(wallet_3hf, banner_budget) # update budget params / set budget id assert post_budget["id"] == banner_budget["id"] # both = 0 assert len(wallet_3hf.get_budgets([post_budget['owner']], post_budget['type'])) == 1 assert len(wallet_3hf.get_budgets([banner_budget['owner']], banner_budget['type'])) == 1 budgets_summary = wallet_3hf.get_dynamic_global_properties()['advertising'] assert all( Amount(budgets_summary[DGP_BUDGETS[b['type']]][k]) == Amount(b[v]) for k, v in DGP_PARAMS_MAP.items() for b in [banner_budget, post_budget] ) update_budget_time(wallet_3hf, new_budget) new_budget.update({'uuid': gen_uid()}) validate_response(wallet_3hf.create_budget(**new_budget), wallet_3hf.create_budget.__name__) assert len(wallet_3hf.get_budgets([post_budget['owner']], post_budget['type'])) == 2
def test_close_after_starttime(wallet_3hf: Wallet, budget, moderator): update_budget_time(wallet_3hf, budget) budget_balance = Amount(budget["balance"]) balance_before = wallet_3hf.get_account_scr_balance(budget["owner"]) response = wallet_3hf.create_budget(**budget) create_block = response["block_num"] update_budget_balance(wallet_3hf, budget) # update budget params / set budget id per_block = Amount(budget["per_block"]) balance_after_create = wallet_3hf.get_account_scr_balance(budget["owner"]) assert balance_before - balance_after_create == budget_balance empower_advertising_moderator(wallet_3hf, moderator) response = wallet_3hf.close_budget_by_advertising_moderator( budget["uuid"], moderator, budget["type"]) validate_response( response, wallet_3hf.close_budget_by_advertising_moderator.__name__) close_block = response["block_num"] balance_after_close = wallet_3hf.get_account_scr_balance(budget["owner"]) assert balance_after_close == balance_after_create + budget_balance - per_block * ( close_block - create_block) check_virt_ops( wallet_3hf, close_block, close_block, { 'close_budget_by_advertising_moderator', 'budget_closing', 'budget_owner_income', 'budget_outgo' }) assert len(wallet_3hf.get_budgets([budget['owner']], budget['type'])) == 0 assert len(wallet_3hf.list_buddget_owners(budget_type=budget['type'])) == 0
def test_close_before_starttime(wallet_3hf: Wallet, budget, moderator): update_budget_time(wallet_3hf, budget, start=30, deadline=60) # to delay opening time for budget budget_balance = Amount(budget["balance"]) balance_before = wallet_3hf.get_account_scr_balance(budget["owner"]) wallet_3hf.create_budget(**budget) update_budget_balance(wallet_3hf, budget) # update budget params / set budget id balance_after_create = wallet_3hf.get_account_scr_balance(budget["owner"]) assert balance_before - balance_after_create == budget_balance empower_advertising_moderator(wallet_3hf, moderator) response = wallet_3hf.close_budget_by_advertising_moderator( budget["uuid"], moderator, budget["type"]) validate_response( response, wallet_3hf.close_budget_by_advertising_moderator.__name__) balance_after_close = wallet_3hf.get_account_scr_balance(budget["owner"]) assert balance_after_close == balance_after_create + budget_balance check_virt_ops( wallet_3hf, response['block_num'], response['block_num'], { 'close_budget_by_advertising_moderator', 'budget_closing', 'budget_owner_income' }) assert len(wallet_3hf.get_budgets([budget['owner']], budget['type'])) == 0 assert len(wallet_3hf.list_buddget_owners(budget_type=budget['type'])) == 0
def test_close_post_vs_banner(wallet_3hf: Wallet, moderator, post_budget, banner_budget): new_budget = copy(post_budget) update_budget_time(wallet_3hf, post_budget) wallet_3hf.create_budget(**post_budget) update_budget_balance(wallet_3hf, post_budget) # update budget params / set budget id update_budget_time(wallet_3hf, banner_budget) wallet_3hf.create_budget(**banner_budget) update_budget_balance( wallet_3hf, banner_budget) # update budget params / set budget id assert post_budget["id"] == banner_budget["id"] # both = 0 empower_advertising_moderator(wallet_3hf, moderator) response = wallet_3hf.close_budget_by_advertising_moderator( post_budget["uuid"], moderator, post_budget["type"]) validate_response( response, wallet_3hf.close_budget_by_advertising_moderator.__name__) post_budgets = wallet_3hf.get_budgets([post_budget['owner']], post_budget['type']) assert len(post_budgets) == 0 banner_budgets = wallet_3hf.get_budgets([banner_budget['owner']], banner_budget['type']) assert len(banner_budgets) == 1 update_budget_time(wallet_3hf, new_budget) new_budget.update({'uuid': gen_uid()}) validate_response(wallet_3hf.create_budget(**new_budget), wallet_3hf.create_budget.__name__) update_budget_balance(wallet_3hf, new_budget) # update budget params / set budget id assert new_budget["id"] > banner_budget[ "id"], "Newly created budget should have incremented index"
def test_close_post_vs_banner(wallet_3hf: Wallet, post_budget, banner_budget): new_budget = copy(post_budget) update_budget_time(wallet_3hf, post_budget) wallet_3hf.create_budget(**post_budget) update_budget_balance(wallet_3hf, post_budget) # update budget params / set budget id update_budget_time(wallet_3hf, banner_budget) wallet_3hf.create_budget(**banner_budget) update_budget_balance(wallet_3hf, banner_budget) # update budget params / set budget id assert post_budget["id"] == banner_budget["id"] # both = 0 response = wallet_3hf.close_budget(post_budget['uuid'], post_budget["owner"], post_budget["type"]) validate_response(response, wallet_3hf.close_budget.__name__) post_budgets = wallet_3hf.get_budgets([post_budget['owner']], post_budget['type']) assert len(post_budgets) == 0 banner_budgets = wallet_3hf.get_budgets([banner_budget['owner']], banner_budget['type']) assert len(banner_budgets) == 1 update_budget_time(wallet_3hf, new_budget) validate_response(wallet_3hf.create_budget(**new_budget), wallet_3hf.create_budget.__name__) update_budget_balance(wallet_3hf, new_budget) # update budget params / set budget id assert new_budget["id"] > banner_budget["id"], "Newly created budget should have incremented index"
def test_close_before_starttime(wallet_3hf: Wallet, budget): update_budget_time(wallet_3hf, budget, start=30, deadline=60) # to delay opening time for budget balance_before = wallet_3hf.get_account_scr_balance(budget["owner"]) wallet_3hf.create_budget(**budget) update_budget_balance(wallet_3hf, budget) # update budget params / set budget id response = wallet_3hf.close_budget(budget['uuid'], budget["owner"], budget["type"]) validate_response(response, wallet_3hf.close_budget.__name__) balance_after = wallet_3hf.get_account_scr_balance(budget["owner"]) assert balance_after == balance_before check_virt_ops( wallet_3hf, response['block_num'], response['block_num'], {'close_budget', 'budget_closing', 'budget_owner_income'} ) assert len(wallet_3hf.get_budgets([budget['owner']], budget['type'])) == 0 assert len(wallet_3hf.list_buddget_owners(budget_type=budget['type'])) == 0
def test_create_budgets(wallet_3hf: Wallet, node, opened_budgets_same_acc, budget): assert len(wallet_3hf.get_budgets([budget['owner']], budget['type'])) == len(opened_budgets_same_acc) budgets_summary = wallet_3hf.get_dynamic_global_properties()['advertising'] for b in opened_budgets_same_acc: update_budget_balance(wallet_3hf, b) # check that sum of budgets 'param' == summary 'param' in DGP assert all( sum([Amount(b[v]) for b in opened_budgets_same_acc], Amount("0 SCR")) == Amount( budgets_summary[DGP_BUDGETS[budget['type']]][k] ) for k, v in DGP_PARAMS_MAP.items() )
def test_close_budgets(wallet_3hf: Wallet, opened_budgets_same_acc): budgets = opened_budgets_same_acc # just renaming validate_response( wallet_3hf.close_budget(budgets[0]["uuid"], budgets[0]["owner"], budgets[0]["type"]), wallet_3hf.close_budget.__name__ ) rest_budgets = wallet_3hf.get_budgets([budgets[-1]["owner"]], budgets[-1]["type"]) assert len(rest_budgets) == len(budgets) - 1 assert all(rb["id"] != budgets[0]["id"] for rb in rest_budgets) # delete already deleted validate_error_response( wallet_3hf.close_budget(budgets[0]['uuid'], budgets[0]["owner"], budgets[0]["type"]), wallet_3hf.close_budget.__name__, RE_BUDGET_NOT_EXIST )
def test_create_budget(wallet: Wallet): owner = DEFAULT_WITNESS response = wallet.create_budget(owner, Amount("10.000000000 SCR"), fmt_time_from_now(10), fmt_time_from_now(40)) validate_response(response, wallet.create_budget.__name__) budget = wallet.get_budgets(owner)[0] print(budget) per_block_for_10_blocks_budget = Amount('1.000000000 SCR') per_block_for_9_blocks_budget = Amount('1.034482758 SCR') assert owner in wallet.list_buddget_owners() assert Amount(budget['per_block']) in (per_block_for_10_blocks_budget, per_block_for_9_blocks_budget) assert budget['owner'] == owner
def test_close_budgets(wallet_3hf: Wallet, moderator, opened_budgets_same_acc): budgets = opened_budgets_same_acc # just renaming empower_advertising_moderator(wallet_3hf, moderator) validate_response( wallet_3hf.close_budget_by_advertising_moderator( budgets[0]["uuid"], moderator, budgets[0]["type"]), wallet_3hf.close_budget_by_advertising_moderator.__name__) rest_budgets = wallet_3hf.get_budgets([budgets[-1]["owner"]], budgets[-1]["type"]) assert len(rest_budgets) == len(budgets) - 1 assert all(rb["id"] != budgets[0]["id"] for rb in rest_budgets) # delete already deleted validate_error_response( wallet_3hf.close_budget_by_advertising_moderator( budgets[0]["uuid"], moderator, budgets[0]["type"]), wallet_3hf.close_budget_by_advertising_moderator.__name__, RE_BUDGET_NOT_EXIST)
def test_close_after_starttime(wallet_3hf: Wallet, budget): update_budget_time(wallet_3hf, budget) balance_before = wallet_3hf.get_account_scr_balance(budget["owner"]) response = wallet_3hf.create_budget(**budget) create_block = response["block_num"] update_budget_balance(wallet_3hf, budget) # update budget params / set budget id per_block = Amount(budget["per_block"]) response = wallet_3hf.close_budget(budget['uuid'], budget["owner"], budget["type"]) validate_response(response, wallet_3hf.close_budget.__name__) close_block = response["block_num"] balance_after = wallet_3hf.get_account_scr_balance(budget["owner"]) assert balance_before == balance_after + per_block * (close_block - create_block) check_virt_ops( wallet_3hf, close_block, close_block, {'close_budget', 'budget_closing', 'budget_outgo', 'budget_owner_income'} ) assert len(wallet_3hf.get_budgets([budget['owner']], budget['type'])) == 0 assert len(wallet_3hf.list_buddget_owners(budget_type=budget['type'])) == 0