def test_checkin_gear_by_nonexistent_member(self): """Do checkout then test checkin of checked out gear by nonexistent member fails""" do_checkout(ADMIN_RFID, MEMBER_RFID1, GEAR_RFID) with self.assertRaises(Member.DoesNotExist): do_checkin("0000010002", GEAR_RFID) gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_rented_out(), True)
def post(request, rfid): form = HomeForm(request.POST) if form.is_valid(): gear_rfid = form.cleaned_data['rfid'] staffer_rfid = request.user.rfid member_rfid = rfid try: gear = Gear.objects.get(rfid=gear_rfid) except Gear.DoesNotExist: gear = None if gear: if gear.is_available(): do_checkout(staffer_rfid, member_rfid, gear_rfid) alert_message = f'{gear.name} was checked out successfully' messages.add_message(request, messages.INFO, alert_message) else: do_checkin(staffer_rfid, gear_rfid) alert_message = f'{gear.name} was checked in successfully' messages.add_message(request, messages.WARNING, alert_message) else: alert_message = 'The RFID tag is not registered to a piece of gear' messages.add_message(request, messages.WARNING, alert_message) return redirect('kiosk:check_out', member_rfid)
def test_checkout_gear_to_self(self): """Test checkout of available gear to valid staffer by valid staffer succeeds""" gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_available(), True) do_checkout(ADMIN_RFID, ADMIN_RFID, GEAR_RFID) gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_rented_out(), True)
def test_checkin_gear_by_unauthorized_member(self): """Do checkout then test checkin of checked out gear by unauthorized member fails""" do_checkout(ADMIN_RFID, MEMBER_RFID1, GEAR_RFID) with self.assertRaises(ValidationError): do_checkin(MEMBER_RFID1, GEAR_RFID) gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_rented_out(), True)
def test_checkout_by_unauthorized_member(self): """Test checkout of available gear to active member by unauthorized member fails""" gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_available(), True) with self.assertRaises(ValidationError): do_checkout(MEMBER_RFID1, MEMBER_RFID2, GEAR_RFID) gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_rented_out(), False)
def test_checkout_of_checked_out_gear(self): """Do checkout then test checkout of checked out gear to active member by valid staffer fails""" do_checkout(ADMIN_RFID, MEMBER_RFID1, GEAR_RFID) gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_rented_out(), True) with self.assertRaises(ValidationError): do_checkout(ADMIN_RFID, MEMBER_RFID2, GEAR_RFID) gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_rented_out(), True)
def post_member_or_gear_rfid(request, rfid: str): """Check in item or check it out to a member""" form = HomeForm(request.POST) if form.is_valid(): form_rfid = form.cleaned_data['rfid'] staffer_rfid = request.user.rfid try: gear_rfid = form_rfid gear = Gear.objects.get(rfid=gear_rfid) except Gear.DoesNotExist: try: gear_rfid = rfid gear = Gear.objects.get(rfid=gear_rfid) except Gear.DoesNotExist: gear = None gear_rfid = None try: member_rfid = form_rfid member = Member.objects.get(rfid=member_rfid) except Member.DoesNotExist: try: member_rfid = form_rfid member = Member.objects.get(rfid=member_rfid) except Member.DoesNotExist: member = None member_rfid = None if gear: if gear_rfid == form_rfid: if gear.is_rented_out(): do_checkin(staffer_rfid, gear.rfid) alert_message = f'{gear.name} was checked in successfully' messages.add_message(request, messages.INFO, alert_message) else: alert_message = 'Gear is already checked in' messages.add_message(request, messages.WARNING, alert_message) elif member and member_rfid == form_rfid: if gear.is_rented_out(): do_checkin(staffer_rfid, gear_rfid) do_checkout(staffer_rfid, member_rfid, gear_rfid) alert_message = 'Gear checked out!' messages.add_message(request, messages.WARNING, alert_message) else: alert_message = 'The RFID is not registered to any gear' messages.add_message(request, messages.WARNING, alert_message) else: alert_message = 'The RFID is not registered to any gear' messages.add_message(request, messages.WARNING, alert_message) return redirect('kiosk:gear', gear_rfid)
def test_checkout_to_expired_member(self): """Test checkout of available gear to expired member by valid staffer fails""" member = Member.objects.get(rfid=MEMBER_RFID1) member.expire() gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_available(), True) with self.assertRaises(ValidationError): do_checkout(ADMIN_RFID, MEMBER_RFID1, GEAR_RFID) gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_rented_out(), False)
def post(self, request, rfid): form = HomeForm(request.POST) if form.is_valid(): gear_rfid = form.cleaned_data['rfid'] staffer_rfid = request.user.rfid member_rfid = rfid gear = Gear.objects.filter(rfid=gear_rfid) if gear: gear = gear.get() if gear.is_available(): do_checkout(staffer_rfid, member_rfid, gear.rfid) alert_message = gear.name + " was checked out successfully" messages.add_message(request, messages.INFO, alert_message) else: alert_message = "Gear is already rented out" messages.add_message(request, messages.WARNING, alert_message) else: alert_message = "The RFID tag is not registered to a piece of gear" messages.add_message(request, messages.WARNING, alert_message) return redirect('check_out', member_rfid)
def test_checkin_gear(self): """Do checkout then test checkin of checked out gear by valid staffer succeeds""" do_checkout(ADMIN_RFID, MEMBER_RFID1, GEAR_RFID) do_checkin(ADMIN_RFID, GEAR_RFID) gear = Gear.objects.get(rfid=GEAR_RFID) self.assertEqual(gear.is_available(), True)
def test_checkout_by_nonexistent_member(self): """Test checkout of available gear to active member by nonexistent member fails""" with self.assertRaises(Member.DoesNotExist): do_checkout("0000010002", MEMBER_RFID1, GEAR_RFID)
def test_checkout_to_nonexistent_member(self): """Test checkout of available gear to nonexistent member by valid staffer fails""" with self.assertRaises(Member.DoesNotExist): do_checkout(ADMIN_RFID, "0000010002", GEAR_RFID)
def test_checkout_of_nonexistent_gear(self): """Test checkout of nonexistent gear to active member by valid staffer fails""" with self.assertRaises(Gear.DoesNotExist): do_checkout(ADMIN_RFID, MEMBER_RFID1, "0123456780")