コード例 #1
0
 def __enter__(self):
     self.user = User(name=self.username,
                      password=self.password,
                      dust=self.dust,
                      gold=self.gold)
     self.user.save()
     return self
コード例 #2
0
 def setup_sample_user(self):
     # Creating the user and saving it into the database
     user = User(name=self.SAMPLE_USER_NAME,
                 password=self.SAMPLE_USER_PASSWORD,
                 gold=0,
                 dust=0)
     user.save()
コード例 #3
0
class StandardUserContext:

    USERNAME = '******'
    PASSWORD = '******'
    DUST = 0
    GOLD = 0

    def __init__(self):
        self.username = self.USERNAME
        self.password = self.PASSWORD
        self.dust = self.DUST
        self.gold = self.GOLD

        # This field will later contain the user object
        self.user: User = None

    def update(self):
        self.user = User.get(User.name == self.username)

    def __enter__(self):
        self.user = User(name=self.username,
                         password=self.password,
                         dust=self.dust,
                         gold=self.gold)
        self.user.save()
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.user.delete_instance(recursive=True)
コード例 #4
0
    def test_database_creation_successful(self):
        installer = EnvironmentInstaller(self.FOLDER_PATH)
        installer.create_config_folder()
        installer.create_database_file()

        self.assertTrue(os.path.exists(installer.get_database_file_path()))
        # The Database should be connected to the models now, which one should be able to create a new model and
        # insert it into the database
        user = User(name="Jonas", password="******", gold=0, dust=0)
        user.save()
        self.assertIsInstance(user, User)
コード例 #5
0
    def test_database_working(self):
        # Creating the user and saving it into the database
        user = User(name=self.SAMPLE_USER_NAME,
                    password=self.SAMPLE_USER_PASSWORD,
                    gold=0,
                    dust=0)
        user.save()

        # Attempting to load it
        user = User.get(User.name == self.SAMPLE_USER_NAME)
        self.assertTrue(user.password.check(self.SAMPLE_USER_PASSWORD))
コード例 #6
0
    def create_user(self, username: str, password: str):
        """
        Creates a new user with the given username and password. Initializes gold and dust with 0

        CHANGELOG

        Added 10.06.2019

        :param username:
        :param password:
        :return:
        """
        user = User(name=username, password=password, gold=0, dust=0)
        user.save()
コード例 #7
0
    def test_sqlite_database(self):
        database_config = self.get_sample_object()
        database_config.init()
        DATABASE_PROXY.initialize(database_config.get())
        database_config.connect()
        database_config.create_tables()

        # Creating a user and saving it just to see if it works
        user = User(
            name="Jonas",
            password="******",
            dust=0,
            gold=0,
        )
        user.save()
コード例 #8
0
 def test_standard_user_context_manager(self):
     with StandardUserContext() as user_context:
         query = User.select().where(User.name == user_context.username)
         self.assertEqual(len(query), 1)
         user = query[0]
         self.assertIsInstance(user_context.user, User)
         self.assertEqual(user.name, user_context.user.name)
コード例 #9
0
def open_pack(username: str, pack_name: str):
    """
    Given a user by its username and the name of a pack type, which the user owns, this function will open that pack
    for the user. This means it will evaluate the slot probabilities for all 5 slots of the pack. Based on these
    probabilities 5 rewards are randomly chosen from the set of available rewards. These rewards will be added to the
    user. The pack will be removed, as it has been used up.

    CHANGELOG

    Added 12.06.2019

    :param username:
    :param pack_name:
    :return:
    """
    user = User.get(User.name == username)
    pack = user.get_packs(pack_name)[0]

    rarity_reward_map = available_rewards_by_rarity()

    for i in range(1, 6, 1):
        slot = getattr(pack, f'slot{i}')
        rarity = slot.choice()
        reward = np.random.choice(rarity_reward_map[rarity], 1)[0]
        parameters_adapter = RewardParametersAdapter(reward['name'], reward)
        user.add_reward(parameters_adapter.parameters())

    user.use_pack(pack_name)
    user.save()
コード例 #10
0
    def test_user_adding_gold_and_dust_works(self):
        # Setting up the database
        self.setup_sample_user()

        # Loading the user, adding to its gold and dust, saving it again and loading it again to check if the
        # changes have stayed
        user = User.get(User.name == self.SAMPLE_USER_NAME)
        self.assertEqual(user.gold, 0)
        self.assertEqual(user.dust, 0)

        user.gold += 100
        user.dust += 100
        user.save()

        user = User.get(User.name == self.SAMPLE_USER_NAME)
        self.assertEqual(user.gold, 100)
        self.assertEqual(user.dust, 100)
コード例 #11
0
    def test_creating_new_user(self):
        facade: Rewardify = Rewardify.instance()

        # Creating the user
        username = '******'
        password = '******'
        facade.create_user(username, password)

        # Querying for the user to check if it exists
        query = User.select().where(User.name == username)
        self.assertTrue(len(query) >= 1)
        user = query[0]
        self.assertTrue(user.password.check(password))
