def test_get_machine_type(self): for machine_type in MachineTypeField.possible_machine_types: self.assertEqual( machine_type, MachineTypeField.get_machine_type(machine_type.id)) self.assertEqual(None, MachineTypeField.get_machine_type(0))
def test_calendar_reservation_url(self, now_mock): now_mock.return_value = local_to_date( timezone.datetime(2018, 12, 9, 12, 24)) user = User.objects.create_user("user", "*****@*****.**", "weak_pass") user.save() machine_type_printer = MachineTypeField.get_machine_type(1) Quota.objects.create(user=user, number_of_reservations=2, ignore_rules=True, machine_type=machine_type_printer) printer = Machine.objects.create(name="U1", location="S1", machine_model="Ultimaker", status="F", machine_type=machine_type_printer) Printer3DCourse.objects.create(user=user, username=user.username, name=user.get_full_name(), date=timezone.now()) reservation = Reservation.objects.create(user=user, machine=printer, event=None, start_time=timezone.now(), end_time=timezone.now() + timedelta(hours=2)) self.assertEqual(current_calendar_url(printer), calendar_url_reservation(reservation))
def test_get_user_reservations_different_types(self): machine_type_sewing = MachineTypeField.get_machine_type(2) Quota.objects.create(user=self.user, number_of_reservations=2, machine_type=machine_type_sewing, ignore_rules=True) sewing_machine = Machine.objects.create( name="T1", machine_model="Generic", location="M1", status="F", machine_type=machine_type_sewing) Reservation.objects.create(user=self.user, machine=sewing_machine, start_time=timezone.now(), end_time=timezone.now() + timezone.timedelta(hours=2), event=None) self.assertEqual([ Reservation.objects.get(user=self.user, machine__machine_type=machine_type_sewing), Reservation.objects.get( user=self.user, machine__machine_type=self.machine_type_printer) ], list( template_view_get_context_data( MyReservationsView, request_user=self.user)["reservations"]))
def setUp(self): self.user = User.objects.create_user("user", "*****@*****.**") self.machine_type_printer = MachineTypeField.get_machine_type(1) printer = Machine.objects.create( name="U1", machine_type=self.machine_type_printer, machine_model="Ultimaker 2", location="S1", status="F") Quota.objects.create(user=self.user, number_of_reservations=2, ignore_rules=True, machine_type=self.machine_type_printer) Printer3DCourse.objects.create(user=self.user, name=self.user.get_full_name(), username=self.user.username, date=timezone.now().date()) Reservation.objects.create(user=self.user, machine=printer, event=None, start_time=timezone.now(), end_time=timezone.now() + timezone.timedelta(hours=2))
def setUp(self): event = Event.objects.create(title="TEST EVENT") self.timeplace = TimePlace.objects.create( pub_date=timezone.now(), start_date=timezone.now(), start_time=(timezone.now() + timedelta(seconds=1)).time(), event=event) self.machine_type = MachineTypeField.get_machine_type(1) self.machine = Machine.objects.create(name="C1", location="Printer room", status="F", machine_type=self.machine_type) self.user = User.objects.create_user("User", "*****@*****.**", "user_pass") self.user_quota = Quota.objects.create(user=self.user, ignore_rules=False, number_of_reservations=2, machine_type=self.machine_type) self.course_registration = Printer3DCourse.objects.create( user=self.user, username=self.user.username, date=datetime.now().date(), name=self.user.get_full_name()) self.max_time_reservation = 5 ReservationRule.objects.create( machine_type=self.machine_type, start_time=time(0, 0), end_time=time(23, 59), days_changed=6, start_days=1, max_hours=self.max_time_reservation, max_inside_border_crossed=self.max_time_reservation)
def setUp(self): machine_type_printer = MachineTypeField.get_machine_type(1) self.machine = Machine.objects.create( name="Test", machine_model="Ultimaker 2+", machine_type=machine_type_printer) self.event = Event.objects.create(title="Test_Event") self.timeplace = TimePlace.objects.create(event=self.event)
def setUp(self): self.machine_type_printer = MachineTypeField.get_machine_type(1) self.machine_type_sewing = MachineTypeField.get_machine_type(2) self.user = User.objects.create_user("test") self.user2 = User.objects.create_user("test2") self.quota1 = Quota.objects.create( all=True, machine_type=self.machine_type_sewing, number_of_reservations=2) self.quota2 = Quota.objects.create( all=True, machine_type=self.machine_type_printer, number_of_reservations=4) self.quota3 = Quota.objects.create( user=self.user, machine_type=self.machine_type_printer, number_of_reservations=4) self.quota4 = Quota.objects.create( user=self.user2, machine_type=self.machine_type_sewing, number_of_reservations=1)
def create_reservation(start_time, end_time): machine_type = MachineTypeField.get_machine_type(1) Machine.objects.create(name="S1", location="U1", machine_model="Ultimaker", status="F", machine_type=machine_type) user = User.objects.create_user("User", "*****@*****.**", "unsecure_pass") user.save() Quota.objects.create(user=user, number_of_reservations=2, ignore_rules=True, machine_type=machine_type) Printer3DCourse.objects.create(user=user, username=user.username, name=user.get_full_name(), date=timezone.datetime.now().date()) Reservation.objects.create(user=user, machine=Machine.objects.get(name="S1"), start_time=start_time, end_time=end_time, event=None) return Reservation.objects.first()
def test_get_admin_reservation(self): user = User.objects.create_user("test") machine_type = MachineTypeField.get_machine_type(1) Quota.objects.create(machine_type=machine_type, number_of_reservations=10, ignore_rules=True, user=user) permission = Permission.objects.get( codename="can_create_event_reservation") user.user_permissions.add(permission) event = Event.objects.create(title="Test_event") timeplace = TimePlace.objects.create( event=event, start_time=(timezone.now() + timedelta(hours=1)).time(), start_date=(timezone.now() + timedelta(hours=1)).date(), end_time=(timezone.now() + timedelta(hours=2)).time(), end_date=(timezone.now() + timedelta(hours=2)).date()) printer = Machine.objects.create(machine_type=machine_type, machine_model="Ultimaker") Printer3DCourse.objects.create(user=user, username=user.username, name=user.get_full_name(), date=timezone.now()) special_reservation = Reservation.objects.create( start_time=timezone.now() + timedelta(hours=1), special_text="Test", special=True, user=user, machine=printer, end_time=timezone.now() + timedelta(hours=2)) normal_reservation = Reservation.objects.create( start_time=timezone.now() + timedelta(hours=2), user=user, machine=printer, end_time=timezone.now() + timedelta(hours=3)) event_reservation = Reservation.objects.create( start_time=timezone.now() + timedelta(hours=3), event=timeplace, user=user, machine=printer, end_time=timezone.now() + timedelta(hours=4)) context_data = template_view_get_context_data(AdminReservationView, request_user=user) self.assertEqual(context_data["admin"], True) self.assertEqual(set(context_data["reservations"]), {special_reservation, event_reservation})
def test_is_valid_rule_external(self): ReservationRule(start_time=datetime.time(10, 0), end_time=datetime.time(6, 0), days_changed=1, start_days=53, max_inside_border_crossed=0, machine_type=self.machine_type, max_hours=0).save() rule = ReservationRule(start_time=datetime.time(12, 0), end_time=datetime.time(18, 0), days_changed=0, start_days=66, max_inside_border_crossed=0, machine_type=self.machine_type, max_hours=0) self.assertTrue(rule.is_valid_rule()) rule = ReservationRule(start_time=datetime.time(5, 0), end_time=datetime.time(12, 0), days_changed=0, start_days=2, max_inside_border_crossed=0, machine_type=self.machine_type, max_hours=0) self.assertFalse(rule.is_valid_rule()) try: rule.is_valid_rule(raise_error=True) self.fail( "An exception should have been raised for a check on a non valid rule with raise_error set" ) except ValidationError: pass try: rule.save() self.fail("Valid rules should not be saveable") except ValidationError: pass rule.machine_type = MachineTypeField.get_machine_type(2) self.assertTrue( rule.is_valid_rule(), "Rules for different machine types should not effect the validity of each other" )
def setUp(self): self.user = User.objects.create_user("test") self.machine_type = MachineTypeField.get_machine_type(2) self.machine = Machine.objects.create(machine_type=self.machine_type, status="F", name="Test") Quota.objects.create(machine_type=self.machine_type, number_of_reservations=2, ignore_rules=False, all=True) ReservationRule.objects.create(start_time=time(0, 0), end_time=time(23, 59), start_days=1, days_changed=6, max_inside_border_crossed=6, max_hours=6, machine_type=self.machine_type)
def setUp(self): Reservation.reservation_future_limit_days = 7 self.machine_type_sewing = MachineTypeField.get_machine_type(2) self.user = User.objects.create_user(username="******") self.machine = Machine.objects.create( machine_model="Test", machine_type=self.machine_type_sewing) self.event = Event.objects.create(title="Test_event") Quota.objects.create(user=self.user, machine_type=self.machine_type_sewing, number_of_reservations=100, ignore_rules=True) self.timeplace = TimePlace.objects.create( event=self.event, start_time=(timezone.now() + timedelta(hours=1)).time(), start_date=(timezone.now() + timedelta(hours=1)).date(), end_time=(timezone.now() + timedelta(hours=2)).time(), end_date=(timezone.now() + timedelta(hours=2)).date())
def test_status(self): machine_type = MachineTypeField.get_machine_type(1) printer = Machine.objects.create(name="C1", location="Printer room", status="F", machine_model="Ultimaker 2 Extended", machine_type=machine_type) user = User.objects.create_user("test") Printer3DCourse.objects.create(name="Test", username="******", user=user, date=timezone.datetime.now().date()) Quota.objects.create(machine_type=machine_type, user=user, ignore_rules=True, number_of_reservations=1) self.assertEquals(printer.get_status(), "F") self.assertEquals(printer.get_status_display(), "Ledig") printer.status = "O" self.assertEquals(printer.get_status(), "O") self.assertEquals(printer.get_status_display(), "I ustand") printer.status = "M" self.assertEquals(printer.get_status(), "M") self.assertEquals(printer.get_status_display(), "Vedlikehold") printer.status = "R" self.assertEquals(printer.get_status(), "F") self.assertEquals(printer.get_status_display(), "Ledig") Reservation.objects.create(machine=printer, start_time=timezone.now(), end_time=timezone.now() + timedelta(hours=1), user=user) self.assertEquals(printer.get_status(), "R") self.assertEquals(printer.get_status_display(), "Reservert") printer.status = "F" self.assertEquals(printer.get_status(), "R") self.assertEquals(printer.get_status_display(), "Reservert") printer.status = "O" self.assertEquals(printer.get_status(), "O") self.assertEquals(printer.get_status_display(), "I ustand") printer.status = "M" self.assertEquals(printer.get_status(), "M") self.assertEquals(printer.get_status_display(), "Vedlikehold")
def test_get_user_quota(self): user = User.objects.create_user("test") user2 = User.objects.create_user("test2") machine_type = MachineTypeField.get_machine_type(1) Quota.objects.create(all=True, user=user, machine_type=machine_type, number_of_reservations=2) quota2 = Quota.objects.create(user=user, machine_type=machine_type, number_of_reservations=2) Quota.objects.create(user=user2, machine_type=machine_type, number_of_reservations=2) context_data = template_view_get_context_data(GetUserQuotaView, request_user=user, user=user) context_data["user_quotas"] = list(context_data["user_quotas"]) self.assertEqual(context_data, {"user_quotas": [quota2]})
def setUp(self): user1 = User.objects.create_user("user1", "*****@*****.**", "weak_pass") user1.save() user2 = User.objects.create_user("user2", "*****@*****.**", "weak_pass") user2.save() machine_type_printer = MachineTypeField.get_machine_type(1) Machine.objects.create(name="U1", location="Make", machine_model="Ultimaker 2", status="F", machine_type=machine_type_printer) Quota.objects.create(user=user1, number_of_reservations=2, ignore_rules=True, machine_type=machine_type_printer) Quota.objects.create(user=user2, number_of_reservations=2, ignore_rules=True, machine_type=machine_type_printer) Printer3DCourse.objects.create(user=user1, username=user1.username, name=user1.get_full_name(), date=timezone.now()) Printer3DCourse.objects.create(user=user2, username=user2.username, name=user2.get_full_name(), date=timezone.now()) self.reservation = Reservation.objects.create( user=user1, machine=Machine.objects.get(name="U1"), start_time=timezone.now() + timezone.timedelta(hours=2), end_time=timezone.now() + timezone.timedelta(hours=4), event=None)
def setUp(self): self.period = ReservationRule.Period self.machine_type = MachineTypeField.get_machine_type(1)
def to_python(self, value): return MachineTypeField.get_machine_type(int(value))
def setUp(self): self.machine_type = MachineTypeField.get_machine_type(1)