rubocop-rspec
rubocop-rspec copied to clipboard
Cop idea: Move nested modules to separate specs
Actual behavior
I have the following spec with a main class and nested class(-es).
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe RewardReferrerJob do
pending 'some tests'
describe RewardReferrerJob::Request do
pending 'some tests'
end
describe RewardReferrerJob::Config do
pending 'some tests'
end
end
Expected behavior
I would like to have several separate specs.
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe RewardReferrerJob do
pending 'some tests'
end
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe RewardReferrerJob::Request do
pending 'some tests'
end
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe RewardReferrerJob::Config do
pending 'some tests'
end
Rubocop
ydakuka@yauhenid:~/Work/project$ bin/rails_docker rubocop -V
1.55.1 (using Parser 3.2.2.3, rubocop-ast 1.29.0, running on ruby 2.7.8) [x86_64-linux]
- rubocop-capybara 2.18.0
- rubocop-factory_bot 2.23.1
- rubocop-performance 1.18.0
- rubocop-rails 2.20.2
- rubocop-rake 0.6.0
- rubocop-rspec 2.23.0
- rubocop-thread_safety 0.5.1
What if there’s just one? Should be some threshold for the suggestion to extract?
There is the RSpec/FilePath cop.
According to this cop, if I have the spec that describes the RewardReferrerJob class (and spec file path is consistent and well-formed), it's ok.
RSpec.describe RewardReferrerJob do
pending 'some tests'
end
However, the first code snippet contains several classes. So the job-related files should be separate files with their specs. But I don't know if there is a way to detect the job-related files in the directories.