---
RSpec:
  Enabled: true
  StyleGuideBaseURL: https://rspec.rubystyle.guide
  Include: &1
    - "**/*_spec.rb"
    - "**/spec/**/*"
  Language: &2
    inherit_mode:
      merge:
        - Expectations
        - Helpers
        - Hooks
        - HookScopes
        - Runners
        - Subjects
    ExampleGroups:
      inherit_mode:
        merge:
          - Regular
          - Skipped
          - Focused
      Regular:
        - describe
        - context
        - feature
        - example_group
      Skipped:
        - xdescribe
        - xcontext
        - xfeature
      Focused:
        - fdescribe
        - fcontext
        - ffeature
    Examples:
      inherit_mode:
        merge:
          - Regular
          - Skipped
          - Focused
          - Pending
      Regular:
        - it
        - specify
        - example
        - scenario
        - its
      Focused:
        - fit
        - fspecify
        - fexample
        - fscenario
        - focus
      Skipped:
        - xit
        - xspecify
        - xexample
        - xscenario
        - skip
      Pending:
        - pending
    Expectations:
      - expect
      - is_expected
      - expect_any_instance_of
    Helpers:
      - let
      - let!
    Hooks:
      - prepend_before
      - before
      - append_before
      - around
      - prepend_after
      - after
      - append_after
    HookScopes:
      - each
      - example
      - context
      - all
      - suite
    Includes:
      inherit_mode:
        merge:
          - Examples
          - Context
      Examples:
        - it_behaves_like
        - it_should_behave_like
        - include_examples
      Context:
        - include_context
    Runners:
      - to
      - to_not
      - not_to
    SharedGroups:
      inherit_mode:
        merge:
          - Examples
          - Context
      Examples:
        - shared_examples
        - shared_examples_for
      Context:
        - shared_context
    Subjects:
      - subject
      - subject!

Metrics/BlockLength:
  inherit_mode:
    merge:
      - Exclude
  Exclude:
    - "**/*_spec.rb"
    - "**/spec/**/*"

RSpec/AlignLeftLetBrace:
  Description: Checks that left braces for adjacent single line lets are aligned.
  Enabled: false
  VersionAdded: '1.16'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/AlignLeftLetBrace

RSpec/AlignRightLetBrace:
  Description: Checks that right braces for adjacent single line lets are aligned.
  Enabled: false
  VersionAdded: '1.16'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/AlignRightLetBrace

RSpec/AnyInstance:
  Description: Check that instances are not being stubbed globally.
  Enabled: true
  VersionAdded: '1.4'
  StyleGuide: https://rspec.rubystyle.guide/#any_instance_of
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/AnyInstance

RSpec/AroundBlock:
  Description: Checks that around blocks actually run the test.
  Enabled: true
  VersionAdded: '1.11'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/AroundBlock

RSpec/Be:
  Description: Check for expectations where `be` is used without argument.
  Enabled: true
  VersionAdded: '1.25'
  StyleGuide: https://rspec.rubystyle.guide/#be-matcher
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Be

RSpec/BeEq:
  Description: Check for expectations where `be(...)` can replace `eq(...)`.
  Enabled: pending
  VersionAdded: 2.9.0
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeEq

RSpec/BeEql:
  Description: Check for expectations where `be(...)` can replace `eql(...)`.
  Enabled: true
  VersionAdded: '1.7'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeEql

RSpec/BeNil:
  Description: Ensures a consistent style is used when matching `nil`.
  Enabled: pending
  EnforcedStyle: be_nil
  SupportedStyles:
    - be
    - be_nil
  VersionAdded: 2.9.0
  VersionChanged: 2.10.0
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeNil

RSpec/BeforeAfterAll:
  Description: Check that before/after(:all) isn't being used.
  Enabled: true
  Exclude:
    - spec/spec_helper.rb
    - spec/rails_helper.rb
    - spec/support/**/*.rb
  VersionAdded: '1.12'
  StyleGuide: https://rspec.rubystyle.guide/#avoid-hooks-with-context-scope
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeforeAfterAll

RSpec/ChangeByZero:
  Description: Prefer negated matchers over `to change.by(0)`.
  Enabled: pending
  VersionAdded: 2.11.0
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ChangeByZero

