Refactored canceling of the sub events of the event_group. Moved that logic to the event_group_object. Updated tests to control canceling of markets and market_groups.
This commit is contained in:
parent
c4612cbed1
commit
0b1e165bf3
4 changed files with 38 additions and 11 deletions
|
|
@ -108,17 +108,12 @@ void_result event_group_delete_evaluator::do_apply(const event_group_delete_oper
|
|||
{ try {
|
||||
database& _db = db();
|
||||
|
||||
const auto& events_for_group = _db.get_index_type<event_object_index>().indices().get<by_event_group_id>();
|
||||
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);
|
||||
});
|
||||
}
|
||||
const auto& event_group = _db.get(op.event_group_id);
|
||||
_db.modify(event_group, [&](event_group_object& mutable_event_group) {
|
||||
mutable_event_group.cancel_events(_db);
|
||||
});
|
||||
|
||||
_db.remove(_db.get(op.event_group_id));
|
||||
_db.remove(event_group);
|
||||
return void_result();
|
||||
} FC_CAPTURE_AND_RETHROW( (op) ) }
|
||||
|
||||
|
|
|
|||
22
libraries/chain/event_group_object.cpp
Normal file
22
libraries/chain/event_group_object.cpp
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#define DEFAULT_LOGGER "betting"
|
||||
|
||||
#include <graphene/chain/event_group_object.hpp>
|
||||
#include <graphene/chain/event_object.hpp>
|
||||
#include <graphene/chain/database.hpp>
|
||||
|
||||
namespace graphene { namespace chain {
|
||||
|
||||
void event_group_object::cancel_events(database& db)
|
||||
{
|
||||
const auto& events_for_group = db.get_index_type<event_object_index>().indices().get<by_event_group_id>();
|
||||
auto event_it = events_for_group.lower_bound(id);
|
||||
auto event_end_it = events_for_group.upper_bound(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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}}
|
||||
|
|
@ -41,6 +41,8 @@ class event_group_object : public graphene::db::abstract_object< event_group_obj
|
|||
|
||||
internationalized_string_type name;
|
||||
sport_id_type sport_id;
|
||||
|
||||
void cancel_events(database& db);
|
||||
};
|
||||
|
||||
typedef multi_index_container<
|
||||
|
|
|
|||
|
|
@ -1587,13 +1587,16 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test)
|
|||
{
|
||||
try
|
||||
{
|
||||
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);
|
||||
|
||||
const auto& market_group = create_betting_market_group({{"en", "Moneyline1"}}, event_1.id, betting_market_rules.id, asset_id_type(), false, 0);
|
||||
const auto& market_1 = create_betting_market(market_group.id, {{"en", "M. Cilic defeats R. Federer1"}});
|
||||
const auto& market_2 = create_betting_market(market_group.id, {{"en", "M. Cilic defeats R. Federer2"}});
|
||||
|
||||
delete_event_group(nhl.id);
|
||||
|
||||
const auto& event_group_by_id = db.get_index_type<event_group_object_index>().indices().get<by_id>();
|
||||
|
|
@ -1602,6 +1605,11 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test)
|
|||
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());
|
||||
|
||||
BOOST_CHECK(betting_market_group_status::canceled == market_group.get_status());
|
||||
|
||||
BOOST_CHECK(betting_market_status::canceled == market_1.get_status());
|
||||
BOOST_CHECK(betting_market_status::canceled == market_2.get_status());
|
||||
} FC_LOG_AND_RETHROW()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue