Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cop idea: Move nested modules to separate specs #1691

Open
ydakuka opened this issue Aug 9, 2023 · 2 comments
Open

Cop idea: Move nested modules to separate specs #1691

ydakuka opened this issue Aug 9, 2023 · 2 comments
Labels

Comments

@ydakuka
Copy link

ydakuka commented Aug 9, 2023

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
@ydah ydah added the cop label Aug 9, 2023
@pirj
Copy link
Member

pirj commented Aug 9, 2023

What if there’s just one? Should be some threshold for the suggestion to extract?

@ydakuka
Copy link
Author

ydakuka commented Aug 9, 2023

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants