80 lines
3.1 KiB
Ruby
80 lines
3.1 KiB
Ruby
|
require 'yaml'
|
||
|
require_relative '../../../../spec/rspec_configuration'
|
||
|
|
||
|
require_relative '../../lib/datasources'
|
||
|
require_relative '../doubles/user'
|
||
|
require 'spec_helper_min'
|
||
|
|
||
|
include CartoDB::Datasources
|
||
|
|
||
|
describe DatasourcesFactory do
|
||
|
|
||
|
def get_config
|
||
|
@config ||= YAML.load_file("#{File.dirname(__FILE__)}/../../../../config/app_config.yml")['defaults']
|
||
|
end
|
||
|
|
||
|
describe '#provider_instantiations' do
|
||
|
it 'tests all available provider instantiations' do
|
||
|
user = FactoryGirl.build(:user)
|
||
|
user.stubs('has_feature_flag?').with('gnip_v2').returns(false)
|
||
|
DatasourcesFactory.set_config(get_config)
|
||
|
|
||
|
dropbox_provider = DatasourcesFactory.get_datasource(Url::Dropbox::DATASOURCE_NAME, user)
|
||
|
dropbox_provider.is_a?(Url::Dropbox).should eq true
|
||
|
|
||
|
dropbox_provider = DatasourcesFactory.get_datasource(Url::Box::DATASOURCE_NAME, user)
|
||
|
dropbox_provider.is_a?(Url::Box).should eq true
|
||
|
|
||
|
# Stubs Google Drive client for connectionless testing
|
||
|
Google::Apis::DriveV2::DriveService.any_instance.stubs(:get_file)
|
||
|
Google::Apis::DriveV2::DriveService.any_instance.stubs(:export_file)
|
||
|
Google::Apis::DriveV2::DriveService.any_instance.stubs(:list_files)
|
||
|
gdrive_provider = DatasourcesFactory.get_datasource(Url::GDrive::DATASOURCE_NAME, user)
|
||
|
gdrive_provider.is_a?(Url::GDrive).should eq true
|
||
|
|
||
|
url_provider = DatasourcesFactory.get_datasource(Url::PublicUrl::DATASOURCE_NAME, user)
|
||
|
url_provider.is_a?(Url::PublicUrl).should eq true
|
||
|
|
||
|
twitter_provider = DatasourcesFactory.get_datasource(Search::Twitter::DATASOURCE_NAME, user)
|
||
|
twitter_provider.is_a?(Search::Twitter).should eq true
|
||
|
|
||
|
nil_provider = DatasourcesFactory.get_datasource(nil, user)
|
||
|
nil_provider.nil?.should eq true
|
||
|
|
||
|
expect {
|
||
|
DatasourcesFactory.get_datasource('blablabla...', user)
|
||
|
}.to raise_exception MissingConfigurationError
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#customized_config?' do
|
||
|
let(:twitter_datasource) { CartoDB::Datasources::Search::Twitter::DATASOURCE_NAME }
|
||
|
|
||
|
before(:each) do
|
||
|
@config = get_config
|
||
|
end
|
||
|
|
||
|
it 'returns false for a random user' do
|
||
|
user = FactoryGirl.build(:carto_user, username: 'wadus')
|
||
|
DatasourcesFactory.customized_config?(twitter_datasource, user).should be_false
|
||
|
end
|
||
|
|
||
|
it 'returns true for a user with custom config' do
|
||
|
user = FactoryGirl.build(:carto_user, username: 'wadus')
|
||
|
@config['datasource_search']['twitter_search']['customized_user_list'] = [user.username]
|
||
|
DatasourcesFactory.set_config(@config)
|
||
|
|
||
|
DatasourcesFactory.customized_config?(twitter_datasource, user).should be_true
|
||
|
end
|
||
|
|
||
|
it 'returns true for a user in an organization with custom config' do
|
||
|
organization = Carto::Organization.new(name: 'wadus-org')
|
||
|
user = FactoryGirl.build(:carto_user, username: 'nowadus', organization: organization)
|
||
|
@config['datasource_search']['twitter_search']['customized_orgs_list'] = [organization.name]
|
||
|
DatasourcesFactory.set_config(@config)
|
||
|
|
||
|
DatasourcesFactory.customized_config?(twitter_datasource, user).should be_true
|
||
|
end
|
||
|
end
|
||
|
end
|