def test_list(self): expected_videos = [ video_queue.Video('video id 0', 'video name 0'), video_queue.Video('video id 1', 'video name 1'), ] self.video_queue_client.list.return_value = expected_videos resp = self.app.get(self.API_PREFIX + '/list') self.assertEqual(self.get_status_code(resp), 200) for video, expected_video in zip(resp.json['videos'], expected_videos): self.assertEqual(video['id'], expected_video.id) self.assertEqual(video['name'], expected_video.name)
class CronPublishTest(unittest.TestCase): USER_ID = 'fake_user_id' VIDEO_ID = 'fake_video_id' TEST_VIDEO = video_queue.Video(id=VIDEO_ID, name='fake_video_name') TEST_STATUS = models.QueuePublishStatus(video_id=VIDEO_ID) def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_all_stubs() self.video_queue_client = video_queue.VideoQueueClient() self.publisher = mock.Mock() self.publish_handler = cron.PublishHandler() def test_users_with_queues(self): self.video_queue_client.push(self.TEST_VIDEO, user_id=self.USER_ID) self.assertEqual(self.publish_handler._users_with_queues(), {self.USER_ID}) def test_users_with_queues_empty(self): self.assertEqual(self.publish_handler._users_with_queues(), set()) def test_users_with_queues_empty_pointer(self): self.video_queue_client.push(self.TEST_VIDEO, user_id=self.USER_ID) self.video_queue_client.pop(user_id=self.USER_ID) self.assertEqual(self.publish_handler._users_with_queues(), set()) def test_handle_user_promote_success(self): self.publisher.promote_video.return_value = ( publisher.Publisher.SUCCESS, self.TEST_STATUS) self.publish_handler._handle_user(user_id=self.USER_ID, publisher=self.publisher) self.publisher.finish_video.assert_called_with(self.VIDEO_ID) def test_handle_user_promote_too_recent(self): self.publisher.promote_video.return_value = ( publisher.Publisher.TOO_RECENT, self.TEST_STATUS) self.publish_handler._handle_user(user_id=self.USER_ID, publisher=self.publisher) self.publisher.finish_video.assert_not_called() def test_handle_user_promote_previous_failure(self): self.publisher.promote_video.return_value = ( publisher.Publisher.PREVIOUS_FAILURE, self.TEST_STATUS) self.publish_handler._handle_user(user_id=self.USER_ID, publisher=self.publisher) self.publisher.finish_video.assert_called_with(self.VIDEO_ID) def test_handle_user_promote_queue_empty(self): self.publisher.promote_video.return_value = ( publisher.Publisher.TOO_RECENT, self.TEST_STATUS) self.publish_handler._handle_user(user_id=self.USER_ID, publisher=self.publisher) self.publisher.finish_video.assert_not_called()
def test_publish_enqueue(self): self.check_publish( videos_api.PublishRequest.PublishMode.ENQUEUE, videos.VideosClient.PRIVATE) self.video_queue_client.push.assert_called_with( video_queue.Video( id=self.VIDEO_ID, name=videos.VideosClient.get_video_name(self.TITLE, self.SUBTITLE))) self.video_queue_client.insert_front.assert_not_called()
def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() ndb.get_context().clear_cache() self.video_queue_client = mock.Mock() self.video_queue_client.pop.return_value = ( video_queue.Video(self.VIDEO_ID, self.VIDEO_NAME)) self.videos_client = mock.Mock() self.publisher = publisher.Publisher( video_queue_client=self.video_queue_client, videos_client=self.videos_client) self.publisher._get_now = mock.Mock() self.publisher._get_now.return_value = self.NOW
def publish_handler(self, req): thumbnail_data = self._thumbnails_client.get(req.bg_key, req.title, req.subtitle) self._videos_client.set_thumbnail(req.video_id, thumbnail_data) video_name = self._videos_client.get_video_name( req.title, req.subtitle) publish_status = (self._videos_client.PUBLIC if req.publish_mode == PublishRequest.PublishMode.NOW else self._videos_client.PRIVATE) self._videos_client.set_metadata(req.video_id, title=video_name, description=req.description, publish_status=publish_status) video = video_queue.Video(id=req.video_id, name=video_name) if req.publish_mode == PublishRequest.PublishMode.ENQUEUE: self._video_queue_client.push(video) elif req.publish_mode == PublishRequest.PublishMode.PREEMPT: self._video_queue_client.insert_front(video) return PublishResponse()
class VideoQueueClientTest(unittest.TestCase): USER_ID = '*****@*****.**' OCTOPUS = video_queue.Video('octopus', 'octopus title') PANGOLIN = video_queue.Video('pangolin', 'pangolin title') QUETZAL = video_queue.Video('quetzal', 'quetzal title') def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_all_stubs() self.client = video_queue.VideoQueueClient() self.client.push(self.OCTOPUS, user_id=self.USER_ID) self.client.push(self.PANGOLIN, user_id=self.USER_ID) def assert_queue(self, expected_queue): self.assertEqual(self.client.list(user_id=self.USER_ID), expected_queue) head = self.client._resolve_pointer( self.client._get_pointer_key(self.USER_ID, self.client._HEAD_ID)) tail = self.client._resolve_pointer( self.client._get_pointer_key(self.USER_ID, self.client._TAIL_ID)) if expected_queue: self.assertEqual(head.key.id(), expected_queue[0].id) self.assertEqual(tail.key.id(), expected_queue[-1].id) else: self.assertIsNone(head) self.assertIsNone(tail) def test_push(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.assert_queue([self.OCTOPUS, self.PANGOLIN, self.QUETZAL]) def test_pop(self): self.assertEqual(self.client.pop(user_id=self.USER_ID), self.OCTOPUS) self.assert_queue([self.PANGOLIN]) def test_pop_empty(self): self.client.pop(user_id=self.USER_ID) self.client.pop(user_id=self.USER_ID) self.client.pop(user_id=self.USER_ID) self.assert_queue([]) def test_insert_front(self): self.client.insert_front(self.QUETZAL, user_id=self.USER_ID) self.assert_queue([self.QUETZAL, self.OCTOPUS, self.PANGOLIN]) def test_list(self): self.assert_queue([self.OCTOPUS, self.PANGOLIN]) def test_move_head(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.client.move(self.OCTOPUS.id, 1, user_id=self.USER_ID) self.assert_queue([self.PANGOLIN, self.OCTOPUS, self.QUETZAL]) def test_move_tail(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.client.move(self.QUETZAL.id, 1, user_id=self.USER_ID) self.assert_queue([self.OCTOPUS, self.QUETZAL, self.PANGOLIN]) def test_move_front(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.client.move(self.PANGOLIN.id, 0, user_id=self.USER_ID) self.assert_queue([self.PANGOLIN, self.OCTOPUS, self.QUETZAL]) def test_move_back(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.client.move(self.PANGOLIN.id, 2, user_id=self.USER_ID) self.assert_queue([self.OCTOPUS, self.QUETZAL, self.PANGOLIN]) def test_move_head_front(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.client.move(self.OCTOPUS.id, 0, user_id=self.USER_ID) self.assert_queue([self.OCTOPUS, self.PANGOLIN, self.QUETZAL]) def test_move_tail_back(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.client.move(self.QUETZAL.id, 2, user_id=self.USER_ID) self.assert_queue([self.OCTOPUS, self.PANGOLIN, self.QUETZAL]) def test_push_after_empty(self): self.client.pop(user_id=self.USER_ID) self.client.pop(user_id=self.USER_ID) self.client.push(self.QUETZAL, user_id=self.USER_ID) self.assert_queue([self.QUETZAL]) def test_insert_front_after_empty(self): self.client.pop(user_id=self.USER_ID) self.client.pop(user_id=self.USER_ID) self.client.insert_front(self.QUETZAL, user_id=self.USER_ID) self.assert_queue([self.QUETZAL]) def test_delete(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.client.delete(self.PANGOLIN.id, user_id=self.USER_ID) self.assert_queue([self.OCTOPUS, self.QUETZAL]) def test_delete_head(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.client.delete(self.OCTOPUS.id, user_id=self.USER_ID) self.assert_queue([self.PANGOLIN, self.QUETZAL]) def test_delete_tail(self): self.client.push(self.QUETZAL, user_id=self.USER_ID) self.client.delete(self.QUETZAL.id, user_id=self.USER_ID) self.assert_queue([self.OCTOPUS, self.PANGOLIN])