def test_parking_permit_change_price_list_when_prices_go_down(self): zone_a_product_list = [ [(date(2021, 1, 1), date(2021, 6, 30)), Decimal("20")], [(date(2021, 7, 1), date(2021, 12, 31)), Decimal("30")], ] self._create_zone_products(self.zone_a, zone_a_product_list) zone_b_product_list = [ [(date(2021, 1, 1), date(2021, 6, 30)), Decimal("30")], [(date(2021, 7, 1), date(2021, 12, 31)), Decimal("40")], ] self._create_zone_products(self.zone_b, zone_b_product_list) high_emission_vehicle = VehicleFactory() start_time = timezone.make_aware(datetime(2021, 1, 1)) end_time = get_end_time(start_time, 12) permit = ParkingPermitFactory( customer=self.customer, parking_zone=self.zone_a, vehicle=high_emission_vehicle, contract_type=ContractType.FIXED_PERIOD, status=ParkingPermitStatus.VALID, start_time=start_time, end_time=end_time, month_count=12, ) with freeze_time(datetime(2021, 4, 15)): price_change_list = permit.get_price_change_list(self.zone_b, True) self.assertEqual(len(price_change_list), 2) self.assertEqual(price_change_list[0]["product"], "Pysäköintialue B") self.assertEqual(price_change_list[0]["previous_price"], Decimal("20")) self.assertEqual(price_change_list[0]["new_price"], Decimal("15")) self.assertEqual(price_change_list[0]["price_change"], Decimal("-5")) self.assertEqual(price_change_list[0]["price_change_vat"], Decimal("-1.2")) self.assertEqual(price_change_list[0]["month_count"], 2) self.assertEqual(price_change_list[0]["start_date"], date(2021, 5, 1)) self.assertEqual(price_change_list[0]["end_date"], date(2021, 6, 30)) self.assertEqual(price_change_list[1]["product"], "Pysäköintialue B") self.assertEqual(price_change_list[1]["previous_price"], Decimal("30")) self.assertEqual(price_change_list[1]["new_price"], Decimal("20")) self.assertEqual(price_change_list[1]["price_change"], Decimal("-10")) self.assertEqual(price_change_list[1]["price_change_vat"], Decimal("-2.4")) self.assertEqual(price_change_list[1]["month_count"], 6) self.assertEqual(price_change_list[1]["start_date"], date(2021, 7, 1)) self.assertEqual(price_change_list[1]["end_date"], date(2021, 12, 31))
def test_parking_permit_change_price_list_when_prices_go_up(self): zone_a_product_list = [ [(date(CURRENT_YEAR, 1, 1), date(CURRENT_YEAR, 6, 30)), Decimal("20")], [(date(CURRENT_YEAR, 7, 1), date(CURRENT_YEAR, 12, 31)), Decimal("30")], ] self._create_zone_products(self.zone_a, zone_a_product_list) zone_b_product_list = [ [(date(CURRENT_YEAR, 1, 1), date(CURRENT_YEAR, 6, 30)), Decimal("30")], [(date(CURRENT_YEAR, 7, 1), date(CURRENT_YEAR, 12, 31)), Decimal("40")], ] self._create_zone_products(self.zone_b, zone_b_product_list) start_time = timezone.make_aware(datetime(CURRENT_YEAR, 1, 1)) end_time = get_end_time(start_time, 12) low_emission_vehicle = VehicleFactory( power_type=VehiclePowerType.BENSIN, emission=70, euro_class=6, emission_type=EmissionType.WLTP, ) LowEmissionCriteriaFactory( start_date=start_time, end_date=end_time, nedc_max_emission_limit=None, wltp_max_emission_limit=80, euro_min_class_limit=6, power_type=low_emission_vehicle.power_type, ) permit = ParkingPermitFactory( customer=self.customer, parking_zone=self.zone_a, vehicle=low_emission_vehicle, contract_type=ContractType.FIXED_PERIOD, status=ParkingPermitStatus.VALID, start_time=start_time, end_time=end_time, month_count=12, ) with freeze_time(datetime(CURRENT_YEAR, 4, 15)): price_change_list = permit.get_price_change_list( self.zone_b, False) self.assertEqual(len(price_change_list), 2) self.assertEqual(price_change_list[0]["product"], "Pysäköintialue B") self.assertEqual(price_change_list[0]["previous_price"], Decimal("10")) self.assertEqual(price_change_list[0]["new_price"], Decimal("30")) self.assertEqual(price_change_list[0]["price_change"], Decimal("20")) self.assertEqual(price_change_list[0]["price_change_vat"], Decimal("4.8")) self.assertEqual(price_change_list[0]["month_count"], 2) self.assertEqual(price_change_list[0]["start_date"], date(CURRENT_YEAR, 5, 1)) self.assertEqual(price_change_list[0]["end_date"], date(CURRENT_YEAR, 6, 30)) self.assertEqual(price_change_list[1]["product"], "Pysäköintialue B") self.assertEqual(price_change_list[1]["previous_price"], Decimal("15")) self.assertEqual(price_change_list[1]["new_price"], Decimal("40")) self.assertEqual(price_change_list[1]["price_change"], Decimal("25")) self.assertEqual(price_change_list[1]["price_change_vat"], Decimal("6")) self.assertEqual(price_change_list[1]["month_count"], 6) self.assertEqual(price_change_list[1]["start_date"], date(CURRENT_YEAR, 7, 1)) self.assertEqual(price_change_list[1]["end_date"], date(CURRENT_YEAR, 12, 31))