def test_is_signed_up(self):
        """ Uses volunteers v1,v2 and shifts s1,s2,s3 """

        # test cases where not signed up yet
        self.assertFalse(is_signed_up(self.v1.id, self.s1.id))
        self.assertFalse(is_signed_up(self.v1.id, self.s2.id))
        self.assertFalse(is_signed_up(self.v1.id, self.s3.id))

        # test cases where signed up
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)
        register(self.v1.id, self.s3.id)

        self.assertTrue(is_signed_up(self.v1.id, self.s1.id))
        self.assertTrue(is_signed_up(self.v1.id, self.s2.id))
        self.assertTrue(is_signed_up(self.v1.id, self.s3.id))

        # test case where more than one volunteer signs up for the same shift
        self.assertFalse(is_signed_up(self.v2.id, self.s1.id))
        self.assertFalse(is_signed_up(self.v2.id, self.s2.id))
        self.assertFalse(is_signed_up(self.v2.id, self.s3.id))

        register(self.v2.id, self.s2.id)
        register(self.v2.id, self.s3.id)

        self.assertFalse(is_signed_up(self.v2.id, self.s1.id))
        self.assertTrue(is_signed_up(self.v2.id, self.s2.id))
        self.assertTrue(is_signed_up(self.v2.id, self.s3.id))
    def test_generate_report(self):
        """ Uses shifts s1, s2 and volunteer v1
        Tests test_generate_report(volunteer_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(self.v1.id, self.s1.id)
        volunteer_shift_1 = VolunteerShift.objects.get(
                                volunteer_id=self.v1.id,
                                shift_id=self.s1.id
                                )
        self.assertIsNotNone(volunteer_shift_1)

        register(self.v1.id, self.s2.id)
        volunteer_shift_2 = VolunteerShift.objects.get(
                                    volunteer_id=self.v1.id,
                                    shift_id=self.s2.id
                                    )
        self.assertIsNotNone(volunteer_shift_2)

        volunteer_shift_list = [
                                volunteer_shift_1,
                                volunteer_shift_2
                                ]

        reports = generate_report(volunteer_shift_list)
        self.assertEqual(len(reports), 2)
        self.assertIsNotNone(reports)
Example #3
0
    def test_get_volunteer_report(self):

        # register volunteer for 2 shifts, log hours for one
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s3.id)

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)

        volunteer_shift_list_1 = get_volunteer_shifts(self.v1.id, self.e1.name,
                                                      self.j1.name,
                                                      "2012-10-22",
                                                      "2012-10-30")
        report_1 = generate_report(volunteer_shift_list_1)

        volunteer_shift_list_2 = get_volunteer_shifts(self.v1.id, self.e1.name,
                                                      self.j2.name, "2012-9-1",
                                                      "2012-10-26")
        report_2 = generate_report(volunteer_shift_list_2)

        # verify that report for logged shift appears
        self.assertEqual(len(report_1), 1)
        self.assertEqual(len(report_2), 0)
        self.assertEqual(self.e1.name, report_1[0]["event_name"])
        self.assertEqual(self.j1.name, report_1[0]["job_name"])
    def test_get_administrator_report(self):

        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s3.id)

        start_time = datetime.time(hour=11, minute=0)
        end_time = datetime.time(hour=12, minute=0)
        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)
        add_shift_hours(self.v2.id, self.s3.id, start_time, end_time)

        report_1 = get_administrator_report(self.v1.first_name, "", "",
                                            self.e1.name, self.j1.name,
                                            "2012-10-22", "2012-10-30")
        report_2 = get_administrator_report(self.v1.first_name, "", "",
                                            self.e1.name, self.j2.name,
                                            "2012-9-1", "2012-10-26")
        report_3 = get_administrator_report("", "", "", self.e1.name,
                                            self.j2.name, "", "")

        # verify that report for logged shift appears
        self.assertEqual(len(report_1), 1)
        self.assertEqual(len(report_2), 0)
        self.assertEqual(len(report_3), 1)
        self.assertEqual(self.v1.first_name, report_1[0]["first_name"])
        self.assertEqual(self.v2.first_name, report_3[0]["first_name"])
Example #5
0
    def test_generate_report(self):
        """ Uses shifts s1, s2 and volunteer v1
        Tests test_generate_report(volunteer_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
        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        register(self.v1.id, self.s1.id)
        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift_1 = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                       shift_id=self.s1.id)
        self.assertIsNotNone(volunteer_shift_1)

        register(self.v1.id, self.s2.id)
        add_shift_hours(self.v1.id, self.s2.id, start_time, end_time)
        volunteer_shift_2 = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                       shift_id=self.s2.id)
        self.assertIsNotNone(volunteer_shift_2)

        volunteer_shift_list = [volunteer_shift_1, volunteer_shift_2]

        reports = generate_report(volunteer_shift_list)
        self.assertEqual(len(reports), 2)
        self.assertIsNotNone(reports)
