cartodb/spec/services/carto/overquota_users_service_spec.rb
2020-06-15 10:58:47 +08:00

101 lines
4.3 KiB
Ruby

require 'spec_helper_min'
describe 'Carto::OverquotaUsersService' do
before(:all) do
@user = FactoryGirl.create(:carto_user, account_type: 'NOT_FREE')
@user2 = FactoryGirl.create(:carto_user, account_type: 'FREE')
end
after(:all) do
@user.destroy
@user2.destroy
end
# Filter overquota users to only those created by this spec
def overquota(delta = 0)
service = Carto::OverquotaUsersService.new
$users_metadata.del(service.send(:date_key))
service.store_overquota_users(delta)
users = service.get_stored_overquota_users.map { |u| u['id'] }.select { |uid| [@user.id, @user2.id].include?(uid) }
users
end
it "should return users near their geocoding quota" do
::User.any_instance.stubs(:get_api_calls).returns([0])
::User.any_instance.stubs(:map_view_quota).returns(120)
::User.any_instance.stubs(:get_geocoding_calls).returns(81)
::User.any_instance.stubs(:geocoding_quota).returns(100)
overquota.should be_empty
overquota(0.20).should include(@user.id, @user2.id)
overquota(0.20).size.should == 2
overquota(0.10).should be_empty
end
it "should return users near their here isolines quota" do
::User.any_instance.stubs(:get_api_calls).returns([0])
::User.any_instance.stubs(:map_view_quota).returns(120)
::User.any_instance.stubs(:get_geocoding_calls).returns(0)
::User.any_instance.stubs(:geocoding_quota).returns(100)
::User.any_instance.stubs(:get_here_isolines_calls).returns(81)
::User.any_instance.stubs(:here_isolines_quota).returns(100)
overquota.should be_empty
overquota(0.20).should include(@user.id, @user2.id)
overquota(0.20).size.should == 2
overquota(0.10).should be_empty
end
it "should return users near their data observatory snapshot quota" do
::User.any_instance.stubs(:get_api_calls).returns([0])
::User.any_instance.stubs(:map_view_quota).returns(120)
::User.any_instance.stubs(:get_geocoding_calls).returns(0)
::User.any_instance.stubs(:geocoding_quota).returns(100)
::User.any_instance.stubs(:get_here_isolines_calls).returns(0)
::User.any_instance.stubs(:here_isolines_quota).returns(100)
::User.any_instance.stubs(:get_obs_general_calls).returns(0)
::User.any_instance.stubs(:obs_general_quota).returns(100)
::User.any_instance.stubs(:get_obs_snapshot_calls).returns(81)
::User.any_instance.stubs(:obs_snapshot_quota).returns(100)
overquota.should be_empty
overquota(0.20).should include(@user.id, @user2.id)
overquota(0.20).size.should == 2
overquota(0.10).should be_empty
end
it "should return users near their data observatory general quota" do
::User.any_instance.stubs(:get_api_calls).returns([0])
::User.any_instance.stubs(:map_view_quota).returns(120)
::User.any_instance.stubs(:get_geocoding_calls).returns(0)
::User.any_instance.stubs(:geocoding_quota).returns(100)
::User.any_instance.stubs(:get_here_isolines_calls).returns(0)
::User.any_instance.stubs(:here_isolines_quota).returns(100)
::User.any_instance.stubs(:get_obs_snapshot_calls).returns(0)
::User.any_instance.stubs(:obs_snapshot_quota).returns(100)
::User.any_instance.stubs(:get_obs_general_calls).returns(81)
::User.any_instance.stubs(:obs_general_quota).returns(100)
overquota.should be_empty
overquota(0.20).should include(@user.id, @user2.id)
overquota(0.20).size.should == 2
overquota(0.10).should be_empty
end
it "should return users near their twitter quota" do
::User.any_instance.stubs(:get_api_calls).returns([0])
::User.any_instance.stubs(:map_view_quota).returns(120)
::User.any_instance.stubs(:get_geocoding_calls).returns(0)
::User.any_instance.stubs(:geocoding_quota).returns(100)
::User.any_instance.stubs(:get_twitter_imports_count).returns(81)
::User.any_instance.stubs(:get_twitter_datasource_calls).returns(81)
::User.any_instance.stubs(:twitter_datasource_quota).returns(100)
overquota.should be_empty
overquota(0.20).should include(@user.id, @user2.id)
overquota(0.20).size.should == 2
overquota(0.10).should be_empty
end
it "should not return organization users" do
::User.any_instance.stubs(:organization_id).returns("organization-id")
::User.any_instance.stubs(:organization).returns(Organization.new)
overquota.should be_empty
end
end