Exemple #1
0
    def test_models(self, member_id: str, name: str, accounts: [Account]):
        """ Testing models and their functions.

        :param str member_id: Member identifier, parametrised.
        :param str name: Member name, parametrised.
        :param [Account] accounts: Account model instances, parametrised.
        """

        test_member = Member(member_id=member_id, name=name, accounts=set())
        assert test_member is not None
        assert test_member.member_id == member_id
        assert test_member.name == name

        db = BillDatabase(members={test_member},
                          accounts=list(),
                          electricity_bills={},
                          gas_bills={})
        for account in accounts:
            db.add_account(account=account)

        if accounts:
            assert len(
                db.get_member_accounts(member_id=member_id)) == len(accounts)

        test_account = Account(account_id='account-abc',
                               member_id='member-123')

        assert test_account.__hash__() == hash('account-abc_member-123')

        test_electricity_bill = ElectricityBill(member=test_member,
                                                account=test_account,
                                                bill_date='2017-08-31',
                                                units=0,
                                                total=0.0)

        assert test_electricity_bill.__hash__() == \
               hash('member-123_account-abc_2017-08-31')

        test_gas_bill = GasBill(member=test_member,
                                account=test_account,
                                bill_date='2017-08-31',
                                units=0,
                                total=0.0)

        assert test_gas_bill.__hash__() == \
               hash('member-123_account-abc_2017-08-31')