Example #6
0
    def test_get_signed_up_jobs_for_volunteer(self):
        """ Uses jobs j1,j3, shifts s1,s2,s3 and volunteers v1,v2"""

        # volunteer 1 registers for 3 shifts belonging to two jobs - registers for s1 first to check if sorting is successful
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s3.id)
        register(self.v1.id, self.s2.id)

        # volunteer 2 registers for 2 shifts, where s1 has no available slots
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s3.id)

        job_list_for_vol_1 = get_signed_up_jobs_for_volunteer(self.v1.id)
        job_list_for_vol_2 = get_signed_up_jobs_for_volunteer(self.v2.id)
        job_list_for_vol_3 = get_signed_up_jobs_for_volunteer(self.v3.id)

        # tests for returned jobs, their order and duplication for volunteer 1
        self.assertEqual(len(job_list_for_vol_1), 2)
        self.assertIn(self.j1.name, job_list_for_vol_1)
        self.assertIn(self.j3.name, job_list_for_vol_1)
        self.assertEqual(job_list_for_vol_1[0], self.j3.name)
        self.assertEqual(job_list_for_vol_1[1], self.j1.name)

        # tests for returned jobs for volunteer 2
        self.assertEqual(len(job_list_for_vol_2), 1)
        self.assertIn(self.j3.name, job_list_for_vol_2)
        self.assertNotIn(self.j1.name, job_list_for_vol_2)

        # test for returned jobs for unregistered volunteer 3
        self.assertEqual(len(job_list_for_vol_3), 0)
    def test_get_volunteers_by_shift_id(self):
        """ Uses volunteers v1,v2,v3 and shifts s1,s2,s3 """

        # sign up
        register(self.v3.id, self.s1.id)
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s3.id)
        register(self.v3.id, self.s3.id)
        register(self.v2.id, self.s3.id)

        # get volunteer lists
        volunteer_list_for_shift_1 = get_volunteers_by_shift_id(self.s1.id)
        volunteer_list_for_shift_2 = get_volunteers_by_shift_id(self.s2.id)
        volunteer_list_for_shift_3 = get_volunteers_by_shift_id(self.s3.id)

        # test typical case
        self.assertEqual(len(volunteer_list_for_shift_1), 1)
        self.assertEqual(len(volunteer_list_for_shift_2), 0)
        self.assertEqual(len(volunteer_list_for_shift_3), 3)

        self.assertIn(self.v3, volunteer_list_for_shift_1)
        self.assertNotIn(self.v1, volunteer_list_for_shift_1)
        self.assertIn(self.v1, volunteer_list_for_shift_3)
        self.assertIn(self.v2, volunteer_list_for_shift_3)
        self.assertIn(self.v3, volunteer_list_for_shift_3)

        #test order
        self.assertEqual(volunteer_list_for_shift_3[0], self.v3)
        self.assertEqual(volunteer_list_for_shift_3[1], self.v2)
        self.assertEqual(volunteer_list_for_shift_3[2], self.v1)
    def test_is_signed_up(self):
        """ Uses volunteers v1,v2 and shifts s1,s2,s3 """

        # test cases where not signed up yet
        self.assertFalse(is_signed_up(self.v1.id, self.s1.id))
        self.assertFalse(is_signed_up(self.v1.id, self.s2.id))
        self.assertFalse(is_signed_up(self.v1.id, self.s3.id))

        # test cases where signed up
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)
        register(self.v1.id, self.s3.id)

        self.assertTrue(is_signed_up(self.v1.id, self.s1.id))
        self.assertTrue(is_signed_up(self.v1.id, self.s2.id))
        self.assertTrue(is_signed_up(self.v1.id, self.s3.id))

        # test case where more than one volunteer signs up for the same shift
        self.assertFalse(is_signed_up(self.v2.id, self.s1.id))
        self.assertFalse(is_signed_up(self.v2.id, self.s2.id))
        self.assertFalse(is_signed_up(self.v2.id, self.s3.id))

        register(self.v2.id, self.s2.id)
        register(self.v2.id, self.s3.id)

        self.assertFalse(is_signed_up(self.v2.id, self.s1.id))
        self.assertTrue(is_signed_up(self.v2.id, self.s2.id))
        self.assertTrue(is_signed_up(self.v2.id, self.s3.id))
Example #9
0
    def test_get_signed_up_events_for_volunteer(self):
        """ Uses events e1,e2, volunteers v1,v2,v3 and shift s1,s2,s3"""

        # volunteer 1 registers for 3 shifts belonging to two events - registers for s3 first to check if sorting is successful
        register(self.v1.id, self.s3.id)
        register(self.v1.id, self.s2.id)
        register(self.v1.id, self.s1.id)

        # volunteer 2 registers for 2 shifts, where s1 has no available slots
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s3.id)

        event_list_for_vol_1 = get_signed_up_events_for_volunteer(self.v1.id)
        event_list_for_vol_2 = get_signed_up_events_for_volunteer(self.v2.id)
        event_list_for_vol_3 = get_signed_up_events_for_volunteer(self.v3.id)

        # tests for returned events, their order and duplication for volunteer 1
        self.assertEqual(len(event_list_for_vol_1), 2)
        self.assertIn(self.e1.name, event_list_for_vol_1)
        self.assertIn(self.e2.name, event_list_for_vol_1)
        self.assertEqual(event_list_for_vol_1[0], self.e1.name)
        self.assertEqual(event_list_for_vol_1[1], self.e2.name)

        # tests for returned events for volunteer 2
        self.assertEqual(len(event_list_for_vol_2), 1)
        self.assertIn(self.e2.name, event_list_for_vol_2)
        self.assertNotIn(self.e1.name, event_list_for_vol_2)

        # test for returned events for unregistered volunteer 3
        self.assertEqual(len(event_list_for_vol_3), 0)
        VolunteerShift.objects.all().delete()
