spec/rubocop/cops/align_parameters_spec.rb in rubocop-0.7.2 vs spec/rubocop/cops/align_parameters_spec.rb in rubocop-0.8.0
- old
+ new
@@ -6,47 +6,49 @@
module Cop
describe AlignParameters do
let(:align) { AlignParameters.new }
it 'registers an offence for parameters with single indent' do
- inspect_source(align, 'file.rb', ['function(a,',
- ' if b then c else d end)'])
- expect(align.offences.map(&:message)).to eq(
- ['Align the parameters of a method call if they span more than ' +
- 'one line.'])
+ inspect_source(align, ['function(a,',
+ ' if b then c else d end)'])
+ expect(align.offences.size).to eq(1)
end
it 'registers an offence for parameters with double indent' do
- inspect_source(align, 'file.rb', ['function(a,',
- ' if b then c else d end)'])
- expect(align.offences.map(&:message)).to eq(
- ['Align the parameters of a method call if they span more than ' +
- 'one line.'])
+ inspect_source(align, ['function(a,',
+ ' if b then c else d end)'])
+ expect(align.offences.size).to eq(1)
end
+ it 'accepts multiline []= method call' do
+ inspect_source(align, ['Test.config["something"] =',
+ ' true'])
+ expect(align.offences).to be_empty
+ end
+
it 'accepts correctly aligned parameters' do
- inspect_source(align, 'file.rb', ['function(a,',
- ' 0, 1,',
- ' (x + y),',
- ' if b then c else d end)'])
- expect(align.offences.map(&:message)).to be_empty
+ inspect_source(align, ['function(a,',
+ ' 0, 1,',
+ ' (x + y),',
+ ' if b then c else d end)'])
+ expect(align.offences).to be_empty
end
it 'accepts calls that only span one line' do
- inspect_source(align, 'file.rb', ['find(path, s, @special[sexp[0]])'])
- expect(align.offences.map(&:message)).to be_empty
+ inspect_source(align, ['find(path, s, @special[sexp[0]])'])
+ expect(align.offences).to be_empty
end
it "doesn't get confused by a symbol argument" do
- inspect_source(align, '',
+ inspect_source(align,
['add_offence(:convention, index,',
- ' ERROR_MESSAGE % kind)'])
- expect(align.offences.map(&:message)).to be_empty
+ ' MSG % kind)'])
+ expect(align.offences).to be_empty
end
it "doesn't get confused by splat operator" do
- inspect_source(align, '',
+ inspect_source(align,
['func1(*a,',
' *b,',
' c)',
'func2(a,',
' *b,',
@@ -57,154 +59,139 @@
['C: 5: Align the parameters of a method call if they span ' +
'more than one line.'])
end
it "doesn't get confused by extra comma at the end" do
- inspect_source(align, '',
+ inspect_source(align,
['func1(a,',
' b,)'])
expect(align.offences.map(&:to_s)).to eq(
['C: 2: Align the parameters of a method call if they span ' +
'more than one line.'])
end
it 'can handle a correctly aligned string literal as first argument' do
- inspect_source(align, '',
+ inspect_source(align,
['add_offence(:convention, x,',
' a)'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it 'can handle a string literal as other argument' do
- inspect_source(align, '',
+ inspect_source(align,
['add_offence(:convention,',
' "", a)'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it "doesn't get confused by a line break inside a parameter" do
- inspect_source(align, '',
+ inspect_source(align,
['read(path, { headers: true,',
' converters: :numeric })'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it "doesn't get confused by symbols with embedded expressions" do
- inspect_source(align, '',
+ inspect_source(align,
['send(:"#{name}_comments_path")'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it "doesn't get confused by regexen with embedded expressions" do
- inspect_source(align, '',
+ inspect_source(align,
['a(/#{name}/)'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it 'accepts braceless hashes' do
- inspect_source(align, '',
+ inspect_source(align,
['run(collection, :entry_name => label,',
' :paginator => paginator)'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it 'accepts the first parameter being on a new row' do
- inspect_source(align, '',
+ inspect_source(align,
[' match(',
' a,',
' b',
' )'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it 'can handle heredoc strings' do
src = ['class_eval(<<-EOS, __FILE__, __LINE__ + 1)',
' def run_#{name}_callbacks(*args)',
' a = 1',
' return value',
' end',
' EOS']
- inspect_source(align, '', src)
- expect(align.offences.map(&:message)).to be_empty
+ inspect_source(align, src)
+ expect(align.offences).to be_empty
end
it 'can handle a method call within a method call' do
- inspect_source(align, '',
+ inspect_source(align,
['a(a1,',
' b(b1,',
' b2),',
' a2)'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it 'can handle a call embedded in a string' do
- inspect_source(align, '',
+ inspect_source(align,
['model("#{index(name)}", child)'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it 'can handle do-end' do
- inspect_source(align, '',
+ inspect_source(align,
[' run(lambda do |e|',
" w = e['warden']",
' end)'])
- expect(align.offences.map(&:message)).to be_empty
+ expect(align.offences).to be_empty
end
it 'can handle a call with a block inside another call' do
src = ['new(table_name,',
' exec_query("info(\'#{row[\'name\']}\')").map { |col|',
" col['name']",
' })']
- inspect_source(align, '', src)
- expect(align.offences.map(&:message)).to be_empty
+ inspect_source(align, src)
+ expect(align.offences).to be_empty
end
it 'can handle a ternary condition with a block reference' do
src = ['cond ? a : func(&b)']
- inspect_source(align, '', src)
- expect(align.offences.map(&:message)).to be_empty
+ inspect_source(align, src)
+ expect(align.offences).to be_empty
end
it 'can handle parentheses used with no parameters' do
src = ['func()']
- inspect_source(align, '', src)
- expect(align.offences.map(&:message)).to be_empty
+ inspect_source(align, src)
+ expect(align.offences).to be_empty
end
- it 'can handle a multiline hash as first parameter' do
- src = ['assert_equal({',
- ' :space_before => "",',
- '}, state)']
- inspect_source(align, '', src)
- expect(align.offences.map(&:message)).to be_empty
- end
-
it 'can handle a multiline hash as second parameter' do
src = ['tag(:input, {',
' :value => value',
'})']
- inspect_source(align, '', src)
- expect(align.offences.map(&:message)).to be_empty
+ inspect_source(align, src)
+ expect(align.offences).to be_empty
end
it 'can handle method calls without parentheses' do
src = ['a(b c, d)']
- inspect_source(align, '', src)
- expect(align.offences.map(&:message)).to be_empty
+ inspect_source(align, src)
+ expect(align.offences).to be_empty
end
it 'can handle other method calls without parentheses' do
src = ['chars(Unicode.apply_mapping @wrapped_string, :uppercase)']
- inspect_source(align, '', src)
- expect(align.offences.map(&:message)).to be_empty
- end
-
- it "doesn't check alignment if tabs are used to indent" do
- src = ['a(b,',
- "\tc)"]
- inspect_source(align, '', src)
- expect(align.offences.map(&:message)).to be_empty
+ inspect_source(align, src)
+ expect(align.offences).to be_empty
end
end
end
end