require:
  - rubocop-performance
  - rubocop-rails
  - rubocop-rspec
inherit_from: .rubocop_todo.yml

Layout/LineLength:
  Max: 150

Metrics/ClassLength:
  Max: 125
  Exclude:
    - 'app/models/conversation.rb'
RSpec/ExampleLength:
  Max: 25
Style/Documentation:
  Enabled: false
Style/ExponentialNotation:
  Enabled: false
Style/FrozenStringLiteralComment:
  Enabled: false
Style/SymbolArray:
  Enabled: false
Style/OptionalBooleanParameter:
  Exclude: 
    - 'app/services/email_templates/db_resolver_service.rb'
    - 'app/dispatchers/dispatcher.rb'
Style/GlobalVars:
  Exclude:
    - 'config/initializers/redis.rb'
    - 'lib/redis/alfred.rb'
    - 'lib/global_config.rb'
Style/ClassVars:
  Exclude:
    - 'app/services/email_templates/db_resolver_service.rb'
Lint/MissingSuper:
  Exclude:
    - 'app/drops/base_drop.rb'
Metrics/BlockLength:
  Exclude:
    - spec/**/*
    - '**/routes.rb'
    - 'config/environments/*'
    - db/schema.rb
Rails/ApplicationController:
  Exclude:
    - 'app/controllers/api/v1/widget/messages_controller.rb'
    - 'app/controllers/dashboard_controller.rb'
    - 'app/controllers/widget_tests_controller.rb'
    - 'app/controllers/widgets_controller.rb'
Style/ClassAndModuleChildren:
  EnforcedStyle: compact
  Exclude:
    - 'config/application.rb'
RSpec/NestedGroups:
  Enabled: true
  Max: 4
RSpec/MessageSpies:
  Enabled: false
Metrics/MethodLength:
  Exclude:
    - 'db/migrate/20161123131628_devise_token_auth_create_users.rb'
Rails/CreateTableWithTimestamps:
  Exclude:
    - 'db/migrate/20170207092002_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb'
Style/GuardClause:
  Exclude:
    - 'app/builders/account_builder.rb'
    - 'app/models/attachment.rb'
    - 'app/models/message.rb'
    - 'db/migrate/20190819005836_add_missing_indexes_on_taggings.acts_as_taggable_on_engine.rb'
Metrics/AbcSize:
  Exclude: 
    - 'app/controllers/concerns/auth_helper.rb'
    - 'db/migrate/20190819005836_add_missing_indexes_on_taggings.acts_as_taggable_on_engine.rb'
    - 'db/migrate/20161123131628_devise_token_auth_create_users.rb'
Metrics/CyclomaticComplexity:
  Max: 7
  Exclude:
    - 'db/migrate/20190819005836_add_missing_indexes_on_taggings.acts_as_taggable_on_engine.rb'
Rails/ReversibleMigration:
  Exclude:
    - 'db/migrate/20161025070152_removechannelsfrommodels.rb'
    - 'db/migrate/20161025070645_remchannel.rb'
    - 'db/migrate/20161025070645_remchannel.rb'
    - 'db/migrate/20161110102609_removeinboxid.rb'
    - 'db/migrate/20170519091539_add_avatar_to_fb.rb'
    - 'db/migrate/20191020085608_rename_old_tables.rb'
    - 'db/migrate/20191126185833_update_user_invite_foreign_key.rb'
    - 'db/migrate/20191130164019_add_template_type_to_messages.rb'
Rails/BulkChangeTable:
  Exclude:
    - 'db/migrate/20161025070152_removechannelsfrommodels.rb'
    - 'db/migrate/20200121190901_create_account_users.rb'
    - 'db/migrate/20170211092540_notnullableusers.rb'
    - 'db/migrate/20170403095203_contactadder.rb'
    - 'db/migrate/20170406104018_add_default_status_conv.rb'
    - 'db/migrate/20170511134418_latlong.rb'
    - 'db/migrate/20191027054756_create_contact_inboxes.rb'
    - 'db/migrate/20191130164019_add_template_type_to_messages.rb'
Rails/UniqueValidationWithoutIndex: 
  Exclude:
    - 'app/models/channel/twitter_profile.rb'
    - 'app/models/webhook.rb'
Rails/RenderInline:
  Exclude:
    - 'app/controllers/swagger_controller.rb'
RSpec/NamedSubject:
  Enabled: false
# we should bring this down
RSpec/MultipleMemoizedHelpers:
  Max: 12
AllCops:
  NewCops: enable
  Exclude:
    - 'bin/**/*'
    - 'db/schema.rb'
    - 'public/**/*'
    - 'config/initializers/bot.rb'
    - 'vendor/**/*'
    - 'node_modules/**/*'
    - 'lib/tasks/auto_annotate_models.rake'
    - 'config/environments/**/*'
    - 'tmp/**/*'
    - 'storage/**/*'
    - 'db/migrate/20200225162150_init_schema.rb'