RSpec/ContextMethod:
  Description: "`context` should not be used for specifying methods."
  Enabled: true
  VersionAdded: '1.36'
  StyleGuide: https://rspec.rubystyle.guide/#example-group-naming
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ContextMethod

RSpec/ContextWording:
  Description: Checks that `context` docstring starts with an allowed prefix.
  Enabled: true
  Prefixes:
    - when
    - with
    - without
  VersionAdded: '1.20'
  VersionChanged: 1.20.1
  StyleGuide: https://rspec.rubystyle.guide/#context-descriptions
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ContextWording

RSpec/DescribeClass:
  Description: Check that the first argument to the top-level describe is a constant.
  Enabled: true
  Exclude:
    - "**/spec/features/**/*"
    - "**/spec/requests/**/*"
    - "**/spec/routing/**/*"
    - "**/spec/system/**/*"
    - "**/spec/views/**/*"
  IgnoredMetadata:
    type:
      - channel
      - controller
      - helper
      - job
      - mailer
      - model
      - request
      - routing
      - view
      - feature
      - system
      - mailbox
      - aruba
      - task
  VersionAdded: '1.0'
  VersionChanged: '2.7'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribeClass

RSpec/DescribeMethod:
  Description: Checks that the second argument to `describe` specifies a method.
  Enabled: true
  VersionAdded: '1.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribeMethod

RSpec/DescribeSymbol:
  Description: Avoid describing symbols.
  Enabled: true
  VersionAdded: '1.15'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribeSymbol

RSpec/DescribedClass:
  Description: Checks that tests use `described_class`.
  Enabled: true
  SkipBlocks: false
  EnforcedStyle: described_class
  SupportedStyles:
    - described_class
    - explicit
  SafeAutoCorrect: false
  VersionAdded: '1.0'
  VersionChanged: '1.11'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribedClass

RSpec/DescribedClassModuleWrapping:
  Description: Avoid opening modules and defining specs within them.
  Enabled: false
  VersionAdded: '1.37'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribedClassModuleWrapping

RSpec/Dialect:
  Description: Enforces custom RSpec dialects.
  Enabled: false
  PreferredMethods: {}
  VersionAdded: '1.33'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Dialect

RSpec/EmptyExampleGroup:
  Description: Checks if an example group does not include any tests.
  Enabled: true
  VersionAdded: '1.7'
  VersionChanged: '2.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyExampleGroup

RSpec/EmptyHook:
  Description: Checks for empty before and after hooks.
  Enabled: true
  VersionAdded: '1.39'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyHook

RSpec/EmptyLineAfterExample:
  Description: Checks if there is an empty line after example blocks.
  Enabled: true
  AllowConsecutiveOneLiners: true
  VersionAdded: '1.36'
  StyleGuide: https://rspec.rubystyle.guide/#empty-lines-around-examples
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterExample

RSpec/EmptyLineAfterExampleGroup:
  Description: Checks if there is an empty line after example group blocks.
  Enabled: true
  VersionAdded: '1.27'
  StyleGuide: https://rspec.rubystyle.guide/#empty-lines-between-describes
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterExampleGroup

RSpec/EmptyLineAfterFinalLet:
  Description: Checks if there is an empty line after the last let block.
  Enabled: true
  VersionAdded: '1.14'
  StyleGuide: https://rspec.rubystyle.guide/#empty-line-after-let
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterFinalLet

RSpec/EmptyLineAfterHook:
  Description: Checks if there is an empty line after hook blocks.
  Enabled: true
  VersionAdded: '1.27'
  StyleGuide: https://rspec.rubystyle.guide/#empty-line-after-let
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterHook

RSpec/EmptyLineAfterSubject:
  Description: Checks if there is an empty line after subject block.
  Enabled: true
  VersionAdded: '1.14'
  StyleGuide: https://rspec.rubystyle.guide/#empty-line-after-let
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterSubject

RSpec/ExampleLength:
  Description: Checks for long examples.
  Enabled: true
  Max: 5
  CountAsOne: []
  VersionAdded: '1.5'
  VersionChanged: '2.3'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExampleLength

RSpec/ExampleWithoutDescription:
  Description: Checks for examples without a description.
  Enabled: true
  EnforcedStyle: always_allow
  SupportedStyles:
    - always_allow
    - single_line_only
    - disallow
  VersionAdded: '1.22'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExampleWithoutDescription

