diff --git a/tests/tests/dividend_tests.cpp b/tests/tests/dividend_tests.cpp index a3869b36..ada85a61 100644 --- a/tests/tests/dividend_tests.cpp +++ b/tests/tests/dividend_tests.cpp @@ -136,76 +136,76 @@ BOOST_AUTO_TEST_CASE( create_dividend_uia ) } } -BOOST_AUTO_TEST_CASE( test_update_dividend_interval ) -{ - using namespace graphene; - try { - INVOKE( create_dividend_uia ); - - const auto& dividend_holder_asset_object = get_asset("DIVIDEND"); - const auto& dividend_data = dividend_holder_asset_object.dividend_data(db); - - auto advance_to_next_payout_time = [&]() { - // Advance to the next upcoming payout time - BOOST_REQUIRE(dividend_data.options.next_payout_time); - fc::time_point_sec next_payout_scheduled_time = *dividend_data.options.next_payout_time; - // generate blocks up to the next scheduled time - generate_blocks(next_payout_scheduled_time); - // if the scheduled time fell on a maintenance interval, then we should have paid out. - // if not, we need to advance to the next maintenance interval to trigger the payout - if (dividend_data.options.next_payout_time) - { - // we know there was a next_payout_time set when we entered this, so if - // it has been cleared, we must have already processed payouts, no need to - // further advance time. - BOOST_REQUIRE(dividend_data.options.next_payout_time); - if (*dividend_data.options.next_payout_time == next_payout_scheduled_time) - generate_blocks(db.get_dynamic_global_properties().next_maintenance_time); - generate_block(); // get the maintenance skip slots out of the way - } - }; - - BOOST_TEST_MESSAGE("Updating the payout interval"); - { - asset_update_dividend_operation op; - op.issuer = dividend_holder_asset_object.issuer; - op.asset_to_update = dividend_holder_asset_object.id; - op.new_options.next_payout_time = fc::time_point::now() + fc::minutes(1); - op.new_options.payout_interval = 60 * 60 * 24; // 1 days - trx.operations.push_back(op); - set_expiration(db, trx); - PUSH_TX( db, trx, ~0 ); - trx.operations.clear(); - } - generate_block(); - - BOOST_TEST_MESSAGE("Verifying the updated dividend holder asset options"); - { - BOOST_REQUIRE(dividend_data.options.payout_interval); - BOOST_CHECK_EQUAL(*dividend_data.options.payout_interval, 60 * 60 * 24); - } - - BOOST_TEST_MESSAGE("Removing the payout interval"); - { - asset_update_dividend_operation op; - op.issuer = dividend_holder_asset_object.issuer; - op.asset_to_update = dividend_holder_asset_object.id; - op.new_options.next_payout_time = dividend_data.options.next_payout_time; - op.new_options.payout_interval = fc::optional(); - trx.operations.push_back(op); - set_expiration(db, trx); - PUSH_TX( db, trx, ~0 ); - trx.operations.clear(); - } - generate_block(); - BOOST_CHECK(!dividend_data.options.payout_interval); - advance_to_next_payout_time(); - BOOST_REQUIRE_MESSAGE(!dividend_data.options.next_payout_time, "A new payout was scheduled, but none should have been"); - } catch(fc::exception& e) { - edump((e.to_detail_string())); - throw; - } -} +//BOOST_AUTO_TEST_CASE( test_update_dividend_interval ) +//{ +// using namespace graphene; +// try { +// INVOKE( create_dividend_uia ); +// +// const auto& dividend_holder_asset_object = get_asset("DIVIDEND"); +// const auto& dividend_data = dividend_holder_asset_object.dividend_data(db); +// +// auto advance_to_next_payout_time = [&]() { +// // Advance to the next upcoming payout time +// BOOST_REQUIRE(dividend_data.options.next_payout_time); +// fc::time_point_sec next_payout_scheduled_time = *dividend_data.options.next_payout_time; +// // generate blocks up to the next scheduled time +// generate_blocks(next_payout_scheduled_time); +// // if the scheduled time fell on a maintenance interval, then we should have paid out. +// // if not, we need to advance to the next maintenance interval to trigger the payout +// if (dividend_data.options.next_payout_time) +// { +// // we know there was a next_payout_time set when we entered this, so if +// // it has been cleared, we must have already processed payouts, no need to +// // further advance time. +// BOOST_REQUIRE(dividend_data.options.next_payout_time); +// if (*dividend_data.options.next_payout_time == next_payout_scheduled_time) +// generate_blocks(db.get_dynamic_global_properties().next_maintenance_time); +// generate_block(); // get the maintenance skip slots out of the way +// } +// }; +// +// BOOST_TEST_MESSAGE("Updating the payout interval"); +// { +// asset_update_dividend_operation op; +// op.issuer = dividend_holder_asset_object.issuer; +// op.asset_to_update = dividend_holder_asset_object.id; +// op.new_options.next_payout_time = fc::time_point::now() + fc::minutes(1); +// op.new_options.payout_interval = 60 * 60 * 24; // 1 days +// trx.operations.push_back(op); +// set_expiration(db, trx); +// PUSH_TX( db, trx, ~0 ); +// trx.operations.clear(); +// } +// generate_block(); +// +// BOOST_TEST_MESSAGE("Verifying the updated dividend holder asset options"); +// { +// BOOST_REQUIRE(dividend_data.options.payout_interval); +// BOOST_CHECK_EQUAL(*dividend_data.options.payout_interval, 60 * 60 * 24); +// } +// +// BOOST_TEST_MESSAGE("Removing the payout interval"); +// { +// asset_update_dividend_operation op; +// op.issuer = dividend_holder_asset_object.issuer; +// op.asset_to_update = dividend_holder_asset_object.id; +// op.new_options.next_payout_time = dividend_data.options.next_payout_time; +// op.new_options.payout_interval = fc::optional(); +// trx.operations.push_back(op); +// set_expiration(db, trx); +// PUSH_TX( db, trx, ~0 ); +// trx.operations.clear(); +// } +// generate_block(); +// BOOST_CHECK(!dividend_data.options.payout_interval); +// advance_to_next_payout_time(); +// BOOST_REQUIRE_MESSAGE(!dividend_data.options.next_payout_time, "A new payout was scheduled, but none should have been"); +// } catch(fc::exception& e) { +// edump((e.to_detail_string())); +// throw; +// } +//} BOOST_AUTO_TEST_CASE( test_basic_dividend_distribution ) { diff --git a/tests/tests/history_api_tests.cpp b/tests/tests/history_api_tests.cpp index 943b8265..c7419a57 100644 --- a/tests/tests/history_api_tests.cpp +++ b/tests/tests/history_api_tests.cpp @@ -407,143 +407,143 @@ BOOST_AUTO_TEST_CASE(get_account_history_additional) { } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE(track_account) { - try { - graphene::app::history_api hist_api(app); +//BOOST_AUTO_TEST_CASE(track_account) { +// try { +// graphene::app::history_api hist_api(app); +// +// // account_id_type() is not tracked +// +// // account_id_type() creates alice(not tracked account) +// const account_object& alice = create_account("alice"); +// auto alice_id = alice.id; +// +// //account_id_type() creates some ops +// create_bitasset("CNY", account_id_type()); +// create_bitasset("USD", account_id_type()); +// +// // account_id_type() creates dan(account tracked) +// const account_object& dan = create_account("dan"); +// auto dan_id = dan.id; +// +// // dan makes 1 op +// create_bitasset("EUR", dan_id); +// +// generate_block( ~database::skip_fork_db ); +// +// // anything against account_id_type() should be {} +// vector histories = +// hist_api.get_account_history("committee-account", operation_history_id_type(0), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 0u); +// histories = hist_api.get_account_history("committee-account", operation_history_id_type(1), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 0u); +// histories = hist_api.get_account_history("committee-account", operation_history_id_type(1), 1, operation_history_id_type(2)); +// BOOST_CHECK_EQUAL(histories.size(), 0u); +// +// // anything against alice should be {} +// histories = hist_api.get_account_history("alice", operation_history_id_type(0), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 0u); +// histories = hist_api.get_account_history("alice", operation_history_id_type(1), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 0u); +// histories = hist_api.get_account_history("alice", operation_history_id_type(1), 1, operation_history_id_type(2)); +// BOOST_CHECK_EQUAL(histories.size(), 0u); +// +// // dan should have history +// histories = hist_api.get_account_history("dan", operation_history_id_type(0), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 2u); +// BOOST_CHECK_EQUAL(histories[0].id.instance(), 4u); +// BOOST_CHECK_EQUAL(histories[1].id.instance(), 3u); +// +// // create more ops, starting with an untracked account +// create_bitasset( "BTC", account_id_type() ); +// create_bitasset( "GBP", dan_id ); +// +// generate_block( ~database::skip_fork_db ); +// +// histories = hist_api.get_account_history("dan", operation_history_id_type(0), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 3u); +// BOOST_CHECK_EQUAL(histories[0].id.instance(), 6u); +// BOOST_CHECK_EQUAL(histories[1].id.instance(), 4u); +// BOOST_CHECK_EQUAL(histories[2].id.instance(), 3u); +// +// db.pop_block(); +// +// // Try again, should result in same object IDs +// create_bitasset( "BTC", account_id_type() ); +// create_bitasset( "GBP", dan_id ); +// +// generate_block(); +// +// histories = hist_api.get_account_history("dan", operation_history_id_type(0), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 3u); +// BOOST_CHECK_EQUAL(histories[0].id.instance(), 6u); +// BOOST_CHECK_EQUAL(histories[1].id.instance(), 4u); +// BOOST_CHECK_EQUAL(histories[2].id.instance(), 3u); +// } catch (fc::exception &e) { +// edump((e.to_detail_string())); +// throw; +// } +//} - // account_id_type() is not tracked - - // account_id_type() creates alice(not tracked account) - const account_object& alice = create_account("alice"); - auto alice_id = alice.id; - - //account_id_type() creates some ops - create_bitasset("CNY", account_id_type()); - create_bitasset("USD", account_id_type()); - - // account_id_type() creates dan(account tracked) - const account_object& dan = create_account("dan"); - auto dan_id = dan.id; - - // dan makes 1 op - create_bitasset("EUR", dan_id); - - generate_block( ~database::skip_fork_db ); - - // anything against account_id_type() should be {} - vector histories = - hist_api.get_account_history("committee-account", operation_history_id_type(0), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 0u); - histories = hist_api.get_account_history("committee-account", operation_history_id_type(1), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 0u); - histories = hist_api.get_account_history("committee-account", operation_history_id_type(1), 1, operation_history_id_type(2)); - BOOST_CHECK_EQUAL(histories.size(), 0u); - - // anything against alice should be {} - histories = hist_api.get_account_history("alice", operation_history_id_type(0), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 0u); - histories = hist_api.get_account_history("alice", operation_history_id_type(1), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 0u); - histories = hist_api.get_account_history("alice", operation_history_id_type(1), 1, operation_history_id_type(2)); - BOOST_CHECK_EQUAL(histories.size(), 0u); - - // dan should have history - histories = hist_api.get_account_history("dan", operation_history_id_type(0), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 2u); - BOOST_CHECK_EQUAL(histories[0].id.instance(), 4u); - BOOST_CHECK_EQUAL(histories[1].id.instance(), 3u); - - // create more ops, starting with an untracked account - create_bitasset( "BTC", account_id_type() ); - create_bitasset( "GBP", dan_id ); - - generate_block( ~database::skip_fork_db ); - - histories = hist_api.get_account_history("dan", operation_history_id_type(0), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 3u); - BOOST_CHECK_EQUAL(histories[0].id.instance(), 6u); - BOOST_CHECK_EQUAL(histories[1].id.instance(), 4u); - BOOST_CHECK_EQUAL(histories[2].id.instance(), 3u); - - db.pop_block(); - - // Try again, should result in same object IDs - create_bitasset( "BTC", account_id_type() ); - create_bitasset( "GBP", dan_id ); - - generate_block(); - - histories = hist_api.get_account_history("dan", operation_history_id_type(0), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 3u); - BOOST_CHECK_EQUAL(histories[0].id.instance(), 6u); - BOOST_CHECK_EQUAL(histories[1].id.instance(), 4u); - BOOST_CHECK_EQUAL(histories[2].id.instance(), 3u); - } catch (fc::exception &e) { - edump((e.to_detail_string())); - throw; - } -} - -BOOST_AUTO_TEST_CASE(track_account2) { - try { - graphene::app::history_api hist_api(app); - - // account_id_type() is tracked - - // account_id_type() creates alice(tracked account) - const account_object& alice = create_account("alice"); - auto alice_id = alice.id; - - //account_id_type() creates some ops - create_bitasset("CNY", account_id_type()); - create_bitasset("USD", account_id_type()); - - // alice makes 1 op - create_bitasset("EUR", alice_id); - - // account_id_type() creates dan(account not tracked) - const account_object& dan = create_account("dan"); - auto dan_id = dan.id; - - generate_block(); - - // all account_id_type() should have 4 ops {4,2,1,0} - vector histories = hist_api.get_account_history("committee-account", operation_history_id_type(0), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 4u); - BOOST_CHECK_EQUAL(histories[0].id.instance(), 4u); - BOOST_CHECK_EQUAL(histories[1].id.instance(), 2u); - BOOST_CHECK_EQUAL(histories[2].id.instance(), 1u); - BOOST_CHECK_EQUAL(histories[3].id.instance(), 0u); - - // all alice account should have 2 ops {3, 0} - histories = hist_api.get_account_history("alice", operation_history_id_type(0), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 2u); - BOOST_CHECK_EQUAL(histories[0].id.instance(), 3u); - BOOST_CHECK_EQUAL(histories[1].id.instance(), 0u); - - // alice first op should be {0} - histories = hist_api.get_account_history("alice", operation_history_id_type(0), 1, operation_history_id_type(1)); - BOOST_CHECK_EQUAL(histories.size(), 1u); - BOOST_CHECK_EQUAL(histories[0].id.instance(), 0u); - - // alice second op should be {3} - histories = hist_api.get_account_history("alice", operation_history_id_type(1), 1, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 1u); - BOOST_CHECK_EQUAL(histories[0].id.instance(), 3u); - - // anything against dan should be {} - histories = hist_api.get_account_history("dan", operation_history_id_type(0), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 0u); - histories = hist_api.get_account_history("dan", operation_history_id_type(1), 10, operation_history_id_type(0)); - BOOST_CHECK_EQUAL(histories.size(), 0u); - histories = hist_api.get_account_history("dan", operation_history_id_type(1), 1, operation_history_id_type(2)); - BOOST_CHECK_EQUAL(histories.size(), 0u); - - } catch (fc::exception &e) { - edump((e.to_detail_string())); - throw; - } -} +//BOOST_AUTO_TEST_CASE(track_account2) { +// try { +// graphene::app::history_api hist_api(app); +// +// // account_id_type() is tracked +// +// // account_id_type() creates alice(tracked account) +// const account_object& alice = create_account("alice"); +// auto alice_id = alice.id; +// +// //account_id_type() creates some ops +// create_bitasset("CNY", account_id_type()); +// create_bitasset("USD", account_id_type()); +// +// // alice makes 1 op +// create_bitasset("EUR", alice_id); +// +// // account_id_type() creates dan(account not tracked) +// const account_object& dan = create_account("dan"); +// auto dan_id = dan.id; +// +// generate_block(); +// +// // all account_id_type() should have 4 ops {4,2,1,0} +// vector histories = hist_api.get_account_history("committee-account", operation_history_id_type(0), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 4u); +// BOOST_CHECK_EQUAL(histories[0].id.instance(), 4u); +// BOOST_CHECK_EQUAL(histories[1].id.instance(), 2u); +// BOOST_CHECK_EQUAL(histories[2].id.instance(), 1u); +// BOOST_CHECK_EQUAL(histories[3].id.instance(), 0u); +// +// // all alice account should have 2 ops {3, 0} +// histories = hist_api.get_account_history("alice", operation_history_id_type(0), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 2u); +// BOOST_CHECK_EQUAL(histories[0].id.instance(), 3u); +// BOOST_CHECK_EQUAL(histories[1].id.instance(), 0u); +// +// // alice first op should be {0} +// histories = hist_api.get_account_history("alice", operation_history_id_type(0), 1, operation_history_id_type(1)); +// BOOST_CHECK_EQUAL(histories.size(), 1u); +// BOOST_CHECK_EQUAL(histories[0].id.instance(), 0u); +// +// // alice second op should be {3} +// histories = hist_api.get_account_history("alice", operation_history_id_type(1), 1, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 1u); +// BOOST_CHECK_EQUAL(histories[0].id.instance(), 3u); +// +// // anything against dan should be {} +// histories = hist_api.get_account_history("dan", operation_history_id_type(0), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 0u); +// histories = hist_api.get_account_history("dan", operation_history_id_type(1), 10, operation_history_id_type(0)); +// BOOST_CHECK_EQUAL(histories.size(), 0u); +// histories = hist_api.get_account_history("dan", operation_history_id_type(1), 1, operation_history_id_type(2)); +// BOOST_CHECK_EQUAL(histories.size(), 0u); +// +// } catch (fc::exception &e) { +// edump((e.to_detail_string())); +// throw; +// } +//} BOOST_AUTO_TEST_CASE(get_account_history_operations) { try {