Example #10
0
    def test_get_signed_up_events_for_volunteer(self):
        """ Uses events e1,e2, volunteers v1,v2,v3 and shift s1,s2,s3"""

        # volunteer 1 registers for 3 shifts belonging to two events - registers for s3 first to check if sorting is successful
        register(self.v1.id, self.s3.id)
        register(self.v1.id, self.s2.id)
        register(self.v1.id, self.s1.id)

        # volunteer 2 registers for 2 shifts, where s1 has no available slots
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s3.id)

        event_list_for_vol_1 = get_signed_up_events_for_volunteer(self.v1.id)
        event_list_for_vol_2 = get_signed_up_events_for_volunteer(self.v2.id)
        event_list_for_vol_3 = get_signed_up_events_for_volunteer(self.v3.id)

        # tests for returned events, their order and duplication for volunteer 1
        self.assertEqual(len(event_list_for_vol_1), 2)
        self.assertIn(self.e1.name, event_list_for_vol_1)
        self.assertIn(self.e2.name, event_list_for_vol_1)
        self.assertEqual(event_list_for_vol_1[0], self.e1.name)
        self.assertEqual(event_list_for_vol_1[1], self.e2.name)

        # tests for returned events for volunteer 2
        self.assertEqual(len(event_list_for_vol_2), 1)
        self.assertIn(self.e2.name, event_list_for_vol_2)
        self.assertNotIn(self.e1.name, event_list_for_vol_2)

        # test for returned events for unregistered volunteer 3
        self.assertEqual(len(event_list_for_vol_3), 0)
        VolunteerShift.objects.all().delete()
    def test_get_volunteers_by_shift_id(self):
        """ Uses volunteers v1,v2,v3 and shifts s1,s2,s3 """

        # sign up
        register(self.v3.id, self.s1.id)
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s3.id) 
        register(self.v3.id, self.s3.id)
        register(self.v2.id, self.s3.id)

        # get volunteer lists 
        volunteer_list_for_shift_1 = get_volunteers_by_shift_id(self.s1.id)
        volunteer_list_for_shift_2 = get_volunteers_by_shift_id(self.s2.id)
        volunteer_list_for_shift_3 = get_volunteers_by_shift_id(self.s3.id)

        # test typical case
        self.assertEqual(len(volunteer_list_for_shift_1), 1)
        self.assertEqual(len(volunteer_list_for_shift_2), 0)
        self.assertEqual(len(volunteer_list_for_shift_3), 3)

        self.assertIn(self.v3, volunteer_list_for_shift_1)
        self.assertNotIn(self.v1, volunteer_list_for_shift_1)
        self.assertIn(self.v1, volunteer_list_for_shift_3)
        self.assertIn(self.v2, volunteer_list_for_shift_3)
        self.assertIn(self.v3, volunteer_list_for_shift_3)

        #test order
        self.assertEqual(volunteer_list_for_shift_3[0], self.v3)
        self.assertEqual(volunteer_list_for_shift_3[1], self.v2)
        self.assertEqual(volunteer_list_for_shift_3[2], self.v1)
    def test_get_signed_up_jobs_for_volunteer(self):
        """ Uses jobs j1,j3, shifts s1,s2,s3 and volunteers v1,v2"""

        # volunteer 1 registers for 3 shifts belonging to two jobs - registers for s1 first to check if sorting is successful
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s3.id)
        register(self.v1.id, self.s2.id)
        
        # volunteer 2 registers for 2 shifts, where s1 has no available slots
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s3.id)

        job_list_for_vol_1 = get_signed_up_jobs_for_volunteer(self.v1.id)
        job_list_for_vol_2 = get_signed_up_jobs_for_volunteer(self.v2.id)
        job_list_for_vol_3 = get_signed_up_jobs_for_volunteer(self.v3.id)

        # tests for returned jobs, their order and duplication for volunteer 1
        self.assertEqual(len(job_list_for_vol_1), 2)
        self.assertIn(self.j1.name, job_list_for_vol_1)
        self.assertIn(self.j3.name, job_list_for_vol_1)
        self.assertEqual(job_list_for_vol_1[0], self.j3.name)
        self.assertEqual(job_list_for_vol_1[1], self.j1.name)

        # tests for returned jobs for volunteer 2
        self.assertEqual(len(job_list_for_vol_2), 1)
        self.assertIn(self.j3.name, job_list_for_vol_2)
        self.assertNotIn(self.j1.name, job_list_for_vol_2)

        # test for returned jobs for unregistered volunteer 3
        self.assertEqual(len(job_list_for_vol_3), 0)
    def test_delete_shift(self):
        # Test delete_shift(shift_id)

        self.assertTrue(delete_shift(self.s1.id))
        self.assertFalse(delete_shift(100))

        register(self.v1.id, self.s2.id)
        self.assertFalse(delete_shift(self.s2.id))
Example #14
0
    def test_delete_shift(self):
        # Test delete_shift(shift_id)

        self.assertTrue(delete_shift(self.s1.id))
        self.assertFalse(delete_shift(100))

        register(self.v1.id, self.s2.id)
        self.assertFalse(delete_shift(self.s2.id))
    def test_get_shifts_with_open_slots_for_volunteer(self):
        """ Uses volunteer v1, v2 """

        register(self.v1.id, self.s2.id)
        register(self.v2.id, self.s1.id)

        open_slots_1 = get_shifts_with_open_slots_for_volunteer(self.j1.id, self.v1.id)
        open_slots_2 = get_shifts_with_open_slots_for_volunteer(self.j2.id, self.v1.id)

        self.assertIsNotNone(open_slots_1)
        self.assertIsNotNone(open_slots_2)
        self.assertEqual(len(open_slots_1), 0)
        self.assertEqual(len(open_slots_2), 1)

        self.assertEqual(self.s3.id, open_slots_2[0]["id"])
Example #16
0
    def test_remove_empty_jobs_for_volunteer(self):
        """ Uses jobs j1,j2,j3,j4, shift s3 and volunteer v1 """

        # volunteer registers for a shift with multiple slots
        register(self.v1.id, self.s3.id)
        register(self.v2.id, self.s4.id)

        job_list = [self.j1, self.j2, self.j3, self.j4]
        job_list = remove_empty_jobs_for_volunteer(job_list, self.v1.id)

        # Only open and non empty jobs should be left
        self.assertIn(self.j1, job_list)
        self.assertNotIn(self.j2, job_list)
        self.assertNotIn(self.j3, job_list)
        self.assertNotIn(self.j4, job_list)
Example #17
0
    def test_remove_empty_jobs_for_volunteer(self):
        """ Uses jobs j1,j2,j3,j4, shift s3 and volunteer v1 """

        # volunteer registers for a shift with multiple slots
        register(self.v1.id, self.s3.id)
        register(self.v2.id, self.s4.id)

        job_list = [self.j1, self.j2, self.j3, self.j4]
        job_list = remove_empty_jobs_for_volunteer(job_list, self.v1.id)

        # Only open and non empty jobs should be left
        self.assertIn(self.j1, job_list)
        self.assertNotIn(self.j2, job_list)
        self.assertNotIn(self.j3, job_list)
        self.assertNotIn(self.j4, job_list)
    def test_get_all_volunteer_shifts_with_hours(self):
        #  Test get_all_volunteer_shifts_with_hours() 
        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s2.id)

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)

        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)
        hours_list = get_all_volunteer_shifts_with_hours()

        self.assertEqual(len(hours_list), 1)
        self.assertEqual(self.v1.id, hours_list[0].volunteer_id)
        self.assertEqual(self.s1.id, hours_list[0].shift_id)

        self.assertIsNotNone(get_all_volunteer_shifts_with_hours())