RSpec/ExcessiveDocstringSpacing:
  Description: Checks for excessive whitespace in example descriptions.
  Enabled: pending
  VersionAdded: '2.5'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExcessiveDocstringSpacing

RSpec/ExampleWording:
  Description: Checks for common mistakes in example descriptions.
  Enabled: true
  CustomTransform:
    be: is
    BE: IS
    have: has
    HAVE: HAS
  IgnoredWords: []
  VersionAdded: '1.0'
  VersionChanged: '1.2'
  StyleGuide: https://rspec.rubystyle.guide/#should-in-example-docstrings
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExampleWording

RSpec/ExpectActual:
  Description: Checks for `expect(...)` calls containing literal values.
  Enabled: true
  Exclude:
    - spec/routing/**/*
  VersionAdded: '1.7'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectActual

RSpec/ExpectChange:
  Description: Checks for consistent style of change matcher.
  Enabled: true
  EnforcedStyle: method_call
  SupportedStyles:
    - method_call
    - block
  SafeAutoCorrect: false
  VersionAdded: '1.22'
  VersionChanged: '2.5'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectChange

RSpec/ExpectInHook:
  Description: Do not use `expect` in hooks such as `before`.
  Enabled: true
  VersionAdded: '1.16'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectInHook

RSpec/ExpectOutput:
  Description: Checks for opportunities to use `expect { ... }.to output`.
  Enabled: true
  VersionAdded: '1.10'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectOutput

RSpec/FilePath:
  Description: Checks that spec file paths are consistent and well-formed.
  Enabled: true
  Include:
    - "**/*_spec*rb*"
    - "**/spec/**/*"
  CustomTransform:
    RuboCop: rubocop
    RSpec: rspec
  IgnoreMethods: false
  SpecSuffixOnly: false
  VersionAdded: '1.2'
  VersionChanged: '1.40'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FilePath

RSpec/Focus:
  Description: Checks if examples are focused.
  Enabled: true
  VersionAdded: '1.5'
  VersionChanged: '2.1'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Focus

RSpec/HookArgument:
  Description: Checks the arguments passed to `before`, `around`, and `after`.
  Enabled: true
  EnforcedStyle: implicit
  SupportedStyles:
    - implicit
    - each
    - example
  VersionAdded: '1.7'
  StyleGuide: https://rspec.rubystyle.guide/#redundant-beforeeach
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/HookArgument

RSpec/HooksBeforeExamples:
  Description: Checks for before/around/after hooks that come after an example.
  Enabled: true
  VersionAdded: '1.29'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/HooksBeforeExamples

RSpec/IdenticalEqualityAssertion:
  Description: Checks for equality assertions with identical expressions on both sides.
  Enabled: pending
  VersionAdded: '2.4'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/IdenticalEqualityAssertion

RSpec/ImplicitBlockExpectation:
  Description: Check that implicit block expectation syntax is not used.
  Enabled: true
  VersionAdded: '1.35'
  StyleGuide: https://rspec.rubystyle.guide/#implicit-block-expectations
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ImplicitBlockExpectation

RSpec/ImplicitExpect:
  Description: Check that a consistent implicit expectation style is used.
  Enabled: true
  EnforcedStyle: is_expected
  SupportedStyles:
    - is_expected
    - should
  VersionAdded: '1.8'
  StyleGuide: https://rspec.rubystyle.guide/#use-expect
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ImplicitExpect

RSpec/ImplicitSubject:
  Description: Checks for usage of implicit subject (`is_expected` / `should`).
  Enabled: true
  EnforcedStyle: single_line_only
  SupportedStyles:
    - single_line_only
    - single_statement_only
    - disallow
  VersionAdded: '1.29'
  VersionChanged: '1.30'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ImplicitSubject

RSpec/InstanceSpy:
  Description: Checks for `instance_double` used with `have_received`.
  Enabled: true
  VersionAdded: '1.12'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/InstanceSpy

RSpec/InstanceVariable:
  Description: Checks for instance variable usage in specs.
  Enabled: true
  AssignmentOnly: false
  VersionAdded: '1.0'
  VersionChanged: '1.7'
  StyleGuide: https://rspec.rubystyle.guide/#instance-variables
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/InstanceVariable

