From 500a4bb7483ba4067180cefa035f0695ffd22766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Miedes=20Garc=C3=A9s?= Date: Wed, 4 Nov 2020 13:22:07 +0100 Subject: [PATCH] Linter fixes --- .rubocop.yml | 10 + .../admin/organization_users_controller.rb | 8 +- .../carto/api/database_groups_controller.rb | 5 +- app/models/carto/group.rb | 2 + app/models/carto/organization.rb | 42 ++-- .../concerns/carto/organization_quotas.rb | 46 ++-- spec/factories/organizations.rb | 85 ++++--- spec/models/carto/organization_spec.rb | 208 +++++++++--------- 8 files changed, 204 insertions(+), 202 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index ed6c7f2acc..2741d38927 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -89,6 +89,16 @@ Naming/VariableNumber: Description: Use the configured style when numbering variables. Enabled: false +#################### +# RSpec +#################### + +RSpec/AnyInstance: + Enabled: false + +RSpec/ExampleLength: + Max: 30 + #################### # Style #################### diff --git a/app/controllers/admin/organization_users_controller.rb b/app/controllers/admin/organization_users_controller.rb index adfcc18b10..bca76dd360 100644 --- a/app/controllers/admin/organization_users_controller.rb +++ b/app/controllers/admin/organization_users_controller.rb @@ -10,10 +10,10 @@ class Admin::OrganizationUsersController < Admin::AdminController # Data of single users ssl_required :profile, :account, :oauth, :api_key, :regenerate_api_key - before_filter :get_config - before_filter :login_required, :check_permissions, :load_organization - before_filter :load_user, only: [:edit, :update, :destroy, :regenerate_api_key] - before_filter :ensure_edit_permissions, only: [:edit, :update, :destroy, :regenerate_api_key] + before_action :get_config + before_action :login_required, :check_permissions, :load_organization + before_action :load_user, only: [:edit, :update, :destroy, :regenerate_api_key] + before_action :ensure_edit_permissions, only: [:edit, :update, :destroy, :regenerate_api_key] layout 'application' diff --git a/app/controllers/carto/api/database_groups_controller.rb b/app/controllers/carto/api/database_groups_controller.rb index 87228a321e..d9a9ac2d11 100644 --- a/app/controllers/carto/api/database_groups_controller.rb +++ b/app/controllers/carto/api/database_groups_controller.rb @@ -173,7 +173,10 @@ module Carto end def get_group(database_name, name) - Carto::Group.where(organization_id: Carto::Organization.find_by_database_name(database_name).id, name: name).first + # rubocop:disable Rails/DynamicFindBy + organization = Carto::Organization.find_by_database_name(database_name) + # rubocop:enable Rails/DynamicFindBy + Carto::Group.where(organization_id: organization.id, name: name).first end def load_mandatory_group diff --git a/app/models/carto/group.rb b/app/models/carto/group.rb index 4ebe29ab15..dc4942e835 100644 --- a/app/models/carto/group.rb +++ b/app/models/carto/group.rb @@ -32,7 +32,9 @@ module Carto # Constructor for groups already existing in the database def self.new_instance(database_name, name, database_role, display_name = name) + # rubocop:disable Rails/DynamicFindBy organization = Carto::Organization.find_by_database_name(database_name) + # rubocop:enable Rails/DynamicFindBy raise "Organization not found for database #{database_name}" unless organization diff --git a/app/models/carto/organization.rb b/app/models/carto/organization.rb index 605c395956..319629ae06 100644 --- a/app/models/carto/organization.rb +++ b/app/models/carto/organization.rb @@ -57,9 +57,9 @@ module Carto ## ./ AR compatibility def self.find_by_database_name(database_name) - Carto::Organization. - joins('INNER JOIN users ON organizations.owner_id = users.id'). - where('users.database_name = ?', database_name).first + Carto::Organization + .joins('INNER JOIN users ON organizations.owner_id = users.id') + .where('users.database_name = ?', database_name).first end def default_password_expiration_in_d @@ -99,21 +99,21 @@ module Carto owner_id == user.id end - def tags(type, exclude_shared=true) + def tags(type, exclude_shared = true) users.map { |u| u.tags(exclude_shared, type) }.flatten end def public_vis_by_type(type, page_num, items_per_page, tags, order = 'updated_at', version = nil) CartoDB::Visualization::Collection.new.fetch( - user_id: self.users.map(&:id), - type: type, - privacy: CartoDB::Visualization::Member::PRIVACY_PUBLIC, - page: page_num, - per_page: items_per_page, - tags: tags, - order: order, - o: { updated_at: :desc }, - version: version + user_id: users.pluck(:id), + type: type, + privacy: CartoDB::Visualization::Member::PRIVACY_PUBLIC, + page: page_num, + per_page: items_per_page, + tags: tags, + order: order, + o: { updated_at: :desc }, + version: version ) end @@ -177,12 +177,6 @@ module Carto owner ? owner.max_layers : ::User::DEFAULT_MAX_LAYERS end - def require_organization_owner_presence! - if owner.nil? - raise Carto::Organization::OrganizationWithoutOwner.new(self) - end - end - def auth_saml_enabled? auth_saml_configuration.present? end @@ -207,20 +201,16 @@ module Carto inherit_owner_ffs ? owner.self_feature_flags : Carto::FeatureFlag.none end - def dbdirect_effective_ips - owner.dbdirect_effective_ips - end + delegate :dbdirect_effective_ips, to: :owner - def dbdirect_effective_ips=(ips) - owner.dbdirect_effective_ips = ips - end + delegate :dbdirect_effective_ips=, to: :owner def get_api_calls(options = {}) users.map { |u| u.get_api_calls(options).sum }.sum end def require_organization_owner_presence! - raise Carto::Organization::OrganizationWithoutOwner.new(self) unless owner + raise Carto::Organization::OrganizationWithoutOwner, self unless owner end # INFO: replacement for destroy because destroying owner triggers diff --git a/app/models/concerns/carto/organization_quotas.rb b/app/models/concerns/carto/organization_quotas.rb index 74823ad898..d138ea18a8 100644 --- a/app/models/concerns/carto/organization_quotas.rb +++ b/app/models/concerns/carto/organization_quotas.rb @@ -17,30 +17,28 @@ module Carto # def overquota(delta = 0) Carto::Organization.find_each.select do |o| - begin - limit = o.geocoding_quota.to_i - (o.geocoding_quota.to_i * delta) - over_geocodings = o.get_geocoding_calls > limit - limit = o.here_isolines_quota.to_i - (o.here_isolines_quota.to_i * delta) - over_here_isolines = o.get_here_isolines_calls > limit - limit = o.obs_snapshot_quota.to_i - (o.obs_snapshot_quota.to_i * delta) - over_obs_snapshot = o.get_obs_snapshot_calls > limit - limit = o.obs_general_quota.to_i - (o.obs_general_quota.to_i * delta) - over_obs_general = o.get_obs_general_calls > limit - limit = o.twitter_datasource_quota.to_i - (o.twitter_datasource_quota.to_i * delta) - over_twitter_imports = o.twitter_imports_count > limit - limit = o.mapzen_routing_quota.to_i - (o.mapzen_routing_quota.to_i * delta) - over_mapzen_routing = o.get_mapzen_routing_calls > limit - - (over_geocodings || - over_twitter_imports || - over_here_isolines || - over_obs_snapshot || - over_obs_general || - over_mapzen_routing) - rescue Carto::Organization::OrganizationWithoutOwner => e - log_warning(message: 'Skipping inconsistent organization', organization: o, exception: e) - false - end + limit = o.geocoding_quota.to_i - (o.geocoding_quota.to_i * delta) + over_geocodings = o.get_geocoding_calls > limit + limit = o.here_isolines_quota.to_i - (o.here_isolines_quota.to_i * delta) + over_here_isolines = o.get_here_isolines_calls > limit + limit = o.obs_snapshot_quota.to_i - (o.obs_snapshot_quota.to_i * delta) + over_obs_snapshot = o.get_obs_snapshot_calls > limit + limit = o.obs_general_quota.to_i - (o.obs_general_quota.to_i * delta) + over_obs_general = o.get_obs_general_calls > limit + limit = o.twitter_datasource_quota.to_i - (o.twitter_datasource_quota.to_i * delta) + over_twitter_imports = o.twitter_imports_count > limit + limit = o.mapzen_routing_quota.to_i - (o.mapzen_routing_quota.to_i * delta) + over_mapzen_routing = o.get_mapzen_routing_calls > limit + + (over_geocodings || + over_twitter_imports || + over_here_isolines || + over_obs_snapshot || + over_obs_general || + over_mapzen_routing) + rescue Carto::Organization::OrganizationWithoutOwner => e + log_warning(message: 'Skipping inconsistent organization', organization: o, exception: e) + false end end end diff --git a/spec/factories/organizations.rb b/spec/factories/organizations.rb index 39a2bd706c..c2d88cfb8f 100644 --- a/spec/factories/organizations.rb +++ b/spec/factories/organizations.rb @@ -4,38 +4,37 @@ require 'helpers/unique_names_helper' include UniqueNamesHelper FactoryGirl.define do - - factory :organization, class: Carto::Organization do + factory :organization, class: 'Carto::Organization' do name { unique_name('organization') } - seats 10 - quota_in_bytes 100.megabytes - geocoding_quota 1000 - here_isolines_quota 1000 - obs_snapshot_quota 1000 - obs_general_quota 1000 - map_view_quota 100000 - website 'carto.com' - description 'Lorem ipsum dolor sit amet' - display_name 'Vizzuality Inc' - discus_shortname 'cartodb' - twitter_username 'cartodb' - location 'Madrid' - builder_enabled false # Most tests still assume editor - geocoder_provider 'heremaps' - isolines_provider 'heremaps' - routing_provider 'heremaps' + seats { 10 } + quota_in_bytes { 100.megabytes } + geocoding_quota { 1000 } + here_isolines_quota { 1000 } + obs_snapshot_quota { 1000 } + obs_general_quota { 1000 } + map_view_quota { 100_000 } + website { 'carto.com' } + description { 'Lorem ipsum dolor sit amet' } + display_name { 'Vizzuality Inc' } + discus_shortname { 'cartodb' } + twitter_username { 'cartodb' } + location { 'Madrid' } + builder_enabled { false } # Most tests still assume editor + geocoder_provider { 'heremaps' } + isolines_provider { 'heremaps' } + routing_provider { 'heremaps' } - factory :organization_whitelist_carto, class: Carto::Organization do - whitelisted_email_domains ['carto.com'] - auth_username_password_enabled true + factory :organization_whitelist_carto, class: 'Carto::Organization' do + whitelisted_email_domains { ['carto.com'] } + auth_username_password_enabled { true } end - factory :organization_google_whitelist_empty, class: Carto::Organization do - whitelisted_email_domains [] - auth_google_enabled true + factory :organization_google_whitelist_empty, class: 'Carto::Organization' do + whitelisted_email_domains { [] } + auth_google_enabled { true } end - factory :organization_with_users, class: Carto::Organization do + factory :organization_with_users, class: 'Carto::Organization' do after(:create) do |org| create_account_type_fg('ORGANIZATION USER') owner = FactoryGirl.create(:user) @@ -50,7 +49,7 @@ FactoryGirl.define do end trait :mfa_enabled do - auth_username_password_enabled true + auth_username_password_enabled { true } after :create do |org| Carto::Organization.find(org.id).users.each do |user| @@ -61,7 +60,7 @@ FactoryGirl.define do end end - factory :saml_organization, class: Carto::Organization do + factory :saml_organization, class: 'Carto::Organization' do auth_saml_configuration do { issuer: 'localhost.lan', @@ -75,22 +74,22 @@ FactoryGirl.define do end end - factory :carto_organization, class: Carto::Organization do + factory :carto_organization, class: 'Carto::Organization' do name { unique_name('organization') } - seats 10 - quota_in_bytes 100.megabytes - geocoding_quota 1000 - here_isolines_quota 1000 - obs_snapshot_quota 1000 - obs_general_quota 1000 - map_view_quota 100000 - website 'carto.com' - description 'Lorem ipsum dolor sit amet' - display_name 'Vizzuality Inc' - discus_shortname 'cartodb' - twitter_username 'cartodb' - location 'Madrid' - builder_enabled false # Most tests still assume editor + seats { 10 } + quota_in_bytes { 100.megabytes } + geocoding_quota { 1000 } + here_isolines_quota { 1000 } + obs_snapshot_quota { 1000 } + obs_general_quota { 1000 } + map_view_quota { 100_000 } + website { 'carto.com' } + description { 'Lorem ipsum dolor sit amet' } + display_name { 'Vizzuality Inc' } + discus_shortname { 'cartodb' } + twitter_username { 'cartodb' } + location { 'Madrid' } + builder_enabled { false } # Most tests still assume editor end end end diff --git a/spec/models/carto/organization_spec.rb b/spec/models/carto/organization_spec.rb index d24fbee0fb..f1ba8267f6 100644 --- a/spec/models/carto/organization_spec.rb +++ b/spec/models/carto/organization_spec.rb @@ -8,7 +8,7 @@ describe Carto::Organization do it_behaves_like 'organization models' do before(:each) do # INFO: forcing ActiveRecord initialization so expectations on number of queries don't count AR queries - @the_organization = Carto::Organization.where(id: @organization.id).first + @the_organization = described_class.where(id: @organization.id).first @the_organization.owner Carto::SearchTweet.count Carto::Geocoding.count @@ -32,7 +32,7 @@ describe Carto::Organization do describe '#destroy' do before(:each) do - @organization = Carto::Organization.find(create(:organization).id) + @organization = described_class.find(create(:organization).id) end it 'destroys its groups through the extension' do @@ -62,137 +62,137 @@ describe Carto::Organization do end it 'should return organizations over their geocoding quota' do - Carto::Organization.any_instance.stubs(:get_api_calls).returns(0) - Carto::Organization.any_instance.stubs(:map_view_quota).returns(10) - Carto::Organization.any_instance.stubs(:get_geocoding_calls).returns 30 - Carto::Organization.any_instance.stubs(:geocoding_quota).returns 10 + described_class.any_instance.stubs(:get_api_calls).returns(0) + described_class.any_instance.stubs(:map_view_quota).returns(10) + described_class.any_instance.stubs(:get_geocoding_calls).returns 30 + described_class.any_instance.stubs(:geocoding_quota).returns 10 - expect(Carto::Organization.overquota).not_to include(organization) - expect(Carto::Organization.overquota).to include(overquota_organization) + expect(described_class.overquota).not_to include(organization) + expect(described_class.overquota).to include(overquota_organization) end it 'should return organizations over their here isolines quota' do - Carto::Organization.any_instance.stubs(:get_api_calls).returns(0) - Carto::Organization.any_instance.stubs(:map_view_quota).returns(10) - Carto::Organization.any_instance.stubs(:get_geocoding_calls).returns 0 - Carto::Organization.any_instance.stubs(:geocoding_quota).returns 10 - Carto::Organization.any_instance.stubs(:get_here_isolines_calls).returns 30 - Carto::Organization.any_instance.stubs(:here_isolines_quota).returns 10 + described_class.any_instance.stubs(:get_api_calls).returns(0) + described_class.any_instance.stubs(:map_view_quota).returns(10) + described_class.any_instance.stubs(:get_geocoding_calls).returns 0 + described_class.any_instance.stubs(:geocoding_quota).returns 10 + described_class.any_instance.stubs(:get_here_isolines_calls).returns 30 + described_class.any_instance.stubs(:here_isolines_quota).returns 10 - expect(Carto::Organization.overquota).not_to include(organization) - expect(Carto::Organization.overquota).to include(overquota_organization) + expect(described_class.overquota).not_to include(organization) + expect(described_class.overquota).to include(overquota_organization) end it 'should return organizations over their data observatory snapshot quota' do - Carto::Organization.any_instance.stubs(:get_api_calls).returns(0) - Carto::Organization.any_instance.stubs(:map_view_quota).returns(10) - Carto::Organization.any_instance.stubs(:get_geocoding_calls).returns 0 - Carto::Organization.any_instance.stubs(:geocoding_quota).returns 10 - Carto::Organization.any_instance.stubs(:get_obs_snapshot_calls).returns 30 - Carto::Organization.any_instance.stubs(:obs_snapshot_quota).returns 10 + described_class.any_instance.stubs(:get_api_calls).returns(0) + described_class.any_instance.stubs(:map_view_quota).returns(10) + described_class.any_instance.stubs(:get_geocoding_calls).returns 0 + described_class.any_instance.stubs(:geocoding_quota).returns 10 + described_class.any_instance.stubs(:get_obs_snapshot_calls).returns 30 + described_class.any_instance.stubs(:obs_snapshot_quota).returns 10 - expect(Carto::Organization.overquota).not_to include(organization) - expect(Carto::Organization.overquota).to include(overquota_organization) + expect(described_class.overquota).not_to include(organization) + expect(described_class.overquota).to include(overquota_organization) end it 'should return organizations over their data observatory general quota' do - Carto::Organization.any_instance.stubs(:get_api_calls).returns(0) - Carto::Organization.any_instance.stubs(:map_view_quota).returns(10) - Carto::Organization.any_instance.stubs(:get_geocoding_calls).returns 0 - Carto::Organization.any_instance.stubs(:geocoding_quota).returns 10 - Carto::Organization.any_instance.stubs(:get_obs_snapshot_calls).returns 0 - Carto::Organization.any_instance.stubs(:obs_snapshot_quota).returns 10 - Carto::Organization.any_instance.stubs(:get_obs_general_calls).returns 30 - Carto::Organization.any_instance.stubs(:obs_general_quota).returns 10 + described_class.any_instance.stubs(:get_api_calls).returns(0) + described_class.any_instance.stubs(:map_view_quota).returns(10) + described_class.any_instance.stubs(:get_geocoding_calls).returns 0 + described_class.any_instance.stubs(:geocoding_quota).returns 10 + described_class.any_instance.stubs(:get_obs_snapshot_calls).returns 0 + described_class.any_instance.stubs(:obs_snapshot_quota).returns 10 + described_class.any_instance.stubs(:get_obs_general_calls).returns 30 + described_class.any_instance.stubs(:obs_general_quota).returns 10 - expect(Carto::Organization.overquota).not_to include(organization) - expect(Carto::Organization.overquota).to include(overquota_organization) + expect(described_class.overquota).not_to include(organization) + expect(described_class.overquota).to include(overquota_organization) end it 'should return organizations near their geocoding quota' do - Carto::Organization.any_instance.stubs(:get_api_calls).returns(0) - Carto::Organization.any_instance.stubs(:map_view_quota).returns(120) - Carto::Organization.any_instance.stubs(:get_geocoding_calls).returns(81) - Carto::Organization.any_instance.stubs(:geocoding_quota).returns(100) + described_class.any_instance.stubs(:get_api_calls).returns(0) + described_class.any_instance.stubs(:map_view_quota).returns(120) + described_class.any_instance.stubs(:get_geocoding_calls).returns(81) + described_class.any_instance.stubs(:geocoding_quota).returns(100) - expect(Carto::Organization.overquota).to be_empty - expect(Carto::Organization.overquota(0.20)).not_to include(organization) - expect(Carto::Organization.overquota(0.20)).to include(overquota_organization) - expect(Carto::Organization.overquota(0.10)).to be_empty + expect(described_class.overquota).to be_empty + expect(described_class.overquota(0.20)).not_to include(organization) + expect(described_class.overquota(0.20)).to include(overquota_organization) + expect(described_class.overquota(0.10)).to be_empty end it 'should return organizations near their here isolines quota' do - Carto::Organization.any_instance.stubs(:get_api_calls).returns(0) - Carto::Organization.any_instance.stubs(:map_view_quota).returns(120) - Carto::Organization.any_instance.stubs(:get_geocoding_calls).returns(0) - Carto::Organization.any_instance.stubs(:geocoding_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_here_isolines_calls).returns(81) - Carto::Organization.any_instance.stubs(:here_isolines_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_obs_snapshot_calls).returns(0) - Carto::Organization.any_instance.stubs(:obs_snapshot_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_obs_general_calls).returns(0) - Carto::Organization.any_instance.stubs(:obs_general_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_mapzen_routing_calls).returns(81) - Carto::Organization.any_instance.stubs(:mapzen_routing_quota).returns(100) - - expect(Carto::Organization.overquota).to be_empty - expect(Carto::Organization.overquota(0.20)).not_to include(organization) - expect(Carto::Organization.overquota(0.20)).to include(overquota_organization) - expect(Carto::Organization.overquota(0.10)).to be_empty + described_class.any_instance.stubs(:get_api_calls).returns(0) + described_class.any_instance.stubs(:map_view_quota).returns(120) + described_class.any_instance.stubs(:get_geocoding_calls).returns(0) + described_class.any_instance.stubs(:geocoding_quota).returns(100) + described_class.any_instance.stubs(:get_here_isolines_calls).returns(81) + described_class.any_instance.stubs(:here_isolines_quota).returns(100) + described_class.any_instance.stubs(:get_obs_snapshot_calls).returns(0) + described_class.any_instance.stubs(:obs_snapshot_quota).returns(100) + described_class.any_instance.stubs(:get_obs_general_calls).returns(0) + described_class.any_instance.stubs(:obs_general_quota).returns(100) + described_class.any_instance.stubs(:get_mapzen_routing_calls).returns(81) + described_class.any_instance.stubs(:mapzen_routing_quota).returns(100) + + expect(described_class.overquota).to be_empty + expect(described_class.overquota(0.20)).not_to include(organization) + expect(described_class.overquota(0.20)).to include(overquota_organization) + expect(described_class.overquota(0.10)).to be_empty end it 'should return organizations near their data observatory snapshot quota' do - Carto::Organization.any_instance.stubs(:get_api_calls).returns(0) - Carto::Organization.any_instance.stubs(:map_view_quota).returns(120) - Carto::Organization.any_instance.stubs(:get_geocoding_calls).returns(0) - Carto::Organization.any_instance.stubs(:geocoding_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_here_isolines_calls).returns(0) - Carto::Organization.any_instance.stubs(:here_isolines_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_obs_general_calls).returns(0) - Carto::Organization.any_instance.stubs(:obs_general_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_obs_snapshot_calls).returns(81) - Carto::Organization.any_instance.stubs(:obs_snapshot_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_mapzen_routing_calls).returns(0) - Carto::Organization.any_instance.stubs(:mapzen_routing_quota).returns(100) - - expect(Carto::Organization.overquota).to be_empty - expect(Carto::Organization.overquota(0.20)).not_to include(organization) - expect(Carto::Organization.overquota(0.20)).to include(overquota_organization) - expect(Carto::Organization.overquota(0.10)).to be_empty + described_class.any_instance.stubs(:get_api_calls).returns(0) + described_class.any_instance.stubs(:map_view_quota).returns(120) + described_class.any_instance.stubs(:get_geocoding_calls).returns(0) + described_class.any_instance.stubs(:geocoding_quota).returns(100) + described_class.any_instance.stubs(:get_here_isolines_calls).returns(0) + described_class.any_instance.stubs(:here_isolines_quota).returns(100) + described_class.any_instance.stubs(:get_obs_general_calls).returns(0) + described_class.any_instance.stubs(:obs_general_quota).returns(100) + described_class.any_instance.stubs(:get_obs_snapshot_calls).returns(81) + described_class.any_instance.stubs(:obs_snapshot_quota).returns(100) + described_class.any_instance.stubs(:get_mapzen_routing_calls).returns(0) + described_class.any_instance.stubs(:mapzen_routing_quota).returns(100) + + expect(described_class.overquota).to be_empty + expect(described_class.overquota(0.20)).not_to include(organization) + expect(described_class.overquota(0.20)).to include(overquota_organization) + expect(described_class.overquota(0.10)).to be_empty end it 'should return organizations near their data observatory general quota' do - Carto::Organization.any_instance.stubs(:get_api_calls).returns(0) - Carto::Organization.any_instance.stubs(:map_view_quota).returns(120) - Carto::Organization.any_instance.stubs(:get_geocoding_calls).returns(0) - Carto::Organization.any_instance.stubs(:geocoding_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_here_isolines_calls).returns(0) - Carto::Organization.any_instance.stubs(:here_isolines_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_obs_snapshot_calls).returns(0) - Carto::Organization.any_instance.stubs(:obs_snapshot_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_obs_general_calls).returns(81) - Carto::Organization.any_instance.stubs(:obs_general_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_mapzen_routing_calls).returns(0) - Carto::Organization.any_instance.stubs(:mapzen_routing_quota).returns(100) - - expect(Carto::Organization.overquota).to be_empty - expect(Carto::Organization.overquota(0.20)).not_to include(organization) - expect(Carto::Organization.overquota(0.20)).to include(overquota_organization) - expect(Carto::Organization.overquota(0.10)).to be_empty + described_class.any_instance.stubs(:get_api_calls).returns(0) + described_class.any_instance.stubs(:map_view_quota).returns(120) + described_class.any_instance.stubs(:get_geocoding_calls).returns(0) + described_class.any_instance.stubs(:geocoding_quota).returns(100) + described_class.any_instance.stubs(:get_here_isolines_calls).returns(0) + described_class.any_instance.stubs(:here_isolines_quota).returns(100) + described_class.any_instance.stubs(:get_obs_snapshot_calls).returns(0) + described_class.any_instance.stubs(:obs_snapshot_quota).returns(100) + described_class.any_instance.stubs(:get_obs_general_calls).returns(81) + described_class.any_instance.stubs(:obs_general_quota).returns(100) + described_class.any_instance.stubs(:get_mapzen_routing_calls).returns(0) + described_class.any_instance.stubs(:mapzen_routing_quota).returns(100) + + expect(described_class.overquota).to be_empty + expect(described_class.overquota(0.20)).not_to include(organization) + expect(described_class.overquota(0.20)).to include(overquota_organization) + expect(described_class.overquota(0.10)).to be_empty end it 'should return organizations over their mapzen routing quota' do - Carto::Organization.any_instance.stubs(:get_api_calls).returns(0) - Carto::Organization.any_instance.stubs(:map_view_quota).returns(10) - Carto::Organization.any_instance.stubs(:get_geocoding_calls).returns 0 - Carto::Organization.any_instance.stubs(:geocoding_quota).returns 10 - Carto::Organization.any_instance.stubs(:get_here_isolines_calls).returns(0) - Carto::Organization.any_instance.stubs(:here_isolines_quota).returns(100) - Carto::Organization.any_instance.stubs(:get_mapzen_routing_calls).returns 30 - Carto::Organization.any_instance.stubs(:mapzen_routing_quota).returns 10 - - expect(Carto::Organization.overquota(0.20)).not_to include(organization) - expect(Carto::Organization.overquota(0.20)).to include(overquota_organization) + described_class.any_instance.stubs(:get_api_calls).returns(0) + described_class.any_instance.stubs(:map_view_quota).returns(10) + described_class.any_instance.stubs(:get_geocoding_calls).returns 0 + described_class.any_instance.stubs(:geocoding_quota).returns 10 + described_class.any_instance.stubs(:get_here_isolines_calls).returns(0) + described_class.any_instance.stubs(:here_isolines_quota).returns(100) + described_class.any_instance.stubs(:get_mapzen_routing_calls).returns 30 + described_class.any_instance.stubs(:mapzen_routing_quota).returns 10 + + expect(described_class.overquota(0.20)).not_to include(organization) + expect(described_class.overquota(0.20)).to include(overquota_organization) end end end