Example #19
0
    def test_get_all_volunteer_shifts_with_hours(self):
        #  Test get_all_volunteer_shifts_with_hours()
        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s2.id)

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)

        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)
        hours_list = get_all_volunteer_shifts_with_hours()

        self.assertEqual(len(hours_list), 1)
        self.assertEqual(self.v1.id, hours_list[0].volunteer_id)
        self.assertEqual(self.s1.id, hours_list[0].shift_id)

        self.assertIsNotNone(get_all_volunteer_shifts_with_hours())
Example #20
0
 def test_get_future_shifts_by_volunteer_id(self):
     """ Uses shifts s2, s4 and volunteer v1 """
     register_event_utility()
     register_job_utility()
     s4 = register_shift_utility()
     # sign up
     register(self.v1.id, s4.id)
     register(self.v1.id, self.s2.id)
     start_time = datetime.time(hour=9, minute=0)
     end_time = datetime.time(hour=10, minute=0)
     # test typical case
     shift_list = get_future_shifts_by_volunteer_id(self.v1.id)
     self.assertIsNotNone(shift_list)
     self.assertNotEqual(shift_list, False)
     self.assertEqual(len(shift_list), 1)
     self.assertNotIn(self.s2, shift_list)
     self.assertIn(s4, shift_list)
Example #21
0
    def test_get_shifts_with_open_slots_for_volunteer(self):
        """ Uses volunteer v1, v2 """

        register(self.v1.id, self.s2.id)
        register(self.v2.id, self.s1.id)

        open_slots_1 = get_shifts_with_open_slots_for_volunteer(
            self.j1.id, self.v1.id)
        open_slots_2 = get_shifts_with_open_slots_for_volunteer(
            self.j2.id, self.v1.id)

        self.assertIsNotNone(open_slots_1)
        self.assertIsNotNone(open_slots_2)
        self.assertEqual(len(open_slots_1), 0)
        self.assertEqual(len(open_slots_2), 1)

        self.assertEqual(self.s3.id, open_slots_2[0]["id"])
Example #22
0
 def test_get_future_shifts_by_volunteer_id(self):
     """ Uses shifts s2, s4 and volunteer v1 """
     register_event_utility()
     register_job_utility()
     s4 = register_shift_utility()
     # sign up
     register(self.v1.id, s4.id)
     register(self.v1.id, self.s2.id)
     start_time = datetime.time(hour=9, minute=0)
     end_time = datetime.time(hour=10, minute=0)
     # test typical case
     shift_list = get_future_shifts_by_volunteer_id(self.v1.id)
     self.assertIsNotNone(shift_list)
     self.assertNotEqual(shift_list, False)
     self.assertEqual(len(shift_list), 1)
     self.assertNotIn(self.s2, shift_list)
     self.assertIn(s4, shift_list)
    def test_get_shifts_with_open_slots(self):
        """ Uses jobs j1, j2
        Tests get_shifts_with_open_slots(j_id) """

        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s3.id)

        shift_list_1 = get_shifts_with_open_slots(self.j1.id)
        shift_list_2 = get_shifts_with_open_slots(self.j2.id)

        self.assertIsNotNone(shift_list_1)
        self.assertIsNotNone(shift_list_2)
        self.assertEqual(len(shift_list_1), 1)
        self.assertEqual(len(shift_list_2), 1)

        self.assertNotEqual(self.s1.id, shift_list_1[0]["id"])
        self.assertEqual(self.s2.id, shift_list_1[0]["id"])
        self.assertEqual(self.s3.id, shift_list_2[0]["id"])
    def test_get_volunteer_report(self):

        # register volunteer for 2 shifts, log hours for one
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s3.id)

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)

        report_1 = get_volunteer_report(self.v1.id, self.e1.name, self.j1.name, "2012-10-22", "2012-10-30")
        report_2 = get_volunteer_report(self.v1.id, self.e1.name, self.j2.name, "2012-9-1", "2012-10-26")

        # verify that report for logged shift appears
        self.assertEqual(len(report_1), 1)
        self.assertEqual(len(report_2), 0)
        self.assertEqual(self.e1.name, report_1[0]["event_name"])
        self.assertEqual(self.j1.name, report_1[0]["job_name"])
Example #25
0
    def test_get_shifts_with_open_slots(self):
        """ Uses jobs j1, j2
        Tests get_shifts_with_open_slots(j_id) """

        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s3.id)

        shift_list_1 = get_shifts_with_open_slots(self.j1.id)
        shift_list_2 = get_shifts_with_open_slots(self.j2.id)

        self.assertIsNotNone(shift_list_1)
        self.assertIsNotNone(shift_list_2)
        self.assertEqual(len(shift_list_1), 1)
        self.assertEqual(len(shift_list_2), 1)

        self.assertNotEqual(self.s1.id, shift_list_1[0]["id"])
        self.assertEqual(self.s2.id, shift_list_1[0]["id"])
        self.assertEqual(self.s3.id, shift_list_2[0]["id"])
Example #26
0
    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 test_get_administrator_report(self):

        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s3.id)

        start_time = datetime.time(hour=11, minute=0)
        end_time = datetime.time(hour=12, minute=0)
        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)
        add_shift_hours(self.v2.id, self.s3.id, start_time, end_time)

        report_1 = get_administrator_report(self.v1.first_name,"","",self.e1.name,self.j1.name,"2012-10-22", "2012-10-30")
        report_2 = get_administrator_report(self.v1.first_name,"","",self.e1.name,self.j2.name,"2012-9-1", "2012-10-26")
        report_3 = get_administrator_report("","","",self.e1.name,self.j2.name,"", "")

        # verify that report for logged shift appears
        self.assertEqual(len(report_1), 1)
        self.assertEqual(len(report_2), 0)
        self.assertEqual(len(report_3), 1)
        self.assertEqual(self.v1.first_name, report_1[0]["first_name"])
        self.assertEqual(self.v2.first_name, report_3[0]["first_name"])
    def test_get_unlogged_shifts_by_volunteer_id(self):
        """ Uses shifts s1, s2 and volunteer v1 """

        # sign up
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)

        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)

        # test typical case
        shift_list = get_unlogged_shifts_by_volunteer_id(self.v1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 1)
        self.assertNotIn(self.s1, shift_list)
        self.assertIn(self.s2, shift_list)
        self.assertNotIn(self.s3, shift_list)
