require "../../spec_helper" module Ameba subject = Rule::VariableNames.new private def it_reports_var_name(code, expected) it "reports method name #{expected}" do s = Source.new code Rule::VariableNames.new.catch(s).should_not be_valid s.errors.first.message.should contain expected end end describe Rule::VariableNames do it "passes if var names are underscore-cased" do s = Source.new %( class Greeting @@default_greeting = "Hello world" def initialize(@custom_greeting = nil) end def print_greeting greeting = @custom_greeting || @@default_greeting puts greeting end end ) subject.catch(s).should be_valid end it_reports_var_name %(myBadNamedVar = 1), "my_bad_named_var" it_reports_var_name %(wrong_Name = 'y'), "wrong_name" it_reports_var_name %( class Greeting def initialize(@badNamed = nil) end end ), "bad_named" it_reports_var_name %( class Greeting @@defaultGreeting = "Hello world" end ), "default_greeting" it "reports rule, pos and message" do s = Source.new %( badName = "Yeah" ), "source.cr" subject.catch(s).should_not be_valid error = s.errors.first error.rule.should_not be_nil error.location.to_s.should eq "source.cr:2:9" error.message.should eq( "Var name should be underscore-cased: bad_name, not badName" ) end end end