Beispiel #1
0
 def test_records_upload_links(self):
     """If update response includes link data, it is recorded."""
     link_data = {'protocol': 'http'}
     self.jwp_client.videos.update.return_value.update({'link': link_data})
     with mock.patch('mediaplatform_jwp.upload.record_link_response') as rlr_mock:
         management._perform_item_update(self.jwp_item)
         rlr_mock.assert_called_once_with(link_data, self.jwp_item)
    def test_site_tags_and_props_added(self):
        """
        An existing video has media id custom props set and sitedomain tag set but existing
        tags preserved.

        """
        management._perform_item_update(self.jwp_item)
        self.jwp_client.videos.update.assert_called_once()
        _, kwargs = self.jwp_client.videos.update.call_args
        self.assertIn('tags', kwargs)
        all_tags = kwargs['tags'].split(',')

        # All existing tags should be preserved
        for t in self.existing_tags:
            self.assertIn(t, all_tags)

        # A site tag should be created
        site_tags = [t for t in all_tags if t.startswith('sitedomain:')]
        self.assertEqual(len(site_tags), 1)
        _, site = site_tags[0].split(':')

        # Custom props for the site should include media id
        self.assertIn('custom.site.' + site.replace('.', '_') + '.name', kwargs)
        self.assertIn('custom.site.' + site.replace('.', '_') + '.media_id', kwargs)
        self.assertEqual(
            kwargs['custom.site.' + site.replace('.', '_') + '.media_id'],
            self.jwp_item.id)
Beispiel #3
0
 def test_view_permission_signed_in_sync(self):
     self.jwp_item.view_permission.reset()
     self.jwp_item.view_permission.is_signed_in = True
     self.jwp_item.view_permission.save()
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, **{
         'custom.sms_acl': 'acl:CAM:'
     })
Beispiel #4
0
 def test_view_permission_inst_sync(self):
     self.jwp_item.view_permission.reset()
     self.jwp_item.view_permission.lookup_insts = ['BOTOLPH']
     self.jwp_item.view_permission.save()
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, **{
         'custom.sms_acl': 'acl:INST_BOTOLPH:'
     })
Beispiel #5
0
 def test_view_permission_group_sync(self):
     self.jwp_item.view_permission.reset()
     self.jwp_item.view_permission.lookup_groups = ['01234']
     self.jwp_item.view_permission.save()
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, **{
         'custom.sms_acl': 'acl:GROUP_01234:'
     })
Beispiel #6
0
 def test_view_permission_crsid_sync(self):
     self.jwp_item.view_permission.reset()
     self.jwp_item.view_permission.crsids = ['spqr1']
     self.jwp_item.view_permission.save()
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, **{
         'custom.sms_acl': 'acl:USER_spqr1:'
     })
Beispiel #7
0
 def test_keywords_sync(self):
     self.jwp_item.tags = ['aaa', 'bbb']
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, **{
         'custom.sms_keywords': 'keywords:{}:'.format('|'.join(self.jwp_item.tags))
     })
Beispiel #8
0
 def test_copyright_sync(self):
     self.jwp_item.copyright = 'eng'
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, **{
         'custom.sms_copyright': 'copyright:{}:'.format(self.jwp_item.copyright)
     })
Beispiel #9
0
 def test_language_sync(self):
     self.jwp_item.language = 'eng'
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, **{
         'custom.sms_language': 'language:{}:'.format(self.jwp_item.language)
     })
Beispiel #10
0
 def test_downloadable_sync(self):
     self.jwp_item.downloadable = True
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, **{
         'custom.sms_downloadable': 'downloadable:{}:'.format(repr(self.jwp_item.downloadable))
     })
Beispiel #11
0
 def test_published_at_sync(self):
     self.jwp_item.published_at = datetime.datetime(
         year=2013, month=12, day=11, hour=10, minute=9, second=8)
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(
         self.jwp_item.jwp.key, date=int(self.jwp_item.published_at.timestamp()))
Beispiel #12
0
 def test_description_sync(self):
     self.jwp_item.description = 'xxxx'
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, description=self.jwp_item.description)
Beispiel #13
0
 def test_title_sync(self):
     self.jwp_item.title = 'xxxx'
     management._perform_item_update(self.jwp_item)
     self.assert_video_updated(self.jwp_item.jwp.key, title=self.jwp_item.title)
Beispiel #14
0
 def test_no_create_if_not_necessary(self):
     management._perform_item_update(self.jwp_item)
     self.jwp_client.videos.create.assert_not_called()
Beispiel #15
0
 def test_raises_error_if_odd_response_from_create(self):
     self.jwp_client.videos.create.return_value = {}
     with self.assertRaises(RuntimeError):
         management._perform_item_update(self.no_jwp_item)