forked from rubocop/rubocop
/
empty_when_spec.rb
156 lines (136 loc) · 4.42 KB
/
empty_when_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# frozen_string_literal: true
require 'spec_helper'
describe RuboCop::Cop::Lint::EmptyWhen, :config do
subject(:cop) { described_class.new(config) }
before do
inspect_source(cop, source)
end
shared_examples 'code with offense' do |code, expected = nil|
context "when checking #{code}" do
let(:source) { code }
it 'registers an offense' do
expect(cop.offenses.size).to eq(1)
expect(cop.messages).to eq([message])
end
if expected
it 'auto-corrects' do
expect(autocorrect_source(cop, code)).to eq(expected)
end
else
it 'does not auto-correct' do
expect(autocorrect_source(cop, code)).to eq(code)
end
end
end
end
shared_examples 'code without offense' do |code|
let(:source) { code }
it 'does not register an offense' do
expect(cop.offenses).to be_empty
end
end
let(:message) { described_class::MSG }
context 'when a `when` body is missing' do
it_behaves_like 'code with offense',
['case foo',
'when :bar then 1',
'when :baz',
'end'].join("\n")
it_behaves_like 'code with offense',
['case foo',
'when :bar then 1',
'when :baz # nothing',
'else',
'end'].join("\n")
it_behaves_like 'code with offense',
['case foo',
'when :bar then 1',
'when :baz then',
'end'].join("\n")
it_behaves_like 'code with offense',
['case foo',
'when :bar then 1',
'when :baz then',
'else 3',
'end'].join("\n")
it_behaves_like 'code with offense',
['case foo',
'when :bar',
' 1',
'when :baz',
'end'].join("\n")
it_behaves_like 'code with offense',
['case foo',
'when :bar',
' 1',
'when :baz',
' ',
'else',
'end'].join("\n")
it_behaves_like 'code with offense',
['case',
'when :bar',
' 1',
'when :baz',
'else',
' 3',
'end'].join("\n")
end
context 'when a `when` body is present' do
it_behaves_like 'code without offense',
['case foo',
'when :bar then 1',
'when :baz then 2',
'end'].join("\n")
it_behaves_like 'code without offense',
['case foo',
'when :bar then 1',
'when :baz then 2',
'else 3',
'end'].join("\n")
it_behaves_like 'code without offense',
['case foo',
'when :bar',
' 1',
'when :baz',
' 2',
'end'].join("\n")
it_behaves_like 'code without offense',
['case foo',
'when :bar',
' 1',
'when :baz',
' 2',
'else',
' 3',
'end'].join("\n")
it_behaves_like 'code without offense',
['case',
'when :bar',
' 1',
'when :baz',
' 2',
'else',
' 3',
'end'].join("\n")
it_behaves_like 'code without offense',
['case',
'when :bar',
' 1',
'when :baz',
' # nothing',
'else',
' 3',
'end'].join("\n")
it_behaves_like 'code without offense',
['case',
'when :bar',
' 1',
'when :baz',
'',
' # nothing',
'else',
' 3',
'end'].join("\n")
end
end