def invoke_method(self, hero): reward = self.get_reward_type() result = getattr(hero, reward.hero_method)(**reward.arguments) if reward.is_NORMAL_ARTIFACT or reward.is_RARE_ARTIFACT or reward.is_EPIC_ARTIFACT: message = self.MESSAGE % {'reward': result.html_label()} else: message = self.MESSAGE % {'reward': reward.description} self.arguments['message'] = message RandomPremiumRequestPrototype.create(hero.account_id, days=payments_settings.RANDOM_PREMIUM_DAYS)
def test_run_random_premium_requests_processing__has_requests_can_not_process(self): request = RandomPremiumRequestPrototype.create(self.account.id, days=30) self.worker.run_random_premium_requests_processing() request.reload() self.assertTrue(request.state.is_WAITING)
def get_chest_intervals_count(self, date): starts = RandomPremiumRequestPrototype._db_all().values_list( 'created_at', flat=True) return len([ True for created_at in starts if created_at.date() <= date < (created_at + datetime.timedelta( days=shop_conf.payments_settings.RANDOM_PREMIUM_DAYS)).date() ])
def setUp(self): super(RandomPremiumRequestPrototypeTests, self).setUp() create_test_map() self.account_1 = self.accounts_factory.create_account() self.account_2 = self.accounts_factory.create_account() AccountPrototype._db_all().update(created_at=datetime.datetime.now() - accounts_settings.RANDOM_PREMIUM_CREATED_AT_BARRIER) self.request = RandomPremiumRequestPrototype.create(self.account_1.id, days=30)
def test_run_random_premium_requests_processing__has_requests_can_process(self): account_2 = self.accounts_factory.create_account() AccountPrototype._db_all().update(active_end_at=datetime.datetime.now() + datetime.timedelta(days=1), created_at=datetime.datetime.now() - accounts_settings.RANDOM_PREMIUM_CREATED_AT_BARRIER) request = RandomPremiumRequestPrototype.create(self.account.id, days=30) self.worker.run_random_premium_requests_processing() request.reload() self.assertTrue(request.state.is_PROCESSED) self.assertEqual(request.receiver_id, account_2.id)
def setUp(self): super(RandomPremiumRequestPrototypeTests, self).setUp() create_test_map() result, account_id, bundle_id = register_user('test_user_1', '*****@*****.**', '111111') self.account_1 = AccountPrototype.get_by_id(account_id) result, account_id, bundle_id = register_user('test_user_2', '*****@*****.**', '111111') self.account_2 = AccountPrototype.get_by_id(account_id) AccountPrototype._db_all().update(created_at=datetime.datetime.now() - accounts_settings.RANDOM_PREMIUM_CREATED_AT_BARRIER) self.request = RandomPremiumRequestPrototype.create(self.account_1.id, days=30)
def setUp(self): super(RandomPremiumRequestPrototypeTests, self).setUp() create_test_map() self.account_1 = self.accounts_factory.create_account() self.account_2 = self.accounts_factory.create_account() AccountPrototype._db_all().update( created_at=datetime.datetime.now() - accounts_settings.RANDOM_PREMIUM_CREATED_AT_BARRIER) self.request = RandomPremiumRequestPrototype.create(self.account_1.id, days=30)
def test_run_random_premium_requests_processing__has_requests_can_process(self): result, account_id, bundle_id = register_user('test_user_2', '*****@*****.**', '111111') account_2 = AccountPrototype.get_by_id(account_id) AccountPrototype._db_all().update(active_end_at=datetime.datetime.now() + datetime.timedelta(days=1), created_at=datetime.datetime.now() - accounts_settings.RANDOM_PREMIUM_CREATED_AT_BARRIER) request = RandomPremiumRequestPrototype.create(self.account.id, days=30) self.worker.run_random_premium_requests_processing() request.reload() self.assertTrue(request.state.is_PROCESSED) self.assertEqual(request.receiver_id, account_2.id)
def run_random_premium_requests_processing(self): while True: request = RandomPremiumRequestPrototype.get_unprocessed() if request is None: return self.logger.info('process random premium request %d' % request.id) if not request.process(): self.logger.info('request %d not processed' % request.id) return else: self.logger.info('request %d processed' % request.id)
def test_run_random_premium_requests_processing__has_requests_can_process( self): account_2 = self.accounts_factory.create_account() AccountPrototype._db_all().update( active_end_at=datetime.datetime.now() + datetime.timedelta(days=1), created_at=datetime.datetime.now() - accounts_settings.RANDOM_PREMIUM_CREATED_AT_BARRIER) request = RandomPremiumRequestPrototype.create(self.account.id, days=30) self.worker.run_random_premium_requests_processing() request.reload() self.assertTrue(request.state.is_PROCESSED) self.assertEqual(request.receiver_id, account_2.id)
def setUp(self): super(RandomPremiumRequestPrototypeTests, self).setUp() create_test_map() result, account_id, bundle_id = register_user('test_user_1', '*****@*****.**', '111111') self.account_1 = AccountPrototype.get_by_id(account_id) result, account_id, bundle_id = register_user('test_user_2', '*****@*****.**', '111111') self.account_2 = AccountPrototype.get_by_id(account_id) AccountPrototype._db_all().update( created_at=datetime.datetime.now() - accounts_settings.RANDOM_PREMIUM_CREATED_AT_BARRIER) self.request = RandomPremiumRequestPrototype.create(self.account_1.id, days=30)
def _check_not_used(self): self.assertEqual(self.hero.energy_bonus, 0) self.assertEqual(RandomPremiumRequestPrototype._db_count(), 0)
def _check_used(self): self.assertEqual(self.hero.energy_bonus, relations.RANDOM_PREMIUM_CHEST_REWARD.ENERGY.arguments['energy']) self.assertEqual(RandomPremiumRequestPrototype._db_count(), 1)
def _check_used(self): self.assertEqual(self.hero.bag.occupation, 1) self.assertTrue(list(self.hero.bag.values())[0].rarity.is_RARE) self.assertEqual(RandomPremiumRequestPrototype._db_count(), 1)
def _check_not_used(self): self.assertEqual(self.hero.bag.occupation, 0) self.assertEqual(RandomPremiumRequestPrototype._db_count(), 0)
def test_get_unprocessed__has_waiting(self): self.assertEqual(RandomPremiumRequestPrototype.get_unprocessed().id, self.request.id)
def test_get_unprocessed__not_exist(self): RandomPremiumRequestPrototype._db_all().delete() self.assertEqual(RandomPremiumRequestPrototype.get_unprocessed(), None)
def _check_used(self): self.assertTrue(self.hero.level > 1 or self.hero.experience > 0) self.assertEqual(RandomPremiumRequestPrototype._db_count(), 1)
def _check_used(self): self.assertEqual(self.hero.bag.occupation, 1) self.assertTrue(self.hero.bag.values()[0].rarity.is_RARE) self.assertEqual(RandomPremiumRequestPrototype._db_count(), 1)
def test_create(self): self.assertEqual(RandomPremiumRequestPrototype._db_count(), 1) self.assertEqual(self.request.days, 30) self.assertEqual(self.request.initiator_id, self.account_1.id)
def test_get_unprocessed__no_waiting(self): RandomPremiumRequestPrototype._db_all().update( state=relations.RANDOM_PREMIUM_REQUEST_STATE.PROCESSED) self.assertEqual(RandomPremiumRequestPrototype.get_unprocessed(), None)
def test_get_unprocessed__no_waiting(self): RandomPremiumRequestPrototype._db_all().update(state=relations.RANDOM_PREMIUM_REQUEST_STATE.PROCESSED) self.assertEqual(RandomPremiumRequestPrototype.get_unprocessed(), None)
def _check_not_used(self): self.assertEqual(self.hero.level, 1) self.assertEqual(self.hero.experience, 0) self.assertEqual(RandomPremiumRequestPrototype._db_count(), 0)
def _check_used(self): self.assertEqual( self.hero.energy_bonus, relations.RANDOM_PREMIUM_CHEST_REWARD.ENERGY.arguments['energy']) self.assertEqual(RandomPremiumRequestPrototype._db_count(), 1)
def _check_used(self): self.assertEqual(RandomPremiumRequestPrototype._db_count(), 1)
def get_chest_intervals_count(self, date): starts = RandomPremiumRequestPrototype._db_all().values_list('created_at', flat=True) return len([True for created_at in starts if created_at.date() <= date < (created_at + datetime.timedelta(days=shop_conf.payments_settings.RANDOM_PREMIUM_DAYS)).date()] )