excellent 1.5.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +69 -0
- data/README.rdoc +72 -0
- data/VERSION.yml +4 -0
- data/bin/excellent +34 -0
- data/lib/simplabs/excellent.rb +16 -0
- data/lib/simplabs/excellent/checks.rb +33 -0
- data/lib/simplabs/excellent/checks/abc_metric_method_check.rb +43 -0
- data/lib/simplabs/excellent/checks/assignment_in_conditional_check.rb +39 -0
- data/lib/simplabs/excellent/checks/base.rb +62 -0
- data/lib/simplabs/excellent/checks/case_missing_else_check.rb +34 -0
- data/lib/simplabs/excellent/checks/class_line_count_check.rb +36 -0
- data/lib/simplabs/excellent/checks/class_name_check.rb +38 -0
- data/lib/simplabs/excellent/checks/control_coupling_check.rb +35 -0
- data/lib/simplabs/excellent/checks/cyclomatic_complexity_block_check.rb +48 -0
- data/lib/simplabs/excellent/checks/cyclomatic_complexity_check.rb +23 -0
- data/lib/simplabs/excellent/checks/cyclomatic_complexity_method_check.rb +48 -0
- data/lib/simplabs/excellent/checks/empty_rescue_body_check.rb +31 -0
- data/lib/simplabs/excellent/checks/flog_block_check.rb +40 -0
- data/lib/simplabs/excellent/checks/flog_check.rb +27 -0
- data/lib/simplabs/excellent/checks/flog_class_check.rb +40 -0
- data/lib/simplabs/excellent/checks/flog_method_check.rb +40 -0
- data/lib/simplabs/excellent/checks/for_loop_check.rb +42 -0
- data/lib/simplabs/excellent/checks/global_variable_check.rb +33 -0
- data/lib/simplabs/excellent/checks/line_count_check.rb +27 -0
- data/lib/simplabs/excellent/checks/method_line_count_check.rb +36 -0
- data/lib/simplabs/excellent/checks/method_name_check.rb +38 -0
- data/lib/simplabs/excellent/checks/module_line_count_check.rb +36 -0
- data/lib/simplabs/excellent/checks/module_name_check.rb +38 -0
- data/lib/simplabs/excellent/checks/name_check.rb +27 -0
- data/lib/simplabs/excellent/checks/nested_iterators_check.rb +34 -0
- data/lib/simplabs/excellent/checks/parameter_number_check.rb +38 -0
- data/lib/simplabs/excellent/checks/rails.rb +22 -0
- data/lib/simplabs/excellent/checks/rails/attr_accessible_check.rb +38 -0
- data/lib/simplabs/excellent/checks/rails/attr_protected_check.rb +39 -0
- data/lib/simplabs/excellent/checks/rails/custom_initialize_method_check.rb +37 -0
- data/lib/simplabs/excellent/checks/rails/instance_var_in_partial_check.rb +37 -0
- data/lib/simplabs/excellent/checks/rails/params_hash_in_view_check.rb +38 -0
- data/lib/simplabs/excellent/checks/rails/session_hash_in_view_check.rb +38 -0
- data/lib/simplabs/excellent/checks/rails/validations_check.rb +36 -0
- data/lib/simplabs/excellent/checks/singleton_variable_check.rb +33 -0
- data/lib/simplabs/excellent/command_line_runner.rb +37 -0
- data/lib/simplabs/excellent/extensions/sexp.rb +21 -0
- data/lib/simplabs/excellent/extensions/string.rb +28 -0
- data/lib/simplabs/excellent/formatters.rb +13 -0
- data/lib/simplabs/excellent/formatters/base.rb +49 -0
- data/lib/simplabs/excellent/formatters/html.rb +153 -0
- data/lib/simplabs/excellent/formatters/text.rb +40 -0
- data/lib/simplabs/excellent/parsing.rb +10 -0
- data/lib/simplabs/excellent/parsing/abc_measure.rb +52 -0
- data/lib/simplabs/excellent/parsing/block_context.rb +43 -0
- data/lib/simplabs/excellent/parsing/call_context.rb +52 -0
- data/lib/simplabs/excellent/parsing/case_context.rb +31 -0
- data/lib/simplabs/excellent/parsing/class_context.rb +99 -0
- data/lib/simplabs/excellent/parsing/code_processor.rb +165 -0
- data/lib/simplabs/excellent/parsing/conditional_context.rb +25 -0
- data/lib/simplabs/excellent/parsing/cvar_context.rb +28 -0
- data/lib/simplabs/excellent/parsing/cyclomatic_complexity_measure.rb +73 -0
- data/lib/simplabs/excellent/parsing/flog_measure.rb +192 -0
- data/lib/simplabs/excellent/parsing/for_loop_context.rb +15 -0
- data/lib/simplabs/excellent/parsing/gvar_context.rb +21 -0
- data/lib/simplabs/excellent/parsing/if_context.rb +38 -0
- data/lib/simplabs/excellent/parsing/ivar_context.rb +32 -0
- data/lib/simplabs/excellent/parsing/method_context.rb +50 -0
- data/lib/simplabs/excellent/parsing/module_context.rb +29 -0
- data/lib/simplabs/excellent/parsing/parser.rb +35 -0
- data/lib/simplabs/excellent/parsing/resbody_context.rb +39 -0
- data/lib/simplabs/excellent/parsing/scopeable.rb +34 -0
- data/lib/simplabs/excellent/parsing/sexp_context.rb +125 -0
- data/lib/simplabs/excellent/parsing/singleton_method_context.rb +55 -0
- data/lib/simplabs/excellent/parsing/until_context.rb +24 -0
- data/lib/simplabs/excellent/parsing/while_context.rb +24 -0
- data/lib/simplabs/excellent/rake.rb +1 -0
- data/lib/simplabs/excellent/rake/excellent_task.rb +61 -0
- data/lib/simplabs/excellent/runner.rb +143 -0
- data/lib/simplabs/excellent/warning.rb +53 -0
- data/spec/checks/abc_metric_method_check_spec.rb +122 -0
- data/spec/checks/assignment_in_conditional_check_spec.rb +90 -0
- data/spec/checks/case_missing_else_check_spec.rb +42 -0
- data/spec/checks/class_line_count_check_spec.rb +62 -0
- data/spec/checks/class_name_check_spec.rb +48 -0
- data/spec/checks/control_coupling_check_spec.rb +103 -0
- data/spec/checks/cyclomatic_complexity_block_check_spec.rb +47 -0
- data/spec/checks/cyclomatic_complexity_method_check_spec.rb +210 -0
- data/spec/checks/empty_rescue_body_check_spec.rb +170 -0
- data/spec/checks/flog_block_check_spec.rb +28 -0
- data/spec/checks/flog_class_check_spec.rb +28 -0
- data/spec/checks/flog_method_check_spec.rb +46 -0
- data/spec/checks/for_loop_check_spec.rb +52 -0
- data/spec/checks/global_variable_check_spec.rb +66 -0
- data/spec/checks/method_line_count_check_spec.rb +49 -0
- data/spec/checks/method_name_check_spec.rb +112 -0
- data/spec/checks/module_line_count_check_spec.rb +48 -0
- data/spec/checks/module_name_check_spec.rb +61 -0
- data/spec/checks/nested_iterators_check_spec.rb +44 -0
- data/spec/checks/parameter_number_check_spec.rb +97 -0
- data/spec/checks/rails/attr_accessible_check_spec.rb +79 -0
- data/spec/checks/rails/attr_protected_check_spec.rb +77 -0
- data/spec/checks/rails/custom_initialize_method_check_spec.rb +58 -0
- data/spec/checks/rails/instance_var_in_partial_check_spec.rb +40 -0
- data/spec/checks/rails/params_hash_in_view_check_spec.rb +40 -0
- data/spec/checks/rails/session_hash_in_view_check_spec.rb +40 -0
- data/spec/checks/rails/validations_check_spec.rb +81 -0
- data/spec/checks/singleton_variable_check_spec.rb +66 -0
- data/spec/extensions/string_spec.rb +13 -0
- data/spec/spec_helper.rb +13 -0
- metadata +189 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Simplabs::Excellent::Checks::NestedIteratorsCheck do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@excellent = Simplabs::Excellent::Runner.new(Simplabs::Excellent::Checks::NestedIteratorsCheck.new)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#evaluate' do
|
10
|
+
|
11
|
+
it 'should reject a block inside a block' do
|
12
|
+
code = <<-END
|
13
|
+
method1 do
|
14
|
+
method2 do
|
15
|
+
end
|
16
|
+
end
|
17
|
+
END
|
18
|
+
@excellent.check_code(code)
|
19
|
+
warnings = @excellent.warnings
|
20
|
+
|
21
|
+
warnings.should_not be_empty
|
22
|
+
warnings[0].info.should == { :block => 'block', :parent => 'block' }
|
23
|
+
warnings[0].line_number.should == 2
|
24
|
+
warnings[0].message.should == 'block inside of block.'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should accept 2 blocks inside a method that are not nested' do
|
28
|
+
code = <<-END
|
29
|
+
def method
|
30
|
+
method1 do
|
31
|
+
end
|
32
|
+
method2 do
|
33
|
+
end
|
34
|
+
end
|
35
|
+
END
|
36
|
+
@excellent.check_code(code)
|
37
|
+
warnings = @excellent.warnings
|
38
|
+
|
39
|
+
warnings.should be_empty
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Simplabs::Excellent::Checks::ParameterNumberCheck do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@excellent = Simplabs::Excellent::Runner.new(Simplabs::Excellent::Checks::ParameterNumberCheck.new({ :threshold => 1 }))
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#evaluate' do
|
10
|
+
|
11
|
+
it 'should accept methods with less parameters than the threshold' do
|
12
|
+
code = <<-END
|
13
|
+
def zero_parameter_method
|
14
|
+
end
|
15
|
+
END
|
16
|
+
@excellent.check_code(code)
|
17
|
+
|
18
|
+
@excellent.warnings.should be_empty
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should accept methods with the same number of parameters as the threshold' do
|
22
|
+
code = <<-END
|
23
|
+
def one_parameter_method(first_parameter)
|
24
|
+
end
|
25
|
+
END
|
26
|
+
@excellent.check_code(code)
|
27
|
+
|
28
|
+
@excellent.warnings.should be_empty
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should reject methods with more parameters than the threshold' do
|
32
|
+
code = <<-END
|
33
|
+
def two_parameter_method(first_parameter, second_parameter)
|
34
|
+
end
|
35
|
+
END
|
36
|
+
|
37
|
+
verify_warning_found(code, 'two_parameter_method')
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should work with default values on parameters' do
|
41
|
+
code = <<-END
|
42
|
+
def two_parameter_method(first_parameter = 1, second_parameter = 2)
|
43
|
+
end
|
44
|
+
END
|
45
|
+
|
46
|
+
verify_warning_found(code, 'two_parameter_method')
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should work with methods defined on objects' do
|
50
|
+
code = <<-END
|
51
|
+
def object.two_parameter_method(first_parameter = 1, second_parameter = 2)
|
52
|
+
end
|
53
|
+
END
|
54
|
+
|
55
|
+
verify_warning_found(code, 'object.two_parameter_method')
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should work with methods defined directly on classes' do
|
59
|
+
code = <<-END
|
60
|
+
def Class.two_parameter_method(first_parameter = 1, second_parameter = 2)
|
61
|
+
end
|
62
|
+
END
|
63
|
+
|
64
|
+
verify_warning_found(code, 'Class.two_parameter_method')
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should reject yield calls with more parameters than the threshold' do
|
68
|
+
code = <<-END
|
69
|
+
two_parameter_method do |first_parameter, second_parameter|
|
70
|
+
end
|
71
|
+
END
|
72
|
+
|
73
|
+
verify_warning_found(code, 'block')
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should reject yield calls on a receiver with more parameters than the threshold' do
|
77
|
+
code = <<-END
|
78
|
+
receiver.two_parameter_method do |first_parameter, second_parameter|
|
79
|
+
end
|
80
|
+
END
|
81
|
+
|
82
|
+
verify_warning_found(code, 'block')
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
def verify_warning_found(code, name)
|
88
|
+
@excellent.check_code(code)
|
89
|
+
warnings = @excellent.warnings
|
90
|
+
|
91
|
+
warnings.should_not be_empty
|
92
|
+
warnings[0].info.should == { :method => name, :parameters => 2 }
|
93
|
+
warnings[0].line_number.should == 1
|
94
|
+
warnings[0].message.should == "#{name} has 2 parameters."
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Simplabs::Excellent::Checks::Rails::AttrAccessibleCheck do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@excellent = Simplabs::Excellent::Runner.new(Simplabs::Excellent::Checks::Rails::AttrAccessibleCheck.new)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#evaluate' do
|
10
|
+
|
11
|
+
it 'should ignore classes that are not active record models' do
|
12
|
+
code = <<-END
|
13
|
+
class Test
|
14
|
+
end
|
15
|
+
END
|
16
|
+
@excellent.check_code(code)
|
17
|
+
warnings = @excellent.warnings
|
18
|
+
|
19
|
+
warnings.should be_empty
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should reject an active record model that does not specify attr_accessible' do
|
23
|
+
code = <<-END
|
24
|
+
class User < ActiveRecord::Base
|
25
|
+
end
|
26
|
+
END
|
27
|
+
@excellent.check_code(code)
|
28
|
+
warnings = @excellent.warnings
|
29
|
+
|
30
|
+
warnings.should_not be_empty
|
31
|
+
warnings[0].info.should == { :class => 'User' }
|
32
|
+
warnings[0].line_number.should == 1
|
33
|
+
warnings[0].message.should == 'User does not specify attr_accessible.'
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should reject an active record model that does specify attr_protected' do
|
37
|
+
code = <<-END
|
38
|
+
class User < ActiveRecord::Base
|
39
|
+
attr_protected :first_name
|
40
|
+
end
|
41
|
+
END
|
42
|
+
@excellent.check_code(code)
|
43
|
+
warnings = @excellent.warnings
|
44
|
+
|
45
|
+
warnings.should_not be_empty
|
46
|
+
warnings[0].info.should == { :class => 'User' }
|
47
|
+
warnings[0].line_number.should == 1
|
48
|
+
warnings[0].message.should == 'User does not specify attr_accessible.'
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should accept an active record model that does specify attr_accessible' do
|
52
|
+
code = <<-END
|
53
|
+
class User < ActiveRecord::Base
|
54
|
+
attr_accessible :first_name
|
55
|
+
end
|
56
|
+
END
|
57
|
+
@excellent.check_code(code)
|
58
|
+
warnings = @excellent.warnings
|
59
|
+
|
60
|
+
warnings.should be_empty
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should also work with namespaced models' do
|
64
|
+
code = <<-END
|
65
|
+
class Backend::User < ActiveRecord::Base
|
66
|
+
end
|
67
|
+
END
|
68
|
+
@excellent.check_code(code)
|
69
|
+
warnings = @excellent.warnings
|
70
|
+
|
71
|
+
warnings.should_not be_empty
|
72
|
+
warnings[0].info.should == { :class => 'Backend::User' }
|
73
|
+
warnings[0].line_number.should == 1
|
74
|
+
warnings[0].message.should == 'Backend::User does not specify attr_accessible.'
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Simplabs::Excellent::Checks::Rails::AttrProtectedCheck do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@excellent = Simplabs::Excellent::Runner.new(Simplabs::Excellent::Checks::Rails::AttrProtectedCheck.new)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#evaluate' do
|
10
|
+
|
11
|
+
it 'should ignore classes that are not active record models' do
|
12
|
+
code = <<-END
|
13
|
+
class Test
|
14
|
+
end
|
15
|
+
END
|
16
|
+
@excellent.check_code(code)
|
17
|
+
warnings = @excellent.warnings
|
18
|
+
|
19
|
+
warnings.should be_empty
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should reject an active record model that does specify attr_protected' do
|
23
|
+
code = <<-END
|
24
|
+
class User < ActiveRecord::Base
|
25
|
+
attr_protected :first_name
|
26
|
+
end
|
27
|
+
END
|
28
|
+
@excellent.check_code(code)
|
29
|
+
warnings = @excellent.warnings
|
30
|
+
|
31
|
+
warnings.should_not be_empty
|
32
|
+
warnings[0].info.should == { :class => 'User' }
|
33
|
+
warnings[0].line_number.should == 1
|
34
|
+
warnings[0].message.should == 'User specifies attr_protected.'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should accept an active record model that does specify attr_accessible' do
|
38
|
+
code = <<-END
|
39
|
+
class User < ActiveRecord::Base
|
40
|
+
attr_accessible :first_name
|
41
|
+
end
|
42
|
+
END
|
43
|
+
@excellent.check_code(code)
|
44
|
+
warnings = @excellent.warnings
|
45
|
+
|
46
|
+
warnings.should be_empty
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should accept an active record model that specifies neither attr_accessible not attr_protected' do
|
50
|
+
code = <<-END
|
51
|
+
class User < ActiveRecord::Base
|
52
|
+
end
|
53
|
+
END
|
54
|
+
@excellent.check_code(code)
|
55
|
+
warnings = @excellent.warnings
|
56
|
+
|
57
|
+
warnings.should be_empty
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should also work with namespaced models' do
|
61
|
+
code = <<-END
|
62
|
+
class Backend::User < ActiveRecord::Base
|
63
|
+
attr_protected :first_name
|
64
|
+
end
|
65
|
+
END
|
66
|
+
@excellent.check_code(code)
|
67
|
+
warnings = @excellent.warnings
|
68
|
+
|
69
|
+
warnings.should_not be_empty
|
70
|
+
warnings[0].info.should == { :class => 'Backend::User' }
|
71
|
+
warnings[0].line_number.should == 1
|
72
|
+
warnings[0].message.should == 'Backend::User specifies attr_protected.'
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Simplabs::Excellent::Checks::Rails::CustomInitializeMethodCheck do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@excellent = Simplabs::Excellent::Runner.new(Simplabs::Excellent::Checks::Rails::CustomInitializeMethodCheck.new)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#evaluate' do
|
10
|
+
|
11
|
+
it 'should ignore classes that are not active record models' do
|
12
|
+
code = <<-END
|
13
|
+
class Test
|
14
|
+
def initialize
|
15
|
+
end
|
16
|
+
end
|
17
|
+
END
|
18
|
+
@excellent.check_code(code)
|
19
|
+
warnings = @excellent.warnings
|
20
|
+
|
21
|
+
warnings.should be_empty
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should reject an active record model that defines initialize' do
|
25
|
+
code = <<-END
|
26
|
+
class User < ActiveRecord::Base
|
27
|
+
def initialize
|
28
|
+
end
|
29
|
+
end
|
30
|
+
END
|
31
|
+
@excellent.check_code(code)
|
32
|
+
warnings = @excellent.warnings
|
33
|
+
|
34
|
+
warnings.should_not be_empty
|
35
|
+
warnings[0].info.should == { :class => 'User' }
|
36
|
+
warnings[0].line_number.should == 1
|
37
|
+
warnings[0].message.should == 'User defines initialize method.'
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should also work with namespaced models' do
|
41
|
+
code = <<-END
|
42
|
+
class Backend::User < ActiveRecord::Base
|
43
|
+
def initialize
|
44
|
+
end
|
45
|
+
end
|
46
|
+
END
|
47
|
+
@excellent.check_code(code)
|
48
|
+
warnings = @excellent.warnings
|
49
|
+
|
50
|
+
warnings.should_not be_empty
|
51
|
+
warnings[0].info.should == { :class => 'Backend::User' }
|
52
|
+
warnings[0].line_number.should == 1
|
53
|
+
warnings[0].message.should == 'Backend::User defines initialize method.'
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Simplabs::Excellent::Checks::Rails::InstanceVarInPartialCheck do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@excellent = Simplabs::Excellent::Runner.new(Simplabs::Excellent::Checks::Rails::InstanceVarInPartialCheck.new)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#evaluate' do
|
10
|
+
|
11
|
+
it 'should accept partials that do not use instance variables' do
|
12
|
+
code = <<-END
|
13
|
+
<div>
|
14
|
+
<%= 'some text' %>
|
15
|
+
</div>
|
16
|
+
END
|
17
|
+
@excellent.check('_dummy-file.html.erb', code)
|
18
|
+
warnings = @excellent.warnings
|
19
|
+
|
20
|
+
warnings.should be_empty
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should reject partials that use instance variables' do
|
24
|
+
code = <<-END
|
25
|
+
<div>
|
26
|
+
<%= @ivar %>
|
27
|
+
</div>
|
28
|
+
END
|
29
|
+
@excellent.check('_dummy-file.html.erb', code)
|
30
|
+
warnings = @excellent.warnings
|
31
|
+
|
32
|
+
warnings.should_not be_empty
|
33
|
+
warnings[0].info.should == { :variable => 'ivar' }
|
34
|
+
warnings[0].line_number.should == 2
|
35
|
+
warnings[0].message.should == 'Instance variable ivar used in partial.'
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Simplabs::Excellent::Checks::Rails::ParamsHashInViewCheck do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@excellent = Simplabs::Excellent::Runner.new(Simplabs::Excellent::Checks::Rails::ParamsHashInViewCheck.new)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#evaluate' do
|
10
|
+
|
11
|
+
it 'should accept views that do not use the params hash' do
|
12
|
+
code = <<-END
|
13
|
+
<div>
|
14
|
+
<%= 'some text' %>
|
15
|
+
</div>
|
16
|
+
END
|
17
|
+
@excellent.check('dummy-file.html.erb', code)
|
18
|
+
warnings = @excellent.warnings
|
19
|
+
|
20
|
+
warnings.should be_empty
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should reject views that use the params hash' do
|
24
|
+
code = <<-END
|
25
|
+
<div>
|
26
|
+
<%= params[:q] %>
|
27
|
+
</div>
|
28
|
+
END
|
29
|
+
@excellent.check('dummy-file.html.erb', code)
|
30
|
+
warnings = @excellent.warnings
|
31
|
+
|
32
|
+
warnings.should_not be_empty
|
33
|
+
warnings[0].info.should == {}
|
34
|
+
warnings[0].line_number.should == 2
|
35
|
+
warnings[0].message.should == 'Params hash used in view.'
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Simplabs::Excellent::Checks::Rails::SessionHashInViewCheck do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@excellent = Simplabs::Excellent::Runner.new(Simplabs::Excellent::Checks::Rails::SessionHashInViewCheck.new)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#evaluate' do
|
10
|
+
|
11
|
+
it 'should accept views that do not use the session hash' do
|
12
|
+
code = <<-END
|
13
|
+
<div>
|
14
|
+
<%= 'some text' %>
|
15
|
+
</div>
|
16
|
+
END
|
17
|
+
@excellent.check('dummy-file.html.erb', code)
|
18
|
+
warnings = @excellent.warnings
|
19
|
+
|
20
|
+
warnings.should be_empty
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should reject views that use the session hash' do
|
24
|
+
code = <<-END
|
25
|
+
<div>
|
26
|
+
<%= session[:someCount] %>
|
27
|
+
</div>
|
28
|
+
END
|
29
|
+
@excellent.check('dummy-file.html.erb', code)
|
30
|
+
warnings = @excellent.warnings
|
31
|
+
|
32
|
+
warnings.should_not be_empty
|
33
|
+
warnings[0].info.should == {}
|
34
|
+
warnings[0].line_number.should == 2
|
35
|
+
warnings[0].message.should == 'Session hash used in view.'
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|