def test_get_volunteer_resume_file_url(self): u1 = User.objects.create_user('John') v1 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", resume_file="MyResume.pdf", user=u1) v1.save() #test typicl cases self.assertIsNotNone(get_volunteer_resume_file_url(v1.id)) self.assertEqual(get_volunteer_resume_file_url(v1.id), v1.resume_file.url) #test non-existant cases self.assertNotEqual(get_volunteer_resume_file_url(v1.id), "resumes/DifferentResume.pdf") self.assertNotEqual(get_volunteer_resume_file_url(v1.id), "resumes/AnotherResume.pdf")
def test_get_volunteer_resume_file_url(self): u1 = User.objects.create_user('John') v1 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", resume_file="MyResume.pdf", user=u1 ) v1.save() # test typical cases self.assertIsNotNone(get_volunteer_resume_file_url(v1.id)) self.assertEqual( get_volunteer_resume_file_url(v1.id), v1.resume_file.url ) # test non-existant cases self.assertNotEqual(get_volunteer_resume_file_url(v1.id), "resumes/DifferentResume.pdf" ) self.assertNotEqual(get_volunteer_resume_file_url(v1.id), "resumes/AnotherResume.pdf" )
def test_get_shifts_with_open_slots(self): """ Test get_shifts_with_open_slots(j_id) """ u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() self.assertIsNotNone(get_shifts_with_open_slots(j1.id)) self.assertIsNotNone(get_shifts_with_open_slots(j2.id))
def create_volunteer_with_details(volunteer): """ Creates and returns volunteer with passed name and dates """ u1 = User.objects.create_user(username=volunteer[0], password='******') v1 = Volunteer(first_name=volunteer[1], last_name=volunteer[2], address=volunteer[3], city=volunteer[4], state=volunteer[5], country=volunteer[6], phone_number=volunteer[7], email=volunteer[8], user=u1) v1.save() return v1
def create_volunteer_with_details(volunteer, org_obj): """ Creates and returns volunteer with passed name and dates """ u1 = User.objects.create_user(username=volunteer['username'], password='******') v1 = Volunteer(first_name=volunteer['first_name'], last_name=volunteer['last_name'], address=volunteer['address'], city=volunteer['city'], state=volunteer['state'], country=volunteer['country'], phone_number=volunteer['phone_number'], email=volunteer['email'], user=u1, organization=org_obj) v1.save() return v1
def test_delete_shift(self): """ Test delete_shift(shift_id) """ u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j1.save() s1 = Shift(date="2012-10-23", start_time="1:00", end_time="12:00", max_volunteers=1, job=j1) s2 = Shift(date="2011-11-11", start_time="11:00", end_time="12:00", max_volunteers=3, job=j1) s1.save() s2.save() self.assertTrue(delete_shift(s1.id)) self.assertFalse(delete_shift(100)) register(v1.id, s2.id) self.assertFalse(delete_shift(s2.id))
def create_volunteer_with_details(volunteer, org_obj): """ Creates and returns volunteer with passed name and dates """ u1 = User.objects.create_user(username=volunteer[0], password='******') v1 = Volunteer( first_name=volunteer[1], last_name=volunteer[2], address=volunteer[3], city=volunteer[4], state=volunteer[5], country=volunteer[6], phone_number=volunteer[7], email=volunteer[8], user=u1, organization=org_obj) v1.save() return v1
def create_volunteer_with_details_dynamic_password(volunteer): """ Creates and returns volunteer with passed name and dates """ u1 = User.objects.create_user(username=volunteer[0], password=volunteer[1]) v1 = Volunteer( email=volunteer[2], first_name=volunteer[3], last_name=volunteer[4], address=volunteer[5], city=volunteer[6], state=volunteer[7], country=volunteer[8], phone_number=volunteer[9], user=u1 ) v1.save() return v1
def test_delete_volunteer_resume(self): """ Tests delete_volunteer_resume(volunteer_id) """ u1 = User.objects.create_user('John') v1 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", resume_file="MyResume.pdf", user=u1 ) v1.save() self.assertTrue(delete_volunteer_resume(v1.id)) self.assertFalse(delete_volunteer(100))
def test_get_volunteers_ordered_by_first_name(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('Ashley') u3 = User.objects.create_user('Zelda') v1 = Volunteer( first_name="Yoshi", last_name="Doe", address="7 Oak Street", city="Elmgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u1 ) v2 = Volunteer( first_name="Ashley", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2 ) v3 = Volunteer( id=999, first_name="Zelda", last_name="Doe", address="7 Elm Street", city="Oakgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u3 ) v1.save() v2.save() v3.save() # test typical cases volunteer_list = get_volunteers_ordered_by_first_name() self.assertIsNotNone(volunteer_list) self.assertIn(v1, volunteer_list) self.assertIn(v2, volunteer_list) self.assertIn(v3, volunteer_list) self.assertEqual(len(volunteer_list), 3) # test if in correct order self.assertEqual(volunteer_list[0], v2) self.assertEqual(volunteer_list[1], v1) self.assertEqual(volunteer_list[2], v3)
def create_volunteer_with_details_dynamic_password(volunteer): """ Creates and returns volunteer with passed name and dates """ u1 = User.objects.create_user(username=volunteer['username'], password=volunteer['password']) v1 = Volunteer(email=volunteer['email'], first_name=volunteer['first_name'], last_name=volunteer['last_name'], address=volunteer['address'], city=volunteer['city'], state=volunteer['state'], country=volunteer['country'], phone_number=volunteer['phone_number'], unlisted_organization=volunteer['unlisted_organization'], websites=volunteer['websites'], description=volunteer['description'], resume=volunteer['resume'], reminder_days=volunteer['reminder_days'], user=u1) v1.save() return v1
def create(request): if request.method == 'POST': data = json.loads(request.body.decode('utf-8')) all_orgs = Organisation.objects for orgs in all_orgs.all(): if orgs.email == data['email']: return HttpResponse("Email already registered") character = data['position'] print("pos" + character) if character == "organization": org = Organisation() org.email = data['email'] message = Helper.send_verification_email(data['email']) if message[0] == 1: org.activation_key = message[2] org.save() return HttpResponse(message[1]) else: return HttpResponse(message[1]) elif character == "volunteer": vol = Volunteer() vol.email = data['email'] message = Helper.send_verification_email(data['email']) if message[0] == 1: vol.activation_key = message[2] vol.save() return HttpResponse(message[1]) else: return HttpResponse(message[1])
def apply(request): form = request.POST user = request.user new_application = Volunteer(name=user.first_name + " "+user.last_name, email=user.email, phone=form.get('phone-number'), address=form.get('street-address'), city=form.get('city'), province=form.get('province'), isApproved=False, \ reference1name=form.get('ref1name'), reference1email=form.get('ref1email'), reference1phone=form.get('ref1phone'), \ reference2name=form.get('ref2name'), reference2email=form.get('ref2email'), reference2phone=form.get('ref2phone'), \ experience=form.get('id_experience'), availability=form.get('id_availability')) if (form): try: new_application.save() except IntegrityError, e: fail_msg = "Sorry, record shows that your previous application has not been proccessed, please be patient (:" return render_to_response('volunteer/apply.html', {'message': fail_msg}) email = form.get('email') domain = request.META['HTTP_HOST'] link = domain + "/applications/" + str(new_application.id) + "/" message = "To view the application, go to: " + link send_mail('Writer\'s Exchange Volunteer Application', message, '*****@*****.**', [NOTIFICATION_EMAIL], fail_silently=False) success_msg = "Thank you for your application! We will notify you about your application status soon." return render_to_response('volunteer/apply.html', {'message': success_msg})
def test_has_resume_file(self): u1 = User.objects.create_user('John') u2 = User.objects.create_user('James') u3 = User.objects.create_user('Jane') v1 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", resume_file="MyResume.pdf", user=u1 ) v2 = Volunteer( first_name="James", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2 ) v3 = Volunteer( first_name="Jane", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", resume_file="", user=u3 ) v1.save() v2.save() v3.save() # test typical cases self.assertTrue(has_resume_file(v1.id)) # test non-existant cases self.assertFalse(has_resume_file(v2.id)) self.assertFalse(has_resume_file(v3.id))
def test_delete_volunteer(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('Ashley') u3 = User.objects.create_user('Zelda') v1 = Volunteer( first_name="Yoshi", last_name="Doe", address="7 Oak Street", city="Elmgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u1 ) v2 = Volunteer( first_name="Ashley", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2 ) v3 = Volunteer( id=999, first_name="Zelda", last_name="Doe", address="7 Elm Street", city="Oakgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u3 ) v1.save() v2.save() v3.save() self.assertTrue(delete_volunteer(v1.id)) self.assertTrue(delete_volunteer(v2.id)) self.assertTrue(delete_volunteer(v3.id)) self.assertFalse(delete_volunteer(100)) self.assertFalse(delete_volunteer(200)) self.assertFalse(delete_volunteer(300))
def test_get_volunteers_ordered_by_first_name(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('Ashley') u3 = User.objects.create_user('Zelda') v1 = Volunteer(first_name="Yoshi", last_name="Doe", address="7 Oak Street", city="Elmgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="Ashley", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v3 = Volunteer(id=999, first_name="Zelda", last_name="Doe", address="7 Elm Street", city="Oakgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u3) v1.save() v2.save() v3.save() #test typical cases volunteer_list = get_volunteers_ordered_by_first_name() self.assertIsNotNone(volunteer_list) self.assertIn(v1, volunteer_list) self.assertIn(v2, volunteer_list) self.assertIn(v3, volunteer_list) self.assertEqual(len(volunteer_list), 3) #test if in correct order self.assertEqual(volunteer_list[0], v2) self.assertEqual(volunteer_list[1], v1) self.assertEqual(volunteer_list[2], v3)
def test_get_all_volunteers(self): """ Tests get_all_volunteers() """ u1 = User.objects.create_user('John') u2 = User.objects.create_user('James') u3 = User.objects.create_user('George') v1 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u1 ) v2 = Volunteer( first_name="James", last_name="Doe", address="7 Oak Street", city="Elmgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u2 ) v3 = Volunteer( id=999, first_name="George", last_name="Doe", address="7 Elm Street", city="Oakgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u3 ) v1.save() v2.save() v3.save() # test typical cases self.assertIsNotNone(get_all_volunteers())
def test_has_resume_file(self): u1 = User.objects.create_user('John') u2 = User.objects.create_user('James') u3 = User.objects.create_user('Jane') v1 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", resume_file="MyResume.pdf", user=u1) v2 = Volunteer(first_name="James", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v3 = Volunteer(first_name="Jane", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", resume_file="", user=u3) v1.save() v2.save() v3.save() #test typical cases self.assertTrue(has_resume_file(v1.id)) #test non-existant cases self.assertFalse(has_resume_file(v2.id)) self.assertFalse(has_resume_file(v3.id))
def test_delete_volunteer(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('Ashley') u3 = User.objects.create_user('Zelda') v1 = Volunteer(first_name="Yoshi", last_name="Doe", address="7 Oak Street", city="Elmgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="Ashley", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v3 = Volunteer(id=999, first_name="Zelda", last_name="Doe", address="7 Elm Street", city="Oakgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u3) v1.save() v2.save() v3.save() delete_volunteer(v1.id) delete_volunteer(v2.id) delete_volunteer(v3.id)
def test_register(self): ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP" ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING" u1 = User.objects.create_user("Yoshi") u2 = User.objects.create_user("John") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v2 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2, ) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() # test typical cases register(v1.id, s1.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) register(v1.id, s2.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) register(v1.id, s3.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) # test cases where volunteer tries to sign up for a shift # they are already signed up for self.assertEqual(register(v1.id, s1.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v1.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v1.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP) # test case where more than one volunteer signs up for the same shift # v2 can't sign up for s1 because there are no slots remaining self.assertEqual(register(v2.id, s1.id), ERROR_CODE_NO_SLOTS_REMAINING) register(v2.id, s2.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)) register(v2.id, s3.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id)) # test cases where a volunteer tries to sign up for a shift # they are already signed up for self.assertEqual(register(v2.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v2.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)
def test_cancel_shift_registration(self): u1 = User.objects.create_user("Yoshi") u2 = User.objects.create_user("John") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v2 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2, ) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() # test cases when try to cancel when they aren't signed up for a shift with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s2.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s3.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s2.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s3.id) # register volunteers to shifts register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) # test typical cases cancel_shift_registration(v1.id, s1.id) cancel_shift_registration(v1.id, s2.id) cancel_shift_registration(v1.id, s3.id) # cancel_shift_registration(v2.id, s1.id) # why is this throwing ObjectDoesNotExist? cancel_shift_registration(v2.id, s2.id) cancel_shift_registration(v2.id, s3.id)
def test_search_volunteers(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('Ashley') u3 = User.objects.create_user('Zelda') o1 = Organization(name="Apple") o2 = Organization(name="Google") o1.save() o2.save() v1 = Volunteer(first_name="Yoshi", last_name="Doe", address="7 Oak Street", city="Elmgrove", state="California", country="USA", phone_number="23454545", organization=o1, email="*****@*****.**", user=u1) v2 = Volunteer(first_name="Ashley", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", organization=o2, email="*****@*****.**", user=u2) v3 = Volunteer(id=999, first_name="Zelda", last_name="Doe", address="7 Elm Street", city="Oakgrove", state="California", country="USA", phone_number="23454545", unlisted_organization="Government of Canada", email="*****@*****.**", user=u3) v1.save() v2.save() v3.save() #if no search parameters are given, it returns all volunteers search_list = search_volunteers("", "", "", "", "", "") self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 3) self.assertIn(v1, search_list) self.assertIn(v2, search_list) self.assertIn(v3, search_list) search_list = search_volunteers(None, None, None, None, None, None) self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 3) self.assertIn(v1, search_list) self.assertIn(v2, search_list) self.assertIn(v3, search_list) #test exact search search_list = search_volunteers("Yoshi", "Doe", "Elmgrove", "California", "USA", "Apple") self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 1) self.assertIn(v1, search_list) self.assertNotIn(v2, search_list) self.assertNotIn(v3, search_list) #test partial search search_list = search_volunteers("Yoshi", None, None, None, None, None) self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 1) self.assertIn(v1, search_list) self.assertNotIn(v2, search_list) self.assertNotIn(v3, search_list) search_list = search_volunteers(None, "Doe", None, None, None, None) self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 3) self.assertIn(v1, search_list) self.assertIn(v2, search_list) self.assertIn(v3, search_list) #test no search matches search_list = search_volunteers("Billy", "Doe", "Montreal", "Quebec", "Canada", "Ubisoft") self.assertEqual(len(search_list), 0) self.assertNotIn(v1, search_list) self.assertNotIn(v2, search_list) self.assertNotIn(v3, search_list)
def test_get_volunteer_by_id(self): u1 = User.objects.create_user('John') u2 = User.objects.create_user('James') u3 = User.objects.create_user('George') v1 = Volunteer(first_name = "John", last_name = "Doe", address = "7 Alpine Street", city = "Maplegrove", state = "Wyoming", country = "USA", phone_number = "23454545", email = "*****@*****.**", user = u1) v2 = Volunteer(first_name = "James", last_name = "Doe", address = "7 Oak Street", city = "Elmgrove", state = "California", country = "USA", phone_number = "23454545", email = "*****@*****.**", user = u2) v3 = Volunteer(id = 999, first_name = "George", last_name = "Doe", address = "7 Elm Street", city = "Oakgrove", state = "California", country = "USA", phone_number = "23454545", email = "*****@*****.**", user = u3) v1.save() v2.save() v3.save() #test typical cases self.assertIsNotNone(get_volunteer_by_id(v1.id)) self.assertIsNotNone(get_volunteer_by_id(v2.id)) self.assertIsNotNone(get_volunteer_by_id(v3.id)) self.assertEqual(get_volunteer_by_id(v1.id), v1) self.assertEqual(get_volunteer_by_id(v2.id), v2) self.assertEqual(get_volunteer_by_id(v3.id), v3) #why doesn't testing for equality work? #self.assertIs(get_volunteer_by_id(v1.id), v1) #self.assertIs(get_volunteer_by_id(v2.id), v2) #self.assertIs(get_volunteer_by_id(v3.id), v3) #test non-existant cases self.assertIsNone(get_volunteer_by_id(100)) self.assertIsNone(get_volunteer_by_id(200)) self.assertIsNone(get_volunteer_by_id(300)) self.assertIsNone(get_volunteer_by_id(400)) self.assertNotEqual(get_volunteer_by_id(100), v1) self.assertNotEqual(get_volunteer_by_id(200), v1) self.assertNotEqual(get_volunteer_by_id(300), v2) self.assertNotEqual(get_volunteer_by_id(400), v2)
def test_register(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name = "Yoshi", last_name = "Turtle", address = "Mario Land", city = "Nintendo Land", state = "Nintendo State", country = "Nintendo Nation", phone_number = "2374983247", email = "*****@*****.**", user = u1) v2 = Volunteer(first_name = "John", last_name = "Doe", address = "7 Alpine Street", city = "Maplegrove", state = "Wyoming", country = "USA", phone_number = "23454545", email = "*****@*****.**", user = u2) v1.save() v2.save() j1 = Job(job_title = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job") j2 = Job(job_title = "Systems Administrator", start_date = "2012-9-1", end_date = "2012-10-26", description = "A systems administrator job") j1.save() j2.save() s1 = Shift(date = "2012-10-23", location = "Google Drive", start_time = "9:00", end_time = "3:00", max_volunteers = 1, slots_remaining = 1, job = j1) s2 = Shift(date = "2012-10-23", location = "Infinite Loop", start_time = "10:00", end_time = "4:00", max_volunteers = 2, slots_remaining = 2, job = j1) s3 = Shift(date = "2012-10-23", location = "Loopy Loop Road", start_time = "12:00", end_time = "6:00", max_volunteers = 4, slots_remaining = 4, job = j2) s1.save() s2.save() s3.save() #test typical cases self.assertTrue(register(v1.id, s1.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) self.assertTrue(register(v1.id, s2.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) self.assertTrue(register(v1.id, s3.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) #test cases where volunteer tries to sign up for a shift they are already signed up for self.assertFalse(register(v1.id, s1.id)) self.assertFalse(register(v1.id, s2.id)) self.assertFalse(register(v1.id, s3.id)) #test case where more than one volunteer signs up for the same shift #v2 can't sign up for s1 because there are no slots remaining self.assertFalse(register(v2.id, s1.id)) self.assertTrue(register(v2.id, s2.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)) self.assertTrue(register(v2.id, s3.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id)) #test cases where a volunteer tries to sign up for a shift they are already signed up for self.assertFalse(register(v2.id, s2.id)) self.assertFalse(register(v2.id, s3.id))
def post(self, request, uidb64=None, token=None, *arg, **kwargs): UserModel = get_user_model() form = self.form_class(request.POST) assert uidb64 is not None and token is not None # checked by URLconf try: uid = urlsafe_base64_decode(uidb64) asp = Client.objects.get(user=User.objects.get(id=uid)) user = UserModel._default_manager.get(pk=uid) except (TypeError, ValueError, OverflowError, UserModel.DoesNotExist): user = None if user is not None and shareable_link_token.check_token(user, token): if form.is_valid(): phone_number = form.cleaned_data['phone_number'] first_name = form.cleaned_data['first_name'] last_name = form.cleaned_data['last_name'] email = form.cleaned_data['email'] password = form.cleaned_data['password'] county = form.cleaned_data['county'] constituency = form.cleaned_data['constituency'] ward = form.cleaned_data['ward'] country = Country.objects.get(country_name='Kenya') format_number = SMS() phone_number = format_number.format_phone_number(phone_number) if self.validate_phone_number(phone_number, asp): new_user = User.objects.create_user(first_name=first_name, last_name=last_name, username=email, password=password, email=email, is_staff=False, is_superuser=False, is_active=True) new_volunteer = Volunteer(phone_number=phone_number, aspirant=asp, user=new_user, country=country, county=county, constituency=constituency, ward=ward, is_active=True) try: new_volunteer.save() messages.success( request, format_html( "{}<a id='anchor_redirect' href='{}://{}/{}'>{}</a>{}", 'Successful volunteer registration.', 'http', request.META['HTTP_HOST'], 'login_page', 'Click Here', ' to access your account.')) txt_template = 'email/volunteer_registration_email.txt' html_template = 'email/volunteer_registration_email.html' recipient = [new_user] try: email = SendEmail() email.tuma_mail(recipient, txt_template, html_template) except Exception, e: print(str(e)) return self.form_valid(form) except Exception, e: new_user.delete() messages.error( request, format_html( "<span class='w3-text-red'>{}</span>", 'Unsuccessful volunteer registration.')) return self.render_to_response( self.get_context_data(form=form)) else: messages.error( request, 'Phone Number exists.Unsuccessful volunteer registration.' ) return self.form_invalid(form)
def test_get_unlogged_shifts_by_volunteer_id(self): u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() # sign up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) # test typical case shift_list = get_unlogged_shifts_by_volunteer_id(v1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list)
def test_clear_shift_hours(self): u1 = User.objects.create_user('Yoshi') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() register(v1.id, s1.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) register(v1.id, s2.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) register(v1.id, s3.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(v1.id, s1.id, start_time, end_time) start_time = datetime.time(hour=10, minute=0) end_time = datetime.time(hour=12, minute=0) add_shift_hours(v1.id, s2.id, start_time, end_time) start_time = datetime.time(hour=5, minute=0) end_time = datetime.time(hour=6, minute=0) add_shift_hours(v1.id, s3.id, start_time, end_time) clear_shift_hours(v1.id, s1.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time) clear_shift_hours(v1.id, s2.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time) clear_shift_hours(v1.id, s3.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time)
def test_cancel_shift_registration(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #test cases when try to cancel when they aren't signed up for a shift with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s2.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s3.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s2.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s3.id) #register volunteers to shifts register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) #test typical cases cancel_shift_registration(v1.id, s1.id) cancel_shift_registration(v1.id, s2.id) cancel_shift_registration(v1.id, s3.id) #cancel_shift_registration(v2.id, s1.id) #why is this throwing ObjectDoesNotExist? cancel_shift_registration(v2.id, s2.id) cancel_shift_registration(v2.id, s3.id)
def test_get_volunteer_by_id(self): u1 = User.objects.create_user('John') u2 = User.objects.create_user('James') u3 = User.objects.create_user('George') v1 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="James", last_name="Doe", address="7 Oak Street", city="Elmgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v3 = Volunteer(id=999, first_name="George", last_name="Doe", address="7 Elm Street", city="Oakgrove", state="California", country="USA", phone_number="23454545", email="*****@*****.**", user=u3) v1.save() v2.save() v3.save() #test typical cases self.assertIsNotNone(get_volunteer_by_id(v1.id)) self.assertIsNotNone(get_volunteer_by_id(v2.id)) self.assertIsNotNone(get_volunteer_by_id(v3.id)) self.assertEqual(get_volunteer_by_id(v1.id), v1) self.assertEqual(get_volunteer_by_id(v2.id), v2) self.assertEqual(get_volunteer_by_id(v3.id), v3) #why doesn't testing for equality work? #self.assertIs(get_volunteer_by_id(v1.id), v1) #self.assertIs(get_volunteer_by_id(v2.id), v2) #self.assertIs(get_volunteer_by_id(v3.id), v3) #test non-existant cases self.assertIsNone(get_volunteer_by_id(100)) self.assertIsNone(get_volunteer_by_id(200)) self.assertIsNone(get_volunteer_by_id(300)) self.assertIsNone(get_volunteer_by_id(400)) self.assertNotEqual(get_volunteer_by_id(100), v1) self.assertNotEqual(get_volunteer_by_id(200), v1) self.assertNotEqual(get_volunteer_by_id(300), v2) self.assertNotEqual(get_volunteer_by_id(400), v2)
def test_send_reminder(self): u1 = User.objects.create_user("Marina") u2 = User.objects.create_user("Anna") v1 = Volunteer( first_name="Marina", last_name="Tsvetaeva", address="MyAddress", city="MyCity", state="MyState", country="MyCountry", phone_number="2374983247", email="*****@*****.**", reminder_days=1, user=u1, ) v2 = Volunteer( first_name="Anna", last_name="Akhmatova", address="MyAddress", city="MyCity", state="MyState", country="MyCountry", phone_number="2374983247", email="*****@*****.**", reminder_days=7, user=u2, ) v1.save() v2.save() e1 = Event(name="GHC 2015", start_date="2015-07-22", end_date="2015-08-23") e1.save() j1 = Job( name="Volunteer Program Manager", start_date="2015-07-22", end_date="2015-08-23", description="Volunteer Program Manager", event=e1, ) j2 = Job( name="Volunteer Coordinator", start_date="2015-07-22", end_date="2015-08-23", description="Volunteer Coordinator", event=e1, ) j1.save() j2.save() s1 = Shift( date="2015-08-23", start_time="9:00", end_time="3:00", max_volunteers=1, address="Test address", city="Atlanta", state="Georgia", country="USA", venue="Near the south entrance", job=j1, ) s2 = Shift( date=date.today() + timedelta(7), # one week date start_time="10:00", end_time="4:00", max_volunteers=2, address="Test address", city="Atlanta", state="Georgia", country="USA", venue="Near the south entrance", job=j1, ) s3 = Shift( date=date.today() + timedelta(1), # tomorrow date start_time="12:00", end_time="6:00", max_volunteers=4, address="Test address", city="Atlanta", state="Georgia", country="USA", venue="Near the south entrance", job=j2, ) s1.save() s2.save() s3.save() # sign up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) # test typical case result = send_reminder() self.assertEqual(result, 2)
def test_clear_shift_hours(self): u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() register(v1.id, s1.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) register(v1.id, s2.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) register(v1.id, s3.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(v1.id, s1.id, start_time, end_time) start_time = datetime.time(hour=10, minute=0) end_time = datetime.time(hour=12, minute=0) add_shift_hours(v1.id, s2.id, start_time, end_time) start_time = datetime.time(hour=5, minute=0) end_time = datetime.time(hour=6, minute=0) add_shift_hours(v1.id, s3.id, start_time, end_time) clear_shift_hours(v1.id, s1.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time) clear_shift_hours(v1.id, s2.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time) clear_shift_hours(v1.id, s3.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time)
def test_edit_shift_hours(self): u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j1.save() s1 = Shift(date="2012-10-23", start_time="1:00", end_time="12:00", max_volunteers=1, job=j1) s1.save() register(v1.id, s1.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(v1.id, s1.id, start_time, end_time) start_time = datetime.time(hour=10, minute=0) end_time = datetime.time(hour=11, minute=0) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=1, minute=0) end_time = datetime.time(hour=4, minute=0) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=4, minute=15) end_time = datetime.time(hour=12, minute=35) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=2, minute=5) end_time = datetime.time(hour=4, minute=15) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=5, minute=0) end_time = datetime.time(hour=5, minute=30) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time)
def test_is_signed_up(self): u1 = User.objects.create_user("Yoshi") u2 = User.objects.create_user("John") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v2 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2, ) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() # test cases where not signed up yet self.assertFalse(is_signed_up(v1.id, s1.id)) self.assertFalse(is_signed_up(v1.id, s2.id)) self.assertFalse(is_signed_up(v1.id, s3.id)) # test cases where signed up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) self.assertTrue(is_signed_up(v1.id, s1.id)) self.assertTrue(is_signed_up(v1.id, s2.id)) self.assertTrue(is_signed_up(v1.id, s3.id)) # test case where more than one volunteer signs up for the same shift self.assertFalse(is_signed_up(v2.id, s1.id)) self.assertFalse(is_signed_up(v2.id, s2.id)) self.assertFalse(is_signed_up(v2.id, s3.id)) register(v2.id, s2.id) register(v2.id, s3.id) self.assertFalse(is_signed_up(v2.id, s1.id)) self.assertTrue(is_signed_up(v2.id, s2.id)) self.assertTrue(is_signed_up(v2.id, s3.id))
def test_edit_shift_hours(self): u1 = User.objects.create_user('Yoshi') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j1.save() s1 = Shift(date="2012-10-23", start_time="1:00", end_time="12:00", max_volunteers=1, job=j1) s1.save() register(v1.id, s1.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(v1.id, s1.id, start_time, end_time) start_time = datetime.time(hour=10, minute=0) end_time = datetime.time(hour=11, minute=0) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=1, minute=0) end_time = datetime.time(hour=4, minute=0) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=4, minute=15) end_time = datetime.time(hour=12, minute=35) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=2, minute=5) end_time = datetime.time(hour=4, minute=15) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=5, minute=0) end_time = datetime.time(hour=5, minute=30) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time)
def test_get_volunteer_shift_by_id(self): u1 = User.objects.create_user("Yoshi") u2 = User.objects.create_user("John") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v2 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2, ) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() # test cases where signed up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) self.assertEqual( get_volunteer_shift_by_id(v1.id, s1.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) ) self.assertEqual( get_volunteer_shift_by_id(v1.id, s2.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id) ) self.assertEqual( get_volunteer_shift_by_id(v1.id, s3.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id) ) # self.assertEqual(get_volunteer_shift_by_id(v2.id, s1.id), # VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s1.id)) # why does this throw DoesNotExist? self.assertEqual( get_volunteer_shift_by_id(v2.id, s2.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id) ) self.assertEqual( get_volunteer_shift_by_id(v2.id, s3.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id) )
def test_get_unlogged_shifts_by_volunteer_id(self): u1 = User.objects.create_user('Yoshi') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #sign up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) #test typical case shift_list = get_unlogged_shifts_by_volunteer_id(v1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list)
def receive_sms(request): try: f = open("log.log", "a+") data_to_log = request.POST data_to_log['date_time'] = str(datetime.datetime.now()) f.write("{}\n".format(json.dumps(data_to_log))) f.close() except Exception as e: f = open("log.log", "a+") f.write(str(e)) f.close() sender = request.POST.get( 'from') # phone number from which the message originated from message = request.POST.get('text') # Message from sender message = message.strip() date = request.POST.get('date') # Date time when the message was sent msg_id = request.POST.get('id') # Message ID from Africa's Talking aspirant = Client.objects.all()[0] sms_inbox = Inbox(africastalking_msg_id=msg_id, phone_number=sender, message=message, date_created=datetime.datetime.now(), date_received=date, user=aspirant.user) subscriber_exist = Subscriber.objects.filter(phone_number=sender).exists() volunteer_exist = Volunteer.objects.filter(phone_number=sender).exists() try: message_arr = message.split(' ') first_word = message_arr[0].lower() first_word = first_word.strip() sms_util = SMS() if len(message_arr) == 1: if first_word == 'vote' and subscriber_exist is False: # subscriber user sms_inbox.message_type = 'SUBSCRIBE' sms_inbox.save() subscriber = Subscriber( phone_number=sms_util.format_phone_number(sender), aspirant=aspirant, is_active=True) subscriber.save() ret_msg = """You have successfully subscribe to {}. Send the word campaign to {} to view his campaign."""\ .format(aspirant.alias_name, settings.SMS_SHORT_CODE) sms_util.send_single_sms(sms_util.format_phone_number(sender), ret_msg) Outbox(phone_number=sms_util.format_phone_number(sender), message=ret_msg, message_type="ACK", is_sent=True, user=aspirant.user, date_sent=datetime.datetime.now()).save() return elif first_word == 'volunteer': ret_msg = """To register as {}'s volunteer, send the word volunteer followed by your email address to {}.""" \ .format(aspirant.alias_name, settings.SMS_SHORT_CODE) sms_util.send_single_sms(sms_util.format_phone_number(sender), ret_msg) Outbox(phone_number=sms_util.format_phone_number(sender), message=ret_msg, message_type="ACK", is_sent=True, user=aspirant.user, date_sent=datetime.datetime.now()).save() elif first_word.isdigit(): # SMS menu phone_number = sms_util.format_phone_number(sender) sms_menu_log = SMSMenuLog.objects.filter( phone_number=phone_number).order_by('-date_created')[0] allowed_options = json.loads(sms_menu_log.allowed_options) extra_info = json.loads(sms_menu_log.extra_info) menu_type = sms_menu_log.menu_type menu_option = int(first_word) if menu_option not in allowed_options: msg = extra_info['FALL_BACK_SMS'] sms_util.send_single_sms(phone_number, msg) return if menu_type == 'MANIFESTO': #Send campaign sms_inbox.message_type = 'MANIFESTO' sms_inbox.save() manifesto_id = extra_info['MANIFESTO_ID'] options_mapping = extra_info['OPTIONS_MAPPING'] manifesto = Campaign.objects.get(id=manifesto_id) manifesto_item_id = options_mapping[first_word] manifesto_item = CampaignItems.objects.get( campaign=manifesto, id=manifesto_item_id) manifesto_msg = """{}\n{}""".format( manifesto_item.title, manifesto_item.content) sms_util.send_single_sms(phone_number, manifesto_msg) manifesto_item_reception = CampaignItemsReception( campaign_item=CampaignItems.objects.get( id=manifesto_item_id), date_read=datetime.datetime.now()) try: manifesto_item_reception.subscriber = Subscriber.objects.get( phone_number=phone_number) except: pass manifesto_item_reception.save() elif menu_type == 'SURVEY': #Send survey sms_inbox.message_type = 'SURVEY' sms_inbox.save() survey_id = extra_info['SURVEY_ID'] was_question = extra_info['WAS_QUESTION'] if was_question == 1: # Save survey response options_mapping = extra_info['OPTIONS_MAPPING'] survey_response = SurveyResponse() survey_response.survey_option = SurveyOptions.objects.get( id=options_mapping[first_word]) try: survey_response.subscriber = Subscriber.objects.get( phone_number=sms_util.format_phone_number( phone_number)) except: pass survey_response.save() next_question_number = extra_info['NEXT_QUESTION_NUMBER'] survey = Survey.objects.get(id=survey_id) try: survey_question = SurveyQuestion.objects.get( survey=survey, question_number=next_question_number) question_options = SurveyOptions.objects.filter( survey_question=survey_question) msg = "{}\n".format(survey_question.question) fall_back_sms = "Invalid option.\n" allowed_options = [] options_mapping = {} for i in range(0, len(question_options)): msg += "{}. {}\n".format( i + 1, question_options[i].option) fall_back_sms += "{}. {}\n".format( i + 1, question_options[i].option) allowed_options.append(i + 1) options_mapping[i + 1] = question_options[i].id SMSMenuLog(date_created=datetime.datetime.now(), phone_number=phone_number, menu_type='SURVEY', allowed_options=json.dumps(allowed_options), extra_info=json.dumps({ 'WAS_QUESTION': 1, 'NEXT_QUESTION_NUMBER': next_question_number + 1, 'SURVEY_ID': survey_id, 'FALL_BACK_SMS': fall_back_sms, 'OPTIONS_MAPPING': options_mapping })).save() sms_util.send_single_sms(phone_number, msg) except: msg = "Thank you for participating in this survey." sms_util.send_single_sms(phone_number, msg) elif first_word == 'volunteer' and volunteer_exist is False: # Register volunteer sms_inbox.message_type = 'VOLUNTEER' sms_inbox.save() email_address = message_arr[1] try: validate_email(email_address) user = User(username=email_address, email=email_address) user.save() volunteer = Volunteer( phone_number=sms_util.format_phone_number(sender), aspirant=aspirant, is_active=True, user=user) volunteer.save() try: recipient = [user] email = SendEmail() txt_template = 'email/email_template_volunteer_registration.txt' html_template = 'email/email_template_volunteer_registration.html' send_mail = email.tuma_mail(recipient, txt_template, html_template) if send_mail: ret_msg = """You have successfully been registered as {}'s volunteer. A verification link has been sent to {}.""" \ .format(aspirant.alias_name, email_address) else: ret_msg = """Unsuccessful registration.Unable to sent verification link to {}""" \ .format(email_address) volunteer.delete() user.delete() except Exception, e: ret_msg = """Unsuccessful registration.Unable to sent verification link to {}""" \ .format(email_address) volunteer.delete() user.delete() sms_util.send_single_sms(sms_util.format_phone_number(sender), ret_msg) Outbox(phone_number=sms_util.format_phone_number(sender), message=ret_msg, message_type="ACK", is_sent=True, user=aspirant.user, date_sent=datetime.datetime.now()).save() return except: ret_msg = """Invalid email address.Please send the word volunteer followed by a valid email address to {}.""" \ .format(aspirant.alias_name, settings.SMS_SHORT_CODE) sms_util.send_single_sms(sms_util.format_phone_number(sender), ret_msg) Outbox(phone_number=sms_util.format_phone_number(sender), user=aspirant.user, message=ret_msg, message_type="ACK", is_sent=True, date_sent=datetime.datetime.now()).save()
def test_get_volunteer_shift_by_id(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #test cases where signed up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) self.assertEqual( get_volunteer_shift_by_id(v1.id, s1.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) self.assertEqual( get_volunteer_shift_by_id(v1.id, s2.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) self.assertEqual( get_volunteer_shift_by_id(v1.id, s3.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) #self.assertEqual(get_volunteer_shift_by_id(v2.id, s1.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s1.id)) #why does this throw DoesNotExist? self.assertEqual( get_volunteer_shift_by_id(v2.id, s2.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)) self.assertEqual( get_volunteer_shift_by_id(v2.id, s3.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))
def test_get_shifts_signed_up_for(self): u1 = User.objects.create_user('Yoshi') v1 = Volunteer(first_name = "Yoshi", last_name = "Turtle", address = "Mario Land", city = "Nintendo Land", state = "Nintendo State", country = "Nintendo Nation", phone_number = "2374983247", email = "*****@*****.**", user = u1) v1.save() j1 = Job(job_title = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job") j2 = Job(job_title = "Systems Administrator", start_date = "2012-9-1", end_date = "2012-10-26", description = "A systems administrator job") j1.save() j2.save() s1 = Shift(date = "2012-10-23", location = "Google Drive", start_time = "9:00", end_time = "3:00", max_volunteers = 1, slots_remaining = 1, job = j1) s2 = Shift(date = "2012-10-23", location = "Infinite Loop", start_time = "10:00", end_time = "4:00", max_volunteers = 2, slots_remaining = 2, job = j1) s3 = Shift(date = "2012-10-23", location = "Loopy Loop Road", start_time = "12:00", end_time = "6:00", max_volunteers = 4, slots_remaining = 4, job = j2) s1.save() s2.save() s3.save() #sign up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) #test typical case shift_list = get_shifts_signed_up_for(v1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list)
def test_is_signed_up(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #test cases where not signed up yet self.assertFalse(is_signed_up(v1.id, s1.id)) self.assertFalse(is_signed_up(v1.id, s2.id)) self.assertFalse(is_signed_up(v1.id, s3.id)) #test cases where signed up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) self.assertTrue(is_signed_up(v1.id, s1.id)) self.assertTrue(is_signed_up(v1.id, s2.id)) self.assertTrue(is_signed_up(v1.id, s3.id)) #test case where more than one volunteer signs up for the same shift self.assertFalse(is_signed_up(v2.id, s1.id)) self.assertFalse(is_signed_up(v2.id, s2.id)) self.assertFalse(is_signed_up(v2.id, s3.id)) register(v2.id, s2.id) register(v2.id, s3.id) self.assertFalse(is_signed_up(v2.id, s1.id)) self.assertTrue(is_signed_up(v2.id, s2.id)) self.assertTrue(is_signed_up(v2.id, s3.id))
def test_search_volunteers(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('Ashley') u3 = User.objects.create_user('Zelda') o1 = Organization(organization_name = "Apple") o2 = Organization(organization_name = "Google") o1.save() o2.save() v1 = Volunteer(first_name = "Yoshi", last_name = "Doe", address = "7 Oak Street", city = "Elmgrove", state = "California", country = "USA", phone_number = "23454545", organization = o1, email = "*****@*****.**", user = u1) v2 = Volunteer(first_name = "Ashley", last_name = "Doe", address = "7 Alpine Street", city = "Maplegrove", state = "Wyoming", country = "USA", phone_number = "23454545", organization = o2, email = "*****@*****.**", user = u2) v3 = Volunteer(id = 999, first_name = "Zelda", last_name = "Doe", address = "7 Elm Street", city = "Oakgrove", state = "California", country = "USA", phone_number = "23454545", unlisted_organization = "Government of Canada", email = "*****@*****.**", user = u3) v1.save() v2.save() v3.save() #if no search parameters are given, it returns all volunteers search_list = search_volunteers("", "", "", "", "", "") self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 3) self.assertIn(v1, search_list) self.assertIn(v2, search_list) self.assertIn(v3, search_list) search_list = search_volunteers(None, None, None, None, None, None) self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 3) self.assertIn(v1, search_list) self.assertIn(v2, search_list) self.assertIn(v3, search_list) #test exact search search_list = search_volunteers("Yoshi", "Doe", "Elmgrove", "California", "USA", "Apple") self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 1) self.assertIn(v1, search_list) self.assertNotIn(v2, search_list) self.assertNotIn(v3, search_list) #test partial search search_list = search_volunteers("Yoshi", None, None, None, None, None) self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 1) self.assertIn(v1, search_list) self.assertNotIn(v2, search_list) self.assertNotIn(v3, search_list) search_list = search_volunteers(None, "Doe", None, None, None, None) self.assertNotEqual(search_list, False) self.assertEqual(len(search_list), 3) self.assertIn(v1, search_list) self.assertIn(v2, search_list) self.assertIn(v3, search_list) #test no search matches search_list = search_volunteers("Billy", "Doe", "Montreal", "Quebec", "Canada", "Ubisoft") self.assertEqual(len(search_list), 0) self.assertNotIn(v1, search_list) self.assertNotIn(v2, search_list) self.assertNotIn(v3, search_list)
def test_register(self): RESULT_IS_VALID = "IS_VALID" ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP" ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING" u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #test typical cases register(v1.id, s1.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) register(v1.id, s2.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) register(v1.id, s3.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) #test cases where volunteer tries to sign up for a shift they are already signed up for self.assertEqual(register(v1.id, s1.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v1.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v1.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP) #test case where more than one volunteer signs up for the same shift #v2 can't sign up for s1 because there are no slots remaining self.assertEqual(register(v2.id, s1.id), ERROR_CODE_NO_SLOTS_REMAINING) register(v2.id, s2.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)) register(v2.id, s3.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id)) #test cases where a volunteer tries to sign up for a shift they are already signed up for self.assertEqual(register(v2.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v2.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)
def test_add_shift_hours(self): u1 = User.objects.create_user('Yoshi') v1 = Volunteer(first_name = "Yoshi", last_name = "Turtle", address = "Mario Land", city = "Nintendo Land", state = "Nintendo State", country = "Nintendo Nation", phone_number = "2374983247", email = "*****@*****.**", user = u1) v1.save() e1 = Event(name = "Open Source Event", start_date = "2012-10-22", end_date = "2012-10-23") e1.save() j1 = Job(name = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job", event = e1) j2 = Job(name = "Systems Administrator", start_date = "2012-9-1", end_date = "2012-10-26", description = "A systems administrator job", event = e1) j1.save() j2.save() s1 = Shift(date = "2012-10-23", start_time = "9:00", end_time = "3:00", max_volunteers = 1, job = j1) s2 = Shift(date = "2012-10-23", start_time = "10:00", end_time = "4:00", max_volunteers = 2, job = j1) s3 = Shift(date = "2012-10-23", start_time = "12:00", end_time = "6:00", max_volunteers = 4, job = j2) s1.save() s2.save() s3.save() #register will return an exception on error (such as when invalid parameters are passed) #if an exception does get raised, this test will automatically fail register(v1.id, s1.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) register(v1.id, s2.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) register(v1.id, s3.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id); self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=10, minute=0) end_time = datetime.time(hour=12, minute=0) add_shift_hours(v1.id, s2.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id); self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=5, minute=0) end_time = datetime.time(hour=6, minute=0) add_shift_hours(v1.id, s3.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id); self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time)
def test_generate_report(self): """ Tests test_generate_report(volunteer_shift_list) """ u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() shift_list = [s1, s2, s3] self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list) # register will return an exception on error # (such as when invalid parameters are passed) # if an exception does get raised, this test will automatically fail register(v1.id, s1.id) volunteer_shift_1 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift_1) register(v1.id, s2.id) volunteer_shift_2 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id) self.assertIsNotNone(volunteer_shift_2) register(v1.id, s3.id) volunteer_shift_3 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id) self.assertIsNotNone(volunteer_shift_3) volunteer_shift_list = [volunteer_shift_1, volunteer_shift_2, volunteer_shift_3] self.assertIsNotNone(generate_report(volunteer_shift_list))