def test_raises_if_user_reached_limit_of_permitted_syncs( self, channel, mocker): for idx in range(settings.CHANNEL_SYNCS_MAX_PER_USER): external_source_channel_id = f'{EXTERNAL_SOURCE_CHANNEL_ID}_{idx}' mocker.patch( 'veems.channel_sync.external_sources.' 'youtube.get_channel_id_from_url', return_value=external_source_channel_id, ) services.create_channel_sync( external_source='youtube', external_source_channel_url=( f'https://youtube.com/channel/{external_source_channel_id}' ), destination_channel_id=channel.id, user_id=channel.user_id, ) with pytest.raises(DRFValidationError): services.create_channel_sync( external_source='youtube', external_source_channel_url=( f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}' ), destination_channel_id=channel.id, user_id=channel.user_id, ) assert (len(services.get_all_channel_syncs()) == settings.CHANNEL_SYNCS_MAX_PER_USER)
def test_raises_if_channel_url_is_invalid(self, channel, mocker): mocker.patch( 'veems.channel_sync.external_sources.' 'youtube.get_channel_id_from_url', side_effect=LookupError, ) with pytest.raises(DRFValidationError): services.create_channel_sync( external_source_channel_url='https://not_valid', destination_channel_id=channel.id, user_id=channel.user_id, )
def test_raises_if_external_source_is_invalid(self, channel): with pytest.raises(DRFValidationError): services.create_channel_sync( external_source='INVALID', external_source_channel_url=( f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}' ), destination_channel_id=channel.id, user_id=channel.user_id, ) assert len(services.get_all_channel_syncs()) == 0
def test_raises_if_trying_to_create_sync_against_another_users_channel( self, channel, user_factory): with pytest.raises(ObjectDoesNotExist): services.create_channel_sync( external_source='youtube', external_source_channel_url=( f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}' ), destination_channel_id=channel.id, # Another user user_id=user_factory().id, ) assert len(services.get_all_channel_syncs()) == 0
def test_raises_if_destination_channel_is_terminated(self, channel): moderation_services.terminate_channel(channel_id=channel.id, reason='x', notify=False) with pytest.raises(PermissionDenied): services.create_channel_sync( external_source='youtube', external_source_channel_url=( f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}' ), destination_channel_id=channel.id, user_id=channel.user_id, )
def test_raises_if_trying_to_create_duplicates(self, channel): services.create_channel_sync( external_source='youtube', external_source_channel_url=( f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'), destination_channel_id=channel.id, user_id=channel.user_id, ) with pytest.raises(IntegrityError): services.create_channel_sync( external_source='youtube', external_source_channel_url=( f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}' ), destination_channel_id=channel.id, user_id=channel.user_id, ) assert len(services.get_all_channel_syncs()) == 1
def make(**kwargs): base_kwargs = dict( external_source_channel_url=( 'https://youtube.com/channel/' f'{external_source_channel_id_which_can_be_synced}'), external_source='youtube', destination_channel_id=channel.id, user_id=channel.user_id, ) base_kwargs.update(kwargs) return channel_sync_services.create_channel_sync(**base_kwargs)
def test_get_channel_sync(channel): channel_sync = services.create_channel_sync( external_source='youtube', external_source_channel_url=( f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'), destination_channel_id=channel.id, user_id=channel.user_id, ) record = services.get_channel_sync(id=channel_sync.id) assert record == channel_sync
def test(self, channel): channel_sync_record = services.create_channel_sync( external_source='youtube', external_source_channel_url=( f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'), destination_channel_id=channel.id, user_id=channel.user_id, ) channel_sync_record.refresh_from_db() assert isinstance(channel_sync_record, services.models.ChannelSync) assert channel_sync_record.external_source == 'youtube' assert (channel_sync_record.external_source_channel_id == EXTERNAL_SOURCE_CHANNEL_ID) assert channel_sync_record.external_source_channel_name == ( 'Channel title') assert channel_sync_record.destination_channel_id == channel.id assert channel_sync_record.is_enabled is True assert channel_sync_record.external_source_data_ingesting is True # Won't be set until ``sync`` background task runs. assert channel_sync_record.is_syncing is False assert channel_sync_record.meets_minimum_requirements is None self.mock_sync.delay.assert_called_once_with( channel_sync_id=channel_sync_record.id, external_source='youtube')