RSpec/ItBehavesLike:
  Description: Checks that only one `it_behaves_like` style is used.
  Enabled: true
  EnforcedStyle: it_behaves_like
  SupportedStyles:
    - it_behaves_like
    - it_should_behave_like
  VersionAdded: '1.13'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ItBehavesLike

RSpec/IteratedExpectation:
  Description: Check that `all` matcher is used instead of iterating over an array.
  Enabled: true
  VersionAdded: '1.14'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/IteratedExpectation

RSpec/LeadingSubject:
  Description: Enforce that subject is the first definition in the test.
  Enabled: true
  VersionAdded: '1.7'
  VersionChanged: '1.14'
  StyleGuide: https://rspec.rubystyle.guide/#leading-subject
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/LeadingSubject

RSpec/LeakyConstantDeclaration:
  Description: Checks that no class, module, or constant is declared.
  Enabled: true
  VersionAdded: '1.35'
  StyleGuide: https://rspec.rubystyle.guide/#declare-constants
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/LeakyConstantDeclaration

RSpec/LetBeforeExamples:
  Description: Checks for `let` definitions that come after an example.
  Enabled: true
  VersionAdded: '1.16'
  VersionChanged: '1.22'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/LetBeforeExamples

RSpec/LetSetup:
  Description: Checks unreferenced `let!` calls being used for test setup.
  Enabled: true
  VersionAdded: '1.7'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/LetSetup

RSpec/MessageChain:
  Description: Check that chains of messages are not being stubbed.
  Enabled: true
  VersionAdded: '1.7'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MessageChain

RSpec/MessageExpectation:
  Description: Checks for consistent message expectation style.
  Enabled: false
  EnforcedStyle: allow
  SupportedStyles:
    - allow
    - expect
  VersionAdded: '1.7'
  VersionChanged: '1.8'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MessageExpectation

RSpec/MessageSpies:
  Description: Checks that message expectations are set using spies.
  Enabled: true
  EnforcedStyle: have_received
  SupportedStyles:
    - have_received
    - receive
  VersionAdded: '1.9'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MessageSpies

RSpec/MissingExampleGroupArgument:
  Description: Checks that the first argument to an example group is not empty.
  Enabled: true
  VersionAdded: '1.28'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MissingExampleGroupArgument

RSpec/MultipleDescribes:
  Description: Checks for multiple top-level example groups.
  Enabled: true
  VersionAdded: '1.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MultipleDescribes

RSpec/MultipleExpectations:
  Description: Checks if examples contain too many `expect` calls.
  Enabled: true
  Max: 1
  VersionAdded: '1.7'
  VersionChanged: '1.21'
  StyleGuide: https://rspec.rubystyle.guide/#expectation-per-example
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MultipleExpectations

RSpec/MultipleMemoizedHelpers:
  Description: Checks if example groups contain too many `let` and `subject` calls.
  Enabled: true
  AllowSubject: true
  Max: 5
  VersionAdded: '1.43'
  StyleGuide: https://rspec.rubystyle.guide/#let-blocks
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MultipleMemoizedHelpers

RSpec/MultipleSubjects:
  Description: Checks if an example group defines `subject` multiple times.
  Enabled: true
  VersionAdded: '1.16'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MultipleSubjects

RSpec/NamedSubject:
  Description: Checks for explicitly referenced test subjects.
  Enabled: true
  IgnoreSharedExamples: true
  VersionAdded: 1.5.3
  StyleGuide: https://rspec.rubystyle.guide/#use-subject
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NamedSubject

RSpec/NestedGroups:
  Description: Checks for nested example groups.
  Enabled: true
  Max: 3
  VersionAdded: '1.7'
  VersionChanged: '1.10'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NestedGroups

RSpec/NotToNot:
  Description: Checks for consistent method usage for negating expectations.
  Enabled: true
  EnforcedStyle: not_to
  SupportedStyles:
    - not_to
    - to_not
  VersionAdded: '1.4'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NotToNot

RSpec/OverwritingSetup:
  Description: Checks if there is a let/subject that overwrites an existing one.
  Enabled: true
  VersionAdded: '1.14'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/OverwritingSetup

RSpec/Pending:
  Description: Checks for any pending or skipped examples.
  Enabled: false
  VersionAdded: '1.25'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Pending

