def apply_go_story(dog: Dog, context: str, now: datetime) -> None: create_story(dog) add_dog_action_event(dog_from=dog, dog_to=None, context=context, type=DogActionEventType.GO_STORY, created_at=now)
def apply_meet_another_random_dog(dog: Dog, another_dog: Dog, context: str, now: datetime) -> bool: if another_dog is not None and another_dog.id != dog.id: add_dog_action_event(dog_from=dog, dog_to=another_dog, context=context, type=DogActionEventType.MEET_ANOTHER_DOG, created_at=now) return True else: return False
def apply_find_tennis_ball(dog: Dog, context: str, now: datetime) -> None: # account level account: Account = dog.account account.number_tennis_ball = account.number_tennis_ball + 1 account.save() # dog action level add_dog_action_event(dog_from=dog, dog_to=None, context=context, type=DogActionEventType.FIND_TENNIS_BALL, created_at=now)
def apply_find_fitness_cookie(dog: Dog, context: str, now: datetime) -> None: # account level account: Account = dog.account account.number_fitness_cookie = account.number_fitness_cookie + 1 account.save() # dog action level add_dog_action_event(dog_from=dog, dog_to=None, context=context, type=DogActionEventType.FIND_FITNESS_COOKIE, created_at=now)
def apply_find_magic_bone(dog: Dog, context: str, now: datetime) -> None: # account level account: Account = dog.account account.number_magic_bone = account.number_magic_bone + 1 account.save() # dog action level add_dog_action_event(dog_from=dog, dog_to=None, context=context, type=DogActionEventType.FIND_MAGIC_BONE, created_at=now)
def test_add_dog_action_event(self): event1: DogActionEvent = add_dog_action_event( fetch_dog('id_public_1'), fetch_dog('id_public_2'), 'TEST_CONTEXT', 'TEST_TYPE', datetime(year=2000, month=1, day=3, tzinfo=UTC)) self.assertNotEqual(event1.id, None) self.assertEqual(event1, DogActionEvent.objects.filter(id=event1.id).first()) self.assertEqual(1, DogActionEvent.objects.count()) event2: DogActionEvent = add_dog_action_event( fetch_dog('id_public_1'), None, 'TEST_CONTEXT', 'TEST_TYPE', datetime(year=2000, month=1, day=3, tzinfo=UTC)) self.assertNotEqual(event2.id, None) self.assertEqual(event2, DogActionEvent.objects.filter(id=event2.id).first()) self.assertEqual(2, DogActionEvent.objects.count())