コード例 #12
0
    def get_user(self, username: str) -> User:
        """
        Returns the User object for the user with the given username

        CHANGELOG

        Added 10.06.2019

        :param username:
        :return:
        """
        query = User.select(User).where(User.name == username)
        user = query[0]
        return user
コード例 #13
0
    def exists_user(self, username: str):
        """
        Returns the boolean value of whether or not a user with the given username exists

        CHANGELOG

        Added 15.06.2019

        :param username:
        :return:
        """
        query = User.select().where(User.name == username)
        # Of course, when there is a result to the above query, a User object has been found and thus, the user exists
        return len(query) != 0
コード例 #14
0
    def test_user_join_reward_and_pack_columns(self):
        # Setting all up
        self.setup_sample_user()
        self.setup_sample_pack()
        self.setup_sample_reward()

        # Attempting to get a user object with all the correct back refs to the pack and reward objects
        users = User.select(User).where(User.name == self.SAMPLE_USER_NAME)
        user = users[0]

        self.assertEqual(len(user.rewards), 1)
        self.assertEqual(user.rewards[0].name, self.SAMPLE_REWARD_NAME)

        self.assertEqual(len(user.packs), 1)
        self.assertEqual(user.packs[0].name, self.SAMPLE_PACK_NAME)
コード例 #15
0
 def setup_sample_pack(self):
     # Loading the sample user to be the owner of this pack
     user = User.get(User.name == self.SAMPLE_USER_NAME)
     pack = Pack(name=self.SAMPLE_PACK_NAME,
                 slug=self.SAMPLE_PACK_SLUG,
                 description=self.SAMPLE_PACK_DESCRIPTION,
                 gold_cost=self.SAMPLE_PACK_GOLD,
                 date_obtained=self.SAMPLE_PACK_DATE,
                 slot1=self.SAMPLE_PACK_PROBABILITY,
                 slot2=self.SAMPLE_PACK_PROBABILITY,
                 slot3=self.SAMPLE_PACK_PROBABILITY,
                 slot4=self.SAMPLE_PACK_PROBABILITY,
                 slot5=self.SAMPLE_PACK_PROBABILITY,
                 user=user)
     pack.save()
コード例 #16
0
    def test_user_use_reward_with_effect(self):
        self.setup_sample()
        self.create_sample_user()
        facade: Rewardify = Rewardify.instance()

        facade.user_add_dust(self.SAMPLE_USER_PARAMETERS['name'], 100)
        facade.user_buy_reward(self.SAMPLE_USER_PARAMETERS['name'],
                               'Gold Reward')
        user = self.get_sample_user()
        self.assertEqual(len(user.rewards), 1)
        self.assertEqual(user.gold, 0)
        facade.user_use_reward(self.SAMPLE_USER_PARAMETERS['name'],
                               'Gold Reward')
        user = User.select().where(
            User.name == self.SAMPLE_USER_PARAMETERS['name'])[0]
        self.assertEqual(len(user.rewards), 0)
        print(user.gold)
        self.assertEqual(user.gold, 100)
コード例 #17
0
    def test_pack_creation_works(self):
        # Setting up the database
        self.setup_sample_user()

        user = User.get(User.name == self.SAMPLE_USER_NAME)
        pack = Pack(name='Simple Pack',
                    slug='simple_pack',
                    description='The most basic of rewards',
                    gold_cost=1000,
                    date_obtained=datetime.datetime.now(),
                    slot1=self.SAMPLE_PACK_PROBABILITY,
                    slot2=self.SAMPLE_PACK_PROBABILITY,
                    slot3=self.SAMPLE_PACK_PROBABILITY,
                    slot4=self.SAMPLE_PACK_PROBABILITY,
                    slot5=self.SAMPLE_PACK_PROBABILITY,
                    user=user)
        pack.save()

        # Loading the pack to see it it worked
        pack = Pack.get(Pack.slug == 'simple_pack')
        self.assertEqual(pack.name, 'Simple Pack')
コード例 #18
0
 def create_sample_user(self):
     user = User(**self.SAMPLE_USER_PARAMETERS)
     user.save()
コード例 #19
0
 def get_sample_user(self) -> User:
     user = User.get(User.name == self.SAMPLE_USER_PARAMETERS['name'])
     return user
コード例 #20
0
 def get_sample_user(self):
     return User.get(User.name == self.SAMPLE_USER_NAME)
コード例 #21
0
 def create_standard_user(self):
     user = User(**self.STANDARD_USER_PARAMETERS)
     user.save()
コード例 #22
0
 def get_standard_user(self):
     return User.get(User.name == self.STANDARD_USER_PARAMETERS['name'])
コード例 #23
0
 def test_database_modifications_do_not_transcend_individual_tests(self):
     users = User.select().where(User.name == self.SAMPLE_USER_NAME)
     # If other test cases indeed do not influence the
     self.assertEqual(len(users), 0)
コード例 #24
0
 def update(self):
     self.user = User.get(User.name == self.username)