-
-
Notifications
You must be signed in to change notification settings - Fork 3k
/
trailing_method_end_statement_spec.rb
144 lines (130 loc) · 3.16 KB
/
trailing_method_end_statement_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
# frozen_string_literal: true
RSpec.describe RuboCop::Cop::Style::TrailingMethodEndStatement do
subject(:cop) { described_class.new(config) }
let(:config) do
RuboCop::Config.new('Layout/IndentationWidth' => { 'Width' => 2 })
end
it 'register offense with trailing end on 2 line method' do
expect_offense(<<~RUBY)
def some_method
foo; end
^^^ Place the end statement of a multi-line method on its own line.
RUBY
end
it 'register offense with trailing end on 3 line method' do
expect_offense(<<~RUBY)
def a
b
{ foo: bar }; end
^^^ Place the end statement of a multi-line method on its own line.
RUBY
end
it 'register offense with trailing end on method with comment' do
expect_offense(<<~RUBY)
def c
b = calculation
[b] end # because b
^^^ Place the end statement of a multi-line method on its own line.
RUBY
end
it 'register offense with trailing end on method with block' do
expect_offense(<<~RUBY)
def d
block do
foo
end end
^^^ Place the end statement of a multi-line method on its own line.
RUBY
end
it 'register offense with trailing end inside class' do
expect_offense(<<~RUBY)
class Foo
def some_method
foo; end
^^^ Place the end statement of a multi-line method on its own line.
end
RUBY
end
it 'does not register on single line no op' do
expect_no_offenses(<<~RUBY)
def no_op; end
RUBY
end
it 'does not register on single line method' do
expect_no_offenses(<<~RUBY)
def something; do_stuff; end
RUBY
end
it 'auto-corrects trailing end in 2 line method' do
corrected = autocorrect_source(<<~RUBY)
def some_method
[]; end
RUBY
expect(corrected).to eq(<<~RUBY)
def some_method
[];
end
RUBY
end
it 'auto-corrects trailing end in 3 line method' do
corrected = autocorrect_source(<<~RUBY)
def do_this(x)
y = x + 5
y / 2; end
RUBY
expect(corrected).to eq(<<~RUBY)
def do_this(x)
y = x + 5
y / 2;
end
RUBY
end
it 'auto-corrects trailing end with comment' do
corrected = autocorrect_source(<<~RUBY)
def f(x, y)
process(x)
process(y) end # comment
RUBY
expect(corrected).to eq(<<~RUBY)
def f(x, y)
process(x)
process(y)
end # comment
RUBY
end
it 'auto-corrects trailing end on method with block' do
corrected = autocorrect_source(<<~RUBY)
def d
block do
foo
end end
RUBY
expect(corrected).to eq(<<~RUBY)
def d
block do
foo
end
end
RUBY
end
it 'auto-corrects all trailing ends for larger example' do
corrected = autocorrect_source(<<~RUBY)
class Foo
def some_method
[] end
def another_method
{} end
end
RUBY
expect(corrected).to eq(<<~RUBY)
class Foo
def some_method
[]
end
def another_method
{}
end
end
RUBY
end
end