Example #29
0
    def test_get_unlogged_shifts_by_volunteer_id(self):
        """ Uses shifts s1, s2 and volunteer v1 """

        # sign up
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)

        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)

        # test typical case
        shift_list = get_unlogged_shifts_by_volunteer_id(self.v1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 1)
        self.assertNotIn(self.s1, shift_list)
        self.assertIn(self.s2, shift_list)
        self.assertNotIn(self.s3, shift_list)
Example #30
0
    def test_get_volunteer_shifts_with_hours(self):
        """ Uses volunteers v1 and v2
        Test get_volunteer_shifts_with_hours(v_id) """

        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)

        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)

        v1_hours = get_volunteer_shifts_with_hours(self.v1)
        v2_hours = get_volunteer_shifts_with_hours(self.v2)

        self.assertIsNotNone(get_volunteer_shifts_with_hours(self.v1))
        self.assertIsNotNone(get_volunteer_shifts_with_hours(self.v2))

        self.assertEqual(len(v1_hours), 1)
        self.assertEqual(self.s1.id, v1_hours[0].shift_id)
        self.assertEqual(len(v2_hours), 0)
    def test_get_volunteer_shifts_with_hours(self):
        """ Uses volunteers v1 and v2
        Test get_volunteer_shifts_with_hours(v_id) """

        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)

        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)

        v1_hours = get_volunteer_shifts_with_hours(self.v1)
        v2_hours = get_volunteer_shifts_with_hours(self.v2)

        self.assertIsNotNone(get_volunteer_shifts_with_hours(self.v1))
        self.assertIsNotNone(get_volunteer_shifts_with_hours(self.v2))

        self.assertEqual(len(v1_hours), 1)
        self.assertEqual(self.s1.id, v1_hours[0].shift_id)
        self.assertEqual(len(v2_hours), 0)
    def test_cancel_shift_registration(self):
        """ Uses shifts s1, s2, s3 and volunteers v1,v2 """

        # test cases when try to cancel when they aren't signed up for a shift
        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v1.id, self.s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v1.id, self.s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v2.id, self.s1.id)

        # register volunteers to shifts
        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s2.id)

        # test typical cases
        cancel_shift_registration(self.v1.id, self.s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v2.id, self.s1.id)

        cancel_shift_registration(self.v2.id, self.s2.id)
Example #33
0
    def test_cancel_shift_registration(self):
        """ Uses shifts s1, s2, s3 and volunteers v1,v2 """

        # test cases when try to cancel when they aren't signed up for a shift
        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v1.id, self.s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v1.id, self.s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v2.id, self.s1.id)

        # register volunteers to shifts
        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s2.id)

        # test typical cases
        cancel_shift_registration(self.v1.id, self.s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v2.id, self.s1.id)

        cancel_shift_registration(self.v2.id, self.s2.id)
Example #34
0
def sign_up(request, shift_id, volunteer_id):
    if shift_id:
        shift = get_shift_by_id(shift_id)
        if shift:

            user = request.user
            admin = None
            volunteer = None

            try:
                admin = user.administrator
            except ObjectDoesNotExist:
                pass
            try:
                volunteer = user.volunteer
            except ObjectDoesNotExist:
                pass

            if not admin and not volunteer:
                return HttpResponse(status=403)

            if volunteer:
                if (int(volunteer.id) != int(volunteer_id)):
                    return HttpResponse(status=403)

            if request.method == 'POST':
                try:
                    result = register(volunteer_id, shift_id)
                    if result == "IS_VALID":
                        if admin:
                            return HttpResponseRedirect(
                                reverse('shift:manage_volunteer_shifts',
                                        args=(volunteer_id, )))
                        if volunteer:
                            return HttpResponseRedirect(
                                reverse('shift:view_volunteer_shifts',
                                        args=(volunteer_id, )))
                    else:
                        return render(request, 'shift/sign_up_error.html',
                                      {'error_code': result})
                except ObjectDoesNotExist:
                    raise Http404
            else:
                return render(request, 'shift/sign_up.html', {
                    'shift': shift,
                    'volunteer_id': volunteer_id
                })
        else:
            raise Http404
    else:
        raise Http404
Example #35
0
    def test_remove_empty_events_for_volunteer(self):
        """
        Uses Events e1,e2,e3,e4,e5, shift s2 and volunteer v1 where
        with job that has shift with open slots - e2
        Event with job and shift that volunteer already signed up for - e1
        Event with job and shift that have no slots remaining - e4
        Event with job that has no shifts - e3
        Event with no jobs - e5
        """

        register(self.v1.id, self.s2.id)
        register(self.v2.id, self.s4.id)

        event_list = [self.e1, self.e2, self.e3, self.e4, self.e5]
        event_list = remove_empty_events_for_volunteer(event_list, self.v1.id)

        # Only events with jobs that have open slots should remain
        self.assertIn(self.e1, event_list)
        self.assertIn(self.e2, event_list)
        self.assertNotIn(self.e3, event_list)
        self.assertNotIn(self.e4, event_list)
        self.assertNotIn(self.e5, event_list)
        VolunteerShift.objects.all().delete()
