From c4612cbed1ee3081b0452e4ab5ba481f11dd4318 Mon Sep 17 00:00:00 2001 From: Apr Team Date: Sat, 12 May 2018 14:57:05 +0300 Subject: [PATCH] Added canceling of the sub events for the removed event_group. --- libraries/chain/event_group_evaluator.cpp | 12 ++++++++++++ tests/betting/betting_tests.cpp | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/libraries/chain/event_group_evaluator.cpp b/libraries/chain/event_group_evaluator.cpp index c714d7f3..bb811d59 100644 --- a/libraries/chain/event_group_evaluator.cpp +++ b/libraries/chain/event_group_evaluator.cpp @@ -23,6 +23,7 @@ */ #include #include +#include #include #include #include @@ -106,6 +107,17 @@ void_result event_group_delete_evaluator::do_evaluate(const event_group_delete_o void_result event_group_delete_evaluator::do_apply(const event_group_delete_operation& op) { try { database& _db = db(); + + const auto& events_for_group = _db.get_index_type().indices().get(); + auto event_it = events_for_group.lower_bound(op.event_group_id); + auto event_end_it = events_for_group.upper_bound(op.event_group_id); + for (; event_it != event_end_it; ++event_it) + { + _db.modify( *event_it, [&](event_object& event_obj) { + event_obj.dispatch_new_status(_db, event_status::canceled); + }); + } + _db.remove(_db.get(op.event_group_id)); return void_result(); } FC_CAPTURE_AND_RETHROW( (op) ) } diff --git a/tests/betting/betting_tests.cpp b/tests/betting/betting_tests.cpp index 62d1cb69..2329d0da 100644 --- a/tests/betting/betting_tests.cpp +++ b/tests/betting/betting_tests.cpp @@ -1590,9 +1590,18 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test) ACTORS( (alice)(bob) ); CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); + const auto& event_1 = create_event({{"en", "Washington Capitals/Chicago Blackhawks1"}}, {{"en", "2016-17"}}, nhl.id); + const auto& event_2 = create_event({{"en", "Washington Capitals/Chicago Blackhawks2"}}, {{"en", "2016-17"}}, nhl.id); + const auto& event_3 = create_event({{"en", "Washington Capitals/Chicago Blackhawks3"}}, {{"en", "2016-17"}}, nhl.id); + delete_event_group(nhl.id); + const auto& event_group_by_id = db.get_index_type().indices().get(); BOOST_CHECK(event_group_by_id.end() == event_group_by_id.find(nhl.id)); + + BOOST_CHECK(event_status::canceled == event_1.get_status()); + BOOST_CHECK(event_status::canceled == event_2.get_status()); + BOOST_CHECK(event_status::canceled == event_3.get_status()); } FC_LOG_AND_RETHROW() }