def test_save_schedule_two_users(self): user_1_times = [[11, 17, 11, 20], [12, 17, 12, 20]] schedule_arg = _schedule_arg_for_times(user_1_times) request = RequestMockup(self.user_1) rpc.save_schedule(request, schedule_arg, 2011, 8, 11, TIME_RANGE) user_2_times = [[11, 19, 11, 20], [12, 13, 12, 19]] schedule_arg = _schedule_arg_for_times(user_2_times) request = RequestMockup(self.user_2) rpc.save_schedule(request, schedule_arg, 2011, 8, 11, TIME_RANGE) counts = rpc.fetch_schedule( request, ['en'], ['es', 'it'], 2011, 8, 11, TIME_RANGE) self.assertEqual(12, len(counts)) # first check counts on 8/11 cur_index = 0 start_hour = scheduling.hour_for_date(datetime(2011, 8, 11, 17)) for hour in range(17, 21): self.assertEqual(start_hour + cur_index, counts[cur_index]['hour']) self.assertEqual(1 if hour < 19 else 2, counts[cur_index]['count']) cur_index += 1 # now check counts on 8/12 for hour in range(13, 21): self.assertEqual(scheduling.hour_for_date( datetime(2011, 8, 12, hour)), counts[cur_index]['hour']) self.assertEqual(2 if hour >= 17 and hour <= 19 else 1, counts[cur_index]['count']) cur_index += 1
def test_save_my_schedule_basic(self): start_time = time.mktime(datetime(2011, 8, 11, 17).timetuple()) end_time = time.mktime(datetime(2011, 8, 11, 17).timetuple()) schedule_obj = [ { 'start': start_time, 'end': end_time }] jsonText = json.dumps(schedule_obj) request = RequestMockup( self.user_0, post={'schedule': jsonText}) # test passes if this doesn't throw exception rpc.save_schedule(request, schedule_obj)
def test_retrieve_schedule(self): schedule_arg = _schedule_arg_for_times([[11, 17, 11, 17]]) request = RequestMockup(self.user_0) rpc.save_schedule(request, schedule_arg, 2011, 8, 11, TIME_RANGE) resulting_schedule = rpc.fetch_schedule( request, ['es'], ['en'], 2011, 8, 11, TIME_RANGE) self.assertEqual(1, len(resulting_schedule)) self.assertEqual( scheduling.hour_for_date(datetime(2011, 8, 11, 17)), resulting_schedule[0]['hour']) self.assertEqual( 1, resulting_schedule[0]['count'])
def test_notification_multiple_ranges(self): request = RequestMockup(self.user_1) rpc.save_schedule( request, _schedule_arg_for_times([[11, 17, 11, 18], [12, 17, 12, 18], [13, 17, 13, 18]]), 2011, 8, 11, TIME_RANGE) for i in range(NOTIFICATION_PARTNER_THRESHOLD): user = test_utils.create_user( 'a_user_{0}'.format(i), ['en'], ['es']) request = RequestMockup(user) times = [[11, 17, 11, 17], [12, 17, 12, 18]] if i < NOTIFICATION_PARTNER_THRESHOLD / 2: times.append([13, 17, 13, 18]) rpc.save_schedule(request, _schedule_arg_for_times(times), 2011, 8, 11, TIME_RANGE) tasks.notify_users() self.assertEquals(1, len(self._user_notification_records)) notification_record = self._user_notification_records[0] # user_1 should be notified for 2 ranges, not 1 or 3. self.assertEqual( 2, len(notification_record.usernotificationrange_set.all()))
def _save_schedule(self, user, start_hour, end_hour, day=11): request = RequestMockup(user) rpc.save_schedule( request, _schedule_arg_for_times([[day, start_hour, day, end_hour]]), 2011, 8, day, TIME_RANGE)
def test_save_my_schedule_basic(self): schedule_arg = _schedule_arg_for_times([[11, 17, 11, 17]]) request = RequestMockup(self.user_0) # test passes if this doesn't throw exception rpc.save_schedule(request, schedule_arg, 2011, 8, 11, TIME_RANGE)