Example #36
0
    def test_remove_empty_events_for_volunteer(self):
        """
        Uses Events e1,e2,e3,e4,e5, shift s2 and volunteer v1 where
        with job that has shift with open slots - e2
        Event with job and shift that volunteer already signed up for - e1
        Event with job and shift that have no slots remaining - e4
        Event with job that has no shifts - e3
        Event with no jobs - e5
        """

        register(self.v1.id, self.s2.id)
        register(self.v2.id, self.s4.id)

        event_list = [self.e1, self.e2, self.e3, self.e4, self.e5]
        event_list = remove_empty_events_for_volunteer(event_list, self.v1.id)

        # Only events with jobs that have open slots should remain
        self.assertIn(self.e1, event_list)
        self.assertIn(self.e2, event_list)
        self.assertNotIn(self.e3, event_list)
        self.assertNotIn(self.e4, event_list)
        self.assertNotIn(self.e5, event_list)
        VolunteerShift.objects.all().delete()
    def test_clear_shift_hours(self):
        """ Uses shifts s1, s2, s3 and volunteer v1 """

        register(self.v1.id, self.s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s1.id
                                                        ))

        register(self.v1.id, self.s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s2.id
                                                        ))

        register(self.v1.id, self.s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s3.id
                                                        ))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(self.v1.id, self.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(self.v1.id, self.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(self.v1.id, self.s3.id, start_time, end_time)

        clear_shift_hours(self.v1.id, self.s1.id)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.s1.id
                                                    )
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(self.v1.id, self.s2.id)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.s2.id
                                                    )
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(self.v1.id, self.s3.id)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.s3.id
                                                    )
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)
    def test_add_shift_hours(self):
        """ Uses shifts s1, s2, s3 and volunteers v1,v2,v3 """

        # 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(self.v1.id, self.s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s1.id
                                                        ))

        register(self.v1.id, self.s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s2.id
                                                        ))

        register(self.v1.id, self.s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s3.id
                                                        ))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.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(self.v1.id, self.s2.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.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(self.v1.id, self.s3.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.s3.id
                                                    )
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)
Example #39
0
    def test_clear_shift_hours(self):
        """ Uses shifts s1, s2, s3 and volunteer v1 """

        register(self.v1.id, self.s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s1.id))

        register(self.v1.id, self.s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s2.id))

        register(self.v1.id, self.s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s3.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(self.v1.id, self.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(self.v1.id, self.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(self.v1.id, self.s3.id, start_time, end_time)

        clear_shift_hours(self.v1.id, self.s1.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.s1.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(self.v1.id, self.s2.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.s2.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(self.v1.id, self.s3.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.s3.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)
Example #40
0
    def test_add_shift_hours(self):
        """ Uses shifts s1, s2, s3 and volunteers v1,v2,v3 """

        # 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(self.v1.id, self.s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s1.id))

        register(self.v1.id, self.s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s2.id))

        register(self.v1.id, self.s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s3.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.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(self.v1.id, self.s2.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.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(self.v1.id, self.s3.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.s3.id)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)
Example #41
0
    def test_get_shift_slots_remaining(self):
        """ Uses shifts s1, s2, s3
        Tests get_shift_slots_remaining(s_id) """

        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s3.id)
        register(self.v3.id, self.s3.id)

        slots_s1 = get_shift_slots_remaining(self.s1.id)
        slots_s2 = get_shift_slots_remaining(self.s2.id)
        slots_s3 = get_shift_slots_remaining(self.s3.id)

        self.assertIsNotNone(slots_s1)
        self.assertIsNotNone(slots_s2)
        self.assertIsNotNone(slots_s3)

        self.assertEqual(slots_s1, 0)
        self.assertEqual(slots_s2, 2)
        self.assertEqual(slots_s3, 2)
    def test_get_shift_slots_remaining(self):
        """ Uses shifts s1, s2, s3
        Tests get_shift_slots_remaining(s_id) """

        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s3.id)
        register(self.v3.id, self.s3.id)

        slots_s1 = get_shift_slots_remaining(self.s1.id)
        slots_s2 = get_shift_slots_remaining(self.s2.id)
        slots_s3 = get_shift_slots_remaining(self.s3.id)

        self.assertIsNotNone(slots_s1)
        self.assertIsNotNone(slots_s2)
        self.assertIsNotNone(slots_s3)

        self.assertEqual(slots_s1, 0)
        self.assertEqual(slots_s2, 2)
        self.assertEqual(slots_s3, 2)
    def test_get_logged_volunteers_by_shift_id(self):
        """ Uses volunteers v1,v2,v3 and shift s3 """

        # sign up
        register(self.v3.id, self.s3.id)
        register(self.v1.id, self.s3.id)
        register(self.v2.id, self.s3.id)

        start_time = datetime.time(hour=1, minute=0)
        end_time = datetime.time(hour=2, minute=0)
        add_shift_hours(self.v1.id, self.s3.id, start_time, end_time)

        start_time = datetime.time(hour=2, minute=0)
        end_time = datetime.time(hour=3, minute=0)
        add_shift_hours(self.v3.id, self.s3.id, start_time, end_time)

        # get volunteer list
        logged_volunteer_list_for_shift = get_logged_volunteers_by_shift_id(self.s3.id)

        # test typical case and order
        self.assertEqual(len(logged_volunteer_list_for_shift), 2)
        self.assertEqual(logged_volunteer_list_for_shift[0].volunteer, self.v3)
        self.assertEqual(logged_volunteer_list_for_shift[1].volunteer, self.v1)
Example #44
0
    def test_get_logged_volunteers_by_shift_id(self):
        """ Uses volunteers v1,v2,v3 and shift s3 """

        # sign up
        register(self.v3.id, self.s3.id)
        register(self.v1.id, self.s3.id)
        register(self.v2.id, self.s3.id)

        start_time = datetime.time(hour=1, minute=0)
        end_time = datetime.time(hour=2, minute=0)
        add_shift_hours(self.v1.id, self.s3.id, start_time, end_time)

        start_time = datetime.time(hour=2, minute=0)
        end_time = datetime.time(hour=3, minute=0)
        add_shift_hours(self.v3.id, self.s3.id, start_time, end_time)

        # get volunteer list
        logged_volunteer_list_for_shift = get_logged_volunteers_by_shift_id(
            self.s3.id)

        # test typical case and order
        self.assertEqual(len(logged_volunteer_list_for_shift), 2)
        self.assertEqual(logged_volunteer_list_for_shift[0].volunteer, self.v3)
        self.assertEqual(logged_volunteer_list_for_shift[1].volunteer, self.v1)
    def test_edit_shift_hours(self):
        """ Uses shift s1 and volunteer v1 """

        register(self.v1.id, self.s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s1.id
                                                        ))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(self.v1.id, self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.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_register(self):
        """ Uses volunteers v1,v2 and shifts s1,s2,s3 """

        ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP"
        ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING"

        # test typical cases
        register(self.v1.id, self.s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s1.id
                                                        ))

        register(self.v1.id, self.s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s2.id
                                                        ))

        register(self.v1.id, self.s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v1.id,
                                                        shift_id=self.s3.id
                                                        ))

        # test cases where volunteer tries to sign up for a shift
        # they are already signed up for
        self.assertEqual(register(self.v1.id, self.s1.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(self.v1.id, self.s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(self.v1.id, self.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(self.v2.id, self.s1.id), ERROR_CODE_NO_SLOTS_REMAINING)

        register(self.v2.id, self.s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v2.id,
                                                        shift_id=self.s2.id
                                                        ))

        register(self.v2.id, self.s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(
                                                        volunteer_id=self.v2.id,
                                                        shift_id=self.s3.id
                                                        ))

        # test cases where a volunteer tries to sign up for a shift
        # they are already signed up for
        self.assertEqual(register(self.v2.id, self.s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(self.v2.id, self.s3.id), ERROR_CODE_ALREADY_SIGNED_UP)
Example #47
0
    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)
Example #48
0
    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))
