def test_city_tax_none(self):
        tax_model: TaxModel = TaxModel.get_valid_tax_model(date.today())

        calculated_tax: TaxCalculated = TaxCalculated(tax_model, 5000, 0)

        self.assertEqual(calculated_tax.income_tax, 1000)
        self.assertEqual(calculated_tax.city_tax, 0)
        self.assertEqual(calculated_tax.total_tax, 1000)
    def test_city_tax_13(self):
        tax_model: TaxModel = TaxModel.get_valid_tax_model(date.today())

        calculated_tax: TaxCalculated = TaxCalculated(
            tax_model, 5000, City.get_city_tax_rate(joppd='03123'))

        self.assertEqual(calculated_tax.income_tax, 1000)
        self.assertEqual(calculated_tax.city_tax, 130)
        self.assertEqual(calculated_tax.total_tax, 1130)
    def test_highest(self):
        tax_model: TaxModel = TaxModel.get_valid_tax_model(date.today())

        income: float = 30000.02
        tax_bracket: TaxBracket = tax_model.get_tax_bracket(income)

        tax_rate: float = tax_bracket.tax_rate

        self.assertEqual(tax_rate, 0.30)
    def test_multiple(self):
        tax_model: TaxModel = TaxModel.get_valid_tax_model(date.today())

        calculated_tax: TaxCalculated = TaxCalculated(tax_model, 200000, 0)

        self.assertEqual(calculated_tax.income_tax, (60000 + 6000 + 6000))
    def test_negative(self):
        tax_model: TaxModel = TaxModel.get_valid_tax_model(date.today())

        calculated_tax: TaxCalculated = TaxCalculated(tax_model, -2000, 0)

        self.assertEqual(calculated_tax.income_tax, 0)