RSpec/PredicateMatcher:
  Description: Prefer using predicate matcher over using predicate method directly.
  Enabled: true
  Strict: true
  EnforcedStyle: inflected
  AllowedExplicitMatchers: []
  SupportedStyles:
    - inflected
    - explicit
  SafeAutoCorrect: false
  VersionAdded: '1.16'
  StyleGuide: https://rspec.rubystyle.guide/#predicate-matchers
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/PredicateMatcher

RSpec/ReceiveCounts:
  Description: Check for `once` and `twice` receive counts matchers usage.
  Enabled: true
  VersionAdded: '1.26'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ReceiveCounts

RSpec/ReceiveNever:
  Description: Prefer `not_to receive(...)` over `receive(...).never`.
  Enabled: true
  VersionAdded: '1.28'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ReceiveNever

RSpec/RepeatedDescription:
  Description: Check for repeated description strings in example groups.
  Enabled: true
  VersionAdded: '1.9'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedDescription

RSpec/RepeatedExample:
  Description: Check for repeated examples within example groups.
  Enabled: true
  VersionAdded: '1.10'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExample

RSpec/RepeatedExampleGroupBody:
  Description: Check for repeated describe and context block body.
  Enabled: true
  VersionAdded: '1.38'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExampleGroupBody

RSpec/RepeatedExampleGroupDescription:
  Description: Check for repeated example group descriptions.
  Enabled: true
  VersionAdded: '1.38'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExampleGroupDescription

RSpec/RepeatedIncludeExample:
  Description: Check for repeated include of shared examples.
  Enabled: true
  VersionAdded: '1.44'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedIncludeExample

RSpec/ReturnFromStub:
  Description: Checks for consistent style of stub's return setting.
  Enabled: true
  EnforcedStyle: and_return
  SupportedStyles:
    - and_return
    - block
  VersionAdded: '1.16'
  VersionChanged: '1.22'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ReturnFromStub

RSpec/ScatteredLet:
  Description: Checks for let scattered across the example group.
  Enabled: true
  VersionAdded: '1.14'
  VersionChanged: '1.39'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ScatteredLet

RSpec/ScatteredSetup:
  Description: Checks for setup scattered across multiple hooks in an example group.
  Enabled: true
  VersionAdded: '1.10'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ScatteredSetup

RSpec/SharedContext:
  Description: Checks for proper shared_context and shared_examples usage.
  Enabled: true
  VersionAdded: '1.13'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SharedContext

RSpec/SharedExamples:
  Description: Enforces use of string to titleize shared examples.
  Enabled: true
  VersionAdded: '1.25'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SharedExamples

RSpec/SingleArgumentMessageChain:
  Description: Checks that chains of messages contain more than one element.
  Enabled: true
  VersionAdded: '1.9'
  VersionChanged: '1.10'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SingleArgumentMessageChain

RSpec/StubbedMock:
  Description: Checks that message expectations do not have a configured response.
  Enabled: true
  VersionAdded: '1.44'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/StubbedMock

RSpec/SubjectDeclaration:
  Description: Ensure that subject is defined using subject helper.
  Enabled: pending
  VersionAdded: '2.5'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SubjectDeclaration

RSpec/SubjectStub:
  Description: Checks for stubbed test subjects.
  Enabled: true
  VersionAdded: '1.7'
  VersionChanged: '2.8'
  StyleGuide: https://rspec.rubystyle.guide/#dont-stub-subject
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SubjectStub

RSpec/UnspecifiedException:
  Description: Checks for a specified error in checking raised errors.
  Enabled: true
  VersionAdded: '1.30'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/UnspecifiedException

RSpec/VariableDefinition:
  Description: Checks that memoized helpers names are symbols or strings.
  Enabled: true
  EnforcedStyle: symbols
  SupportedStyles:
    - symbols
    - strings
  VersionAdded: '1.40'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VariableDefinition

RSpec/VariableName:
  Description: Checks that memoized helper names use the configured style.
  Enabled: true
  EnforcedStyle: snake_case
  SupportedStyles:
    - snake_case
    - camelCase
  IgnoredPatterns: []
  VersionAdded: '1.40'
  VersionChanged: '1.43'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VariableName