Example #49
0
    def test_send_reminder(self):

        location = [
            "Test address", "Atlanta", "Georgia", "USA",
            "Near the south entrance"
        ]

        set_shift_location(self.s1, location)
        set_shift_location(self.s2, location)
        set_shift_location(self.s3, location)

        self.v1.reminder_days = 1
        self.v2.reminder_days = 7
        self.v1.save()
        self.v2.save()

        # sign up
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)
        register(self.v1.id, self.s3.id)
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s2.id)
        register(self.v2.id, self.s3.id)

        # test typical case
        result = send_reminder()

        self.assertEqual(result, 2)
Example #50
0
    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)
Example #51
0
    def test_send_reminder(self):

        city_name = 'Roorkee'
        state_name = 'Uttarakhand'
        country_name = 'India'
        country = get_country_by_name(country_name)
        state = get_state_by_name(state_name)
        city = get_city_by_name(city_name)
        location = {
            'address': "Test address",
            'city': city,
            'state': state,
            'country': country,
            'venue': "Near the south entrance"
        }

        set_shift_location(self.s1, location)
        set_shift_location(self.s2, location)
        set_shift_location(self.s3, location)

        self.v1.reminder_days = 1
        self.v2.reminder_days = 7
        self.v1.save()
        self.v2.save()

        # sign up
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)
        register(self.v1.id, self.s3.id)
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s2.id)
        register(self.v2.id, self.s3.id)

        # test typical case
        result = send_reminder()

        self.assertEqual(result, 2)
Example #52
0
def sign_up(request, shift_id, volunteer_id):
    if shift_id:
        shift = get_shift_by_id(shift_id)
        if shift:

            user = request.user
            admin = None
            volunteer = None

            try:
                admin = user.administrator
            except ObjectDoesNotExist:
                pass
            try:
                volunteer = user.volunteer
            except ObjectDoesNotExist:
                pass

            if not admin and not volunteer:
                return HttpResponse(status=403)

            if volunteer:
                if int(volunteer.id) != int(volunteer_id):
                    return HttpResponse(status=403)

            if request.method == 'POST':
                try:
                    result = register(volunteer_id, shift_id)
                    if result == "IS_VALID":
                        if admin:
                            vol_email = Volunteer.objects.get(
                                pk=volunteer_id).email
                            shift_object = get_shift_by_id(shift_id)
                            job_object = Job.objects.get(shift=shift_object)
                            event_object = Event.objects.get(job=job_object)
                            message = render_to_string(
                                'shift/sign_up_email.txt', {
                                    'admin_first_name': admin.first_name,
                                    'admin_last_name': admin.last_name,
                                    'shift_start_time':
                                    shift_object.start_time,
                                    'shift_end_time': shift_object.end_time,
                                    'admin_email': admin.email,
                                    'job_name': job_object.name,
                                    'event_name': event_object.name,
                                    'shift_date': shift_object.date,
                                })
                            try:
                                send_mail("Shift Assigned",
                                          message,
                                          "*****@*****.**",
                                          [vol_email],
                                          fail_silently=False)
                            except Exception:
                                raise Exception(
                                    "There was an error in sending email.")
                            return HttpResponseRedirect(
                                reverse('shift:manage_volunteer_shifts',
                                        args=(volunteer_id, )))
                        if volunteer:
                            return HttpResponseRedirect(
                                reverse('shift:view_volunteer_shifts',
                                        args=(volunteer_id, )))
                    else:
                        return render(request, 'shift/sign_up_error.html',
                                      {'error_code': result})
                except ObjectDoesNotExist:
                    raise Http404
            else:
                return render(request, 'shift/sign_up.html', {
                    'shift': shift,
                    'volunteer_id': volunteer_id
                })
        else:
            raise Http404
    else:
        raise Http404
Example #53
0
    def test_get_volunteer_shift_by_id(self):
        """ Uses shifts s1,s2,s3 and volunteers v1,v2"""

        # test cases where signed up
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)
        register(self.v1.id, self.s3.id)

        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s2.id)
        register(self.v2.id, self.s3.id)

        self.assertEqual(
            get_volunteer_shift_by_id(self.v1.id, self.s1.id),
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s1.id))
        self.assertEqual(
            get_volunteer_shift_by_id(self.v1.id, self.s2.id),
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s2.id))
        self.assertEqual(
            get_volunteer_shift_by_id(self.v1.id, self.s3.id),
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.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(self.v2.id, self.s2.id),
            VolunteerShift.objects.get(volunteer_id=self.v2.id,
                                       shift_id=self.s2.id))
        self.assertEqual(
            get_volunteer_shift_by_id(self.v2.id, self.s3.id),
            VolunteerShift.objects.get(volunteer_id=self.v2.id,
                                       shift_id=self.s3.id))
