コード例 #1
0
    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)),
        )
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
 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)
コード例 #6
0
    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)
コード例 #7
0
 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)