Examples:
ERROR - duplicate in ALL contexts
describe 'Controller' do
context 'as admin' do
before { sign_in(user) }
it { expect(response).to be_successful }
end
context 'as guest' do
before { sign_in(user) } it { expect(response).to be_forbidden }
end
end
describe 'Controller' do
before { sign_in(user) }
context 'as admin' do
it { expect(response).to be_successful }
end
context 'as guest' do
it { expect(response).to be_forbidden }
end
end
WARNING - duplicate in SOME contexts
describe 'API' do
context 'scenario A' do
before { setup_api }
it { expect(response).to be_ok }
end
context 'scenario B' do
before { setup_api } it { expect(response).to be_ok }
end
context 'scenario C' do
before { setup_different_api } it { expect(response).to be_ok }
end
end
describe 'API' do
context 'with standard setup' do
before { setup_api }
context 'scenario A' do
it { expect(response).to be_ok }
end
context 'scenario B' do
it { expect(response).to be_ok }
end
end
context 'with different setup' do
before { setup_different_api }
context 'scenario C' do
it { expect(response).to be_ok }
end
end
end
# To disable warnings for partial duplicates:
RSpecGuide/DuplicateBeforeHooks:
WarnOnPartialDuplicates: false # Only report full duplicates
Edge case - different hooks
describe 'Service' do
context 'with user A' do
before { sign_in(user_a) }
it { expect(service.call).to be_success }
end
context 'with user B' do
before { sign_in(user_b) } it { expect(service.call).to be_success }
end
end