Example #54
0
File: views.py Project: systers/vms
def sign_up(request, shift_id, volunteer_id):
    if shift_id:
        shift = get_shift_by_id(shift_id)
        if shift:

            user = request.user
            admin = None
            volunteer = None

            try:
                admin = user.administrator
            except ObjectDoesNotExist:
                pass
            try:
                volunteer = user.volunteer
            except ObjectDoesNotExist:
                pass

            if not admin and not volunteer:
                return HttpResponse(status=403)

            if volunteer:
                if (int(volunteer.id) != int(volunteer_id)):
                    return HttpResponse(status=403)

            if request.method == 'POST':
                try:
                    result = register(volunteer_id, shift_id)
                    if result == "IS_VALID":
                        if admin:
                            vol_email = Volunteer.objects.get(
                                pk=volunteer_id).email
                            shift_object = get_shift_by_id(shift_id)
                            job_object = Job.objects.get(shift=shift_object)
                            event_object = Event.objects.get(job=job_object)
                            message = render_to_string(
                                'shift/sign_up_email.txt',
                                {
                                    'admin_first_name': admin.first_name,
                                    'admin_last_name': admin.last_name,
                                    'shift_start_time': shift_object.start_time,
                                    'shift_end_time': shift_object.end_time,
                                    'admin_email': admin.email,
                                    'job_name': job_object.name,
                                    'event_name': event_object.name,
                                    'shift_date': shift_object.date,
                                    })
                            try:
                                send_mail("Shift Assigned", message,
                                       "*****@*****.**", [vol_email],
                                       fail_silently=False)
                            except:
                                raise Exception("There was an error in sending email.")
                            return HttpResponseRedirect(
                                reverse(
                                    'shift:manage_volunteer_shifts',
                                    args=(volunteer_id, )))
                        if volunteer:
                            return HttpResponseRedirect(
                                reverse(
                                    'shift:view_volunteer_shifts',
                                    args=(volunteer_id, )))
                    else:
                        return render(request, 'shift/sign_up_error.html', {
                            'error_code': result
                        })
                except ObjectDoesNotExist:
                    raise Http404
            else:
                return render(request, 'shift/sign_up.html', {
                    'shift': shift,
                    'volunteer_id': volunteer_id
                })
        else:
            raise Http404
    else:
        raise Http404
    def test_get_volunteer_shift_by_id(self):
        """ Uses shifts s1,s2,s3 and volunteers v1,v2"""

        # test cases where signed up
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)
        register(self.v1.id, self.s3.id)

        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s2.id)
        register(self.v2.id, self.s3.id)

        self.assertEqual(
                        get_volunteer_shift_by_id(self.v1.id, self.s1.id),
                        VolunteerShift.objects.get(
                                                    volunteer_id=self.v1.id,
                                                    shift_id=self.s1.id
                                                    ))
        self.assertEqual(
                        get_volunteer_shift_by_id(self.v1.id, self.s2.id),
                        VolunteerShift.objects.get(
                            volunteer_id=self.v1.id,
                            shift_id=self.s2.id
                            )
                        )
        self.assertEqual(
                        get_volunteer_shift_by_id(self.v1.id, self.s3.id),
                        VolunteerShift.objects.get(
                            volunteer_id=self.v1.id,
                            shift_id=self.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(self.v2.id, self.s2.id),
                        VolunteerShift.objects.get(
                            volunteer_id=self.v2.id,
                            shift_id=self.s2.id
                            )
                        )
        self.assertEqual(
                        get_volunteer_shift_by_id(self.v2.id, self.s3.id),
                        VolunteerShift.objects.get(
                            volunteer_id=self.v2.id,
                            shift_id=self.s3.id
                            )
                        )
    def test_send_reminder(self):

        location = ["Test address","Atlanta","Georgia","USA","Near the south entrance"]

        set_shift_location(self.s1,location)
        set_shift_location(self.s2,location)
        set_shift_location(self.s3,location)

        self.v1.reminder_days=1
        self.v2.reminder_days=7
        self.v1.save()
        self.v2.save()

        # sign up
        register(self.v1.id, self.s1.id)
        register(self.v1.id, self.s2.id)
        register(self.v1.id, self.s3.id)
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s2.id)
        register(self.v2.id, self.s3.id)

        # test typical case
        result = send_reminder()       
               
        self.assertEqual(result,2)
Example #57
0
    def test_register(self):
        """ Uses volunteers v1,v2 and shifts s1,s2,s3 """

        ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP"
        ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING"

        # test typical cases
        register(self.v1.id, self.s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s1.id))

        register(self.v1.id, self.s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s2.id))

        register(self.v1.id, self.s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s3.id))

        # test cases where volunteer tries to sign up for a shift
        # they are already signed up for
        self.assertEqual(register(self.v1.id, self.s1.id),
                         ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(self.v1.id, self.s2.id),
                         ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(self.v1.id, self.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(self.v2.id, self.s1.id),
                         ERROR_CODE_NO_SLOTS_REMAINING)

        register(self.v2.id, self.s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v2.id,
                                       shift_id=self.s2.id))

        register(self.v2.id, self.s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v2.id,
                                       shift_id=self.s3.id))

        # test cases where a volunteer tries to sign up for a shift
        # they are already signed up for
        self.assertEqual(register(self.v2.id, self.s2.id),
                         ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(self.v2.id, self.s3.id),
                         ERROR_CODE_ALREADY_SIGNED_UP)
Example #58
0
    def test_edit_shift_hours(self):
        """ Uses shift s1 and volunteer v1 """

        register(self.v1.id, self.s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                       shift_id=self.s1.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(self.v1.id, self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.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(self.v1.id, self.s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=self.v1.id,
                                                     shift_id=self.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)