class RuboCop::Cop::RSpec::ExampleWithoutDescription
Checks for examples without a description.
RSpec
allows for auto-generated example descriptions when there is no description provided or the description is an empty one. It is acceptable to use ‘specify` without a description
This cop removes empty descriptions. It also defines whether auto-generated description is allowed, based on the configured style.
This cop can be configured using the ‘EnforcedStyle` option
@example
# always good specify do result = service.call expect(result).to be(true) end
@example ‘EnforcedStyle: always_allow` (default)
# bad it('') { is_expected.to be_good } specify '' do result = service.call expect(result).to be(true) end # good it { is_expected.to be_good } specify do result = service.call expect(result).to be(true) end
@example ‘EnforcedStyle: single_line_only`
# bad it('') { is_expected.to be_good } it do result = service.call expect(result).to be(true) end # good it { is_expected.to be_good }
@example ‘EnforcedStyle: disallow`
# bad it { is_expected.to be_good } it do result = service.call expect(result).to be(true) end
Constants
- MSG_ADD_DESCRIPTION
- MSG_DEFAULT_ARGUMENT
Public Instance Methods
Source
# File lib/rubocop/cop/rspec/example_without_description.rb, line 69 def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler return unless example?(node) check_example_without_description(node.send_node) example_description(node.send_node) do |message_node, message| return unless message.to_s.empty? add_offense(message_node, message: MSG_DEFAULT_ARGUMENT) end end
Private Instance Methods
Source
# File lib/rubocop/cop/rspec/example_without_description.rb, line 83 def check_example_without_description(node) return if node.arguments? return unless disallow_empty_description?(node) return if node.method?(:specify) && node.parent.multiline? add_offense(node, message: MSG_ADD_DESCRIPTION) end
Source
# File lib/rubocop/cop/rspec/example_without_description.rb, line 91 def disallow_empty_description?(node) style == :disallow || (style == :single_line_only && node.parent.multiline?) end