def test_should_return_correct_end_time_of_current_time(self): start_time = timezone.make_aware(datetime(2021, 11, 15)) end_time = get_end_time(start_time, 6) permit = ParkingPermitFactory( contract_type=ContractType.FIXED_PERIOD, start_time=start_time, end_time=end_time, month_count=6, ) self.assertEqual( permit.current_period_end_time, timezone.make_aware( datetime(CURRENT_YEAR, 2, 14, 23, 59, 59, 999999)), ) start_time = timezone.make_aware(datetime(2021, 11, 20)) end_time = get_end_time(start_time, 6) permit = ParkingPermitFactory( contract_type=ContractType.FIXED_PERIOD, start_time=start_time, end_time=end_time, month_count=6, ) self.assertEqual( permit.current_period_end_time, timezone.make_aware( datetime(CURRENT_YEAR, 2, 19, 23, 59, 59, 999999)), )
def setUp(self): customer_1 = CustomerFactory(first_name="Firstname B", last_name="Lastname 1") customer_2 = CustomerFactory(first_name="Firstname A", last_name="Lastname 2") customer_3 = CustomerFactory(first_name="Firstname A", last_name="Lastname 3") ParkingPermitFactory(customer=customer_1) ParkingPermitFactory(customer=customer_2) ParkingPermitFactory(customer=customer_3)
def setUp(self): customer_1 = CustomerFactory(first_name="Firstname B", last_name="Lastname 1") customer_2 = CustomerFactory(first_name="Firstname A", last_name="Lastname 2") customer_3 = CustomerFactory(first_name="Firstname A", last_name="Lastname 3") ParkingPermitFactory(customer=customer_1, status=ParkingPermitStatus.DRAFT) ParkingPermitFactory(customer=customer_2, status=ParkingPermitStatus.VALID) ParkingPermitFactory(customer=customer_3, status=ParkingPermitStatus.DRAFT)
def test_customer_has_closed_permit_modified_more_than_two_years_ago_can_be_deleted( self, ): with freeze_time(timezone.make_aware(datetime(2020, 12, 31))): customer = CustomerFactory() ParkingPermitFactory(customer=customer, status=ParkingPermitStatus.CLOSED) with freeze_time(timezone.make_aware(datetime(2022, 12, 31, 0, 0, 1))): self.assertTrue(customer.can_be_deleted)
def test_customer_has_end_time_recently_can_not_be_deleted(self): with freeze_time(timezone.make_aware(datetime(2020, 12, 31))): customer = CustomerFactory() ParkingPermitFactory( customer=customer, status=ParkingPermitStatus.CLOSED, end_time=timezone.make_aware(datetime(2021, 12, 31)), ) with freeze_time(timezone.make_aware(datetime(2022, 12, 31, 0, 0, 1))): self.assertFalse(customer.can_be_deleted)
def test_create_renewable_order_should_create_renewal_order(self): start_time = timezone.make_aware(datetime(CURRENT_YEAR, 3, 15)) end_time = get_end_time(start_time, 6) # end at CURRENT_YEAR-09-14 23:59 high_emission_vehicle = VehicleFactory( power_type=VehiclePowerType.BENSIN, emission=100, euro_class=6, emission_type=EmissionType.WLTP, ) 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( parking_zone=self.zone, vehicle=high_emission_vehicle, customer=self.customer, contract_type=ContractType.FIXED_PERIOD, status=ParkingPermitStatus.DRAFT, start_time=start_time, end_time=end_time, month_count=6, ) order = Order.objects.create_for_permits([permit]) order.status = OrderStatus.CONFIRMED order.save() permit.refresh_from_db() permit.status = ParkingPermitStatus.VALID permit.vehicle = low_emission_vehicle permit.save() with freeze_time(timezone.make_aware(datetime(CURRENT_YEAR, 5, 5))): new_order = Order.objects.create_renewal_order(self.customer) order_items = new_order.order_items.all().order_by("start_date") self.assertEqual(order_items.count(), 2) self.assertEqual(order_items[0].unit_price, Decimal(15)) self.assertEqual(order_items[0].payment_unit_price, Decimal(-15)) self.assertEqual(order_items[0].quantity, 2) self.assertEqual(order_items[1].unit_price, Decimal(25)) self.assertEqual(order_items[1].payment_unit_price, Decimal(-25)) self.assertEqual(order_items[1].quantity, 2)
def test_create_renewable_order_should_raise_error_for_open_ended_permits( self): start_time = timezone.make_aware(datetime(CURRENT_YEAR, 3, 15)) end_time = get_end_time(start_time, 6) # end at 2022-09-14 23:59 permit = ParkingPermitFactory( parking_zone=self.zone, customer=self.customer, contract_type=ContractType.OPEN_ENDED, status=ParkingPermitStatus.DRAFT, start_time=start_time, end_time=end_time, month_count=6, ) Order.objects.create_for_permits([permit]) permit.status = ParkingPermitStatus.VALID permit.save() with freeze_time(timezone.make_aware(datetime(CURRENT_YEAR, 5, 5))): with self.assertRaises(OrderCreationFailed): Order.objects.create_renewal_order(self.customer)