RSpec/VerifiedDoubleReference:
  Description: Checks for consistent verified double reference style.
  Enabled: pending
  SafeAutoCorrect: false
  EnforcedStyle: constant
  SupportedStyles:
    - constant
    - string
  VersionAdded: 2.10.0
  VersionChanged: '2.12'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VerifiedDoubleReference

RSpec/VerifiedDoubles:
  Description: Prefer using verifying doubles over normal doubles.
  Enabled: true
  IgnoreNameless: true
  IgnoreSymbolicNames: false
  VersionAdded: 1.2.1
  VersionChanged: '1.5'
  StyleGuide: https://rspec.rubystyle.guide/#doubles
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VerifiedDoubles

RSpec/VoidExpect:
  Description: Checks void `expect()`.
  Enabled: true
  VersionAdded: '1.16'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VoidExpect

RSpec/Yield:
  Description: Checks for calling a block within a stub.
  Enabled: true
  VersionAdded: '1.32'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Yield

RSpec/Capybara:
  Enabled: true
  Include: *1
  Language: *2

RSpec/Capybara/CurrentPathExpectation:
  Description: Checks that no expectations are set on Capybara's `current_path`.
  Enabled: true
  VersionAdded: '1.18'
  VersionChanged: '2.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/CurrentPathExpectation

RSpec/Capybara/FeatureMethods:
  Description: Checks for consistent method usage in feature specs.
  Enabled: true
  EnabledMethods: []
  VersionAdded: '1.17'
  VersionChanged: '2.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/FeatureMethods

RSpec/Capybara/SpecificMatcher:
  Description: Checks for there is a more specific matcher offered by Capybara.
  Enabled: pending
  VersionAdded: '2.12'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/SpecificMatcher

RSpec/Capybara/VisibilityMatcher:
  Description: Checks for boolean visibility in Capybara finders.
  Enabled: true
  VersionAdded: '1.39'
  VersionChanged: '2.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/VisibilityMatcher

RSpec/FactoryBot:
  Enabled: true
  Include: *1
  Language: *2

RSpec/FactoryBot/AttributeDefinedStatically:
  Description: Always declare attribute values as blocks.
  Enabled: true
  Include:
    - spec/factories.rb
    - spec/factories/**/*.rb
    - features/support/factories/**/*.rb
  VersionAdded: '1.28'
  VersionChanged: '2.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/AttributeDefinedStatically

RSpec/FactoryBot/CreateList:
  Description: Checks for create_list usage.
  Enabled: true
  Include:
    - "**/*_spec.rb"
    - "**/spec/**/*"
    - spec/factories.rb
    - spec/factories/**/*.rb
    - features/support/factories/**/*.rb
  EnforcedStyle: create_list
  SupportedStyles:
    - create_list
    - n_times
  VersionAdded: '1.25'
  VersionChanged: '2.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/CreateList

RSpec/FactoryBot/FactoryClassName:
  Description: Use string value when setting the class attribute explicitly.
  Enabled: true
  Include:
    - spec/factories.rb
    - spec/factories/**/*.rb
    - features/support/factories/**/*.rb
  VersionAdded: '1.37'
  VersionChanged: '2.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/FactoryClassName

RSpec/FactoryBot/SyntaxMethods:
  Description: Use shorthands from `FactoryBot::Syntax::Methods` in your specs.
  Enabled: pending
  SafeAutoCorrect: false
  VersionAdded: '2.7'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/SyntaxMethods

RSpec/Rails:
  Enabled: true
  Include: *1
  Language: *2

RSpec/Rails/AvoidSetupHook:
  Description: Checks that tests use RSpec `before` hook over Rails `setup` method.
  Enabled: pending
  VersionAdded: '2.4'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/AvoidSetupHook

RSpec/Rails/HaveHttpStatus:
  Description: Checks that tests use `have_http_status` instead of equality matchers.
  Enabled: pending
  SafeAutoCorrect: false
  VersionAdded: '2.12'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/HaveHttpStatus

RSpec/Rails/HttpStatus:
  Description: Enforces use of symbolic or numeric value to describe HTTP status.
  Enabled: true
  EnforcedStyle: symbolic
  SupportedStyles:
    - numeric
    - symbolic
  VersionAdded: '1.23'
  VersionChanged: '2.0'
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/HttpStatus
