code-spec 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,40 @@
1
+ module RSpec::RubyContentMatchers
2
+ class HaveSubclass < RSpec::RubyContentMatcher
3
+ attr_reader :klass, :superclass, :type
4
+
5
+ def initialize(klass, superclass, type=nil)
6
+ @klass = klass.to_s.camelize
7
+ super @klass
8
+ @superclass = superclass.to_s.camelize
9
+ @type = type.to_s.camelize if type
10
+ end
11
+
12
+ def failure_message
13
+ super
14
+ "Expected there to be the subclass #{klass} of #{superclass}"
15
+ end
16
+
17
+ def negative_failure_message
18
+ super
19
+ "Did no expected there to be the subclass #{klass} of #{superclass}"
20
+ end
21
+
22
+ protected
23
+
24
+ def main_expr
25
+ 'class' + SPACES + "#{klass}#{type}" + OPT_SPACES + '<' + OPT_SPACES + "#{superclass}" + ANY_GROUP
26
+ end
27
+
28
+ def alt_end
29
+ 'class'
30
+ end
31
+
32
+ end
33
+
34
+ def have_subclass(klass, superclass, type=nil)
35
+ HaveSubclass.new(klass, superclass, type)
36
+ end
37
+ alias_method :be_subclass, :have_subclass
38
+
39
+
40
+ end
@@ -0,0 +1,34 @@
1
+ module RSpec::RubyContentMatchers
2
+ class IncludeModule < RSpec::RubyContentMatcher
3
+ attr_reader :module_name, :type
4
+
5
+ def initialize module_name, type=nil
6
+ @module_name = module_name.to_s.camelize
7
+ @type = type || :include
8
+ end
9
+
10
+ def matches?(content)
11
+ @content = content
12
+ (content =~ /#{type}\s+#{module_name}/)
13
+ end
14
+
15
+ def failure_message
16
+ super
17
+ "Expected there to be an inclusion of module #{module_name}"
18
+ end
19
+
20
+ def negative_failure_message
21
+ super
22
+ "Did not expect there to be an inclusion of module #{module_name}"
23
+ end
24
+
25
+ end
26
+
27
+ def include_module(module_name)
28
+ IncludeModule.new(module_name)
29
+ end
30
+
31
+ def extend_module(module_name)
32
+ IncludeModule.new(module_name, :extend)
33
+ end
34
+ end
@@ -0,0 +1,35 @@
1
+ module RSpec::RubyContentMatchers
2
+ class InheritFrom < RSpec::RubyContentMatcher
3
+ attr_reader :klass
4
+
5
+ def initialize klass
6
+ @klass = klass.to_s.camelize
7
+ super @klass
8
+ end
9
+
10
+ def index
11
+ 1
12
+ end
13
+
14
+ def failure_message
15
+ super
16
+ "Expected the class to inherit from #{klass}"
17
+ end
18
+
19
+ def negative_failure_message
20
+ super
21
+ "Did not expect the class to inherit from #{klass}"
22
+ end
23
+
24
+ protected
25
+
26
+ def main_expr
27
+ 'class' + SPACES + Q_ANY_GROUP + '<' + OPT_SPACES + "#{klass}" + ANY_GROUP
28
+ end
29
+ end
30
+
31
+ def inherit_from(klass)
32
+ InheritFrom.new(klass)
33
+ end
34
+ alias_method :be_subclass_of, :inherit_from
35
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'class_self matcher' do
4
+ context "content without class << self" do
5
+ not_class_self = %q{
6
+ def hello
7
+ end}
8
+
9
+ it "should not have class << self" do
10
+ not_class_self.should_not have_class_self
11
+ end
12
+ end
13
+
14
+ context "content with class << self" do
15
+ class_self = %q{
16
+ class << self
17
+ def hello
18
+ end
19
+ end # class self}
20
+
21
+ it "should have class << self" do
22
+ class_self.should have_class_self
23
+ end
24
+ end
25
+ end
26
+
27
+
28
+
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'block matcher' do
4
+ context "content without block" do
5
+ not_class_self = %q{
6
+ def hello
7
+ end}
8
+
9
+ it "should not have block" do
10
+ not_class_self.should_not have_block :hello
11
+ end
12
+ end
13
+
14
+ context "content with block: hello do" do
15
+ content = %q{
16
+ hello do
17
+ blip
18
+ end # do}
19
+
20
+ it "should have block" do
21
+ content.should have_block :hello
22
+ end
23
+ end
24
+
25
+ context "content with block: hello :angel do" do
26
+ content = %q{
27
+ hello :angel do
28
+ blip
29
+ end # do}
30
+
31
+ it "should have block" do
32
+ content.should have_block :hello, :args => ':angel'
33
+ end
34
+ end
35
+
36
+ context "content with block: hello :angel do |x,y|" do
37
+ content = %q{
38
+ hello :angel do |x,y|
39
+ blip
40
+ end # do}
41
+
42
+ it "should have block" do
43
+ content.should have_block :hello, :args => ':angel', :block_args => 'x,y'
44
+ end
45
+ end
46
+ end
47
+
48
+
49
+
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'method call matcher' do
4
+ context "content without method call" do
5
+ not_call = %q{
6
+ def hello
7
+ end}
8
+
9
+ it "should not have call hello" do
10
+ not_call.should_not have_call :hello
11
+ end
12
+ end
13
+
14
+ context "content with call hello" do
15
+ call = 'hello'
16
+ it "should have call to hello" do
17
+ call.should have_call :hello
18
+ end
19
+ end
20
+
21
+ context "content with call hello" do
22
+ call = %q{
23
+ def hello
24
+ x.hello
25
+ end}
26
+ it "should have call to hello" do
27
+ call.should have_dot_call :hello
28
+ end
29
+ end
30
+
31
+ context "class User with call role_strategy" do
32
+ clazz = %q{
33
+ class User < ActiveRecord::Base
34
+ include RoleModels::Generic
35
+ role_strategy :admin_flag
36
+
37
+ roles :admin,:user
38
+
39
+ end}
40
+
41
+ it "should have call to role_strategy with args :admin_flag" do
42
+ clazz.should have_call :role_strategy, :args => ':admin_flag'
43
+ end
44
+ end
45
+ end
46
+
47
+
48
+
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'method calls matcher' do
4
+ context "content without calls" do
5
+ not_class_self = %q{
6
+ def x
7
+ end
8
+
9
+ def y
10
+ end
11
+ }
12
+
13
+ it "should not have calls to x or y" do
14
+ not_class_self.should_not have_calls :x, :y
15
+ end
16
+ end
17
+
18
+ context "content with calls to x and y" do
19
+ class_self = %q{
20
+ def x
21
+ x
22
+ y
23
+ end}
24
+
25
+ it "should have calls to x and y" do
26
+ class_self.should have_calls :x, :y
27
+ end
28
+ end
29
+
30
+ context "content with calls to x and y" do
31
+ class_self = %q{
32
+ def x
33
+ x(2)
34
+ y 3
35
+ end}
36
+
37
+ it "should have calls: x(2) and y 3" do
38
+ class_self.should have_calls :x => '2', :y => '3'
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'module matcher' do
4
+ context "content without class Hello" do
5
+ no_class = %q{
6
+ module Hello
7
+ def hello
8
+ end
9
+ end}
10
+
11
+ it "should not have class Hello" do
12
+ no_class.should_not have_class :Hello do |content|
13
+ content.should_not be_empty
14
+ end
15
+ end
16
+ end
17
+
18
+ context "content with class Hello" do
19
+ with_class = %q{
20
+ class Hello
21
+ def hello
22
+ end
23
+ end}
24
+
25
+ it "should have class Hello" do
26
+ with_class.should have_class :Hello do |content|
27
+ content.should_not be_empty
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+
34
+
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'method matcher' do
4
+ context "content without method" do
5
+ no_method = %q{
6
+ class X
7
+ hello
8
+ end}
9
+
10
+ it "should not have method hello" do
11
+ no_method.should_not have_method :hello do |content|
12
+ content.should_not be_empty
13
+ end
14
+ end
15
+ end
16
+
17
+ context "content with method hello" do
18
+ with_method = %q{
19
+ def hello
20
+ blip
21
+ end}
22
+ it "should have method hello" do
23
+ with_method.should have_method :hello do |content|
24
+ content.should_not be_empty
25
+ end
26
+ end
27
+ end
28
+
29
+ context "content: method hello with args (x, y)" do
30
+ with_method = %q{
31
+ def hello(x, y)
32
+ blip
33
+ end}
34
+ it "should have method hello" do
35
+ with_method.should have_method :hello, :args => 'x, y' do |content|
36
+ content.should_not be_empty
37
+ end
38
+ end
39
+ end
40
+
41
+ context "content: method hello with args x, y" do
42
+ with_method = %q{
43
+ def hello x, y
44
+ blip
45
+ end}
46
+ it "should have method hello with args x, y" do
47
+ with_method.should have_method :hello, :args => 'x, y' do |content|
48
+ content.should_not be_empty
49
+ end
50
+ end
51
+ end
52
+
53
+ end
54
+
55
+
56
+
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'module matcher' do
4
+ context "content without module Hello" do
5
+ no_module = %q{
6
+ class Hello
7
+ def hello
8
+ blip
9
+ end
10
+ end}
11
+
12
+ it "should not have module Hello" do
13
+ no_module.should_not have_module :Hello
14
+ end
15
+ end
16
+
17
+ context "content with module Hello" do
18
+ with_module = %q{
19
+ module Hello
20
+ def hello
21
+ end
22
+ end}
23
+
24
+ it "should have module Hello" do
25
+ with_module.should have_module :Hello do |content|
26
+ content.should_not be_empty
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+
33
+
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'region matcher' do
4
+ context "content with only protected region" do
5
+ only_protected_region = %q{
6
+ def hello
7
+ end
8
+
9
+ protected
10
+
11
+ def goodbye
12
+ end
13
+
14
+ }
15
+
16
+ it "should not have public region" do
17
+ only_protected_region.should_not have_region :public
18
+ end
19
+
20
+ it "should have protected region" do
21
+ only_protected_region.should have_region :protected do |content|
22
+ content.should_not be_empty
23
+ end
24
+ end
25
+ end
26
+
27
+ context "content with only private region" do
28
+ only_private_region = %q{
29
+ def hello
30
+ end
31
+
32
+ private
33
+
34
+ def goodbye
35
+ end
36
+
37
+ }
38
+
39
+ it "should not have public region" do
40
+ only_private_region.should_not have_region :public
41
+ end
42
+
43
+ it "should have private region" do
44
+ only_private_region.should have_region :private do |content|
45
+ content.should_not be_empty
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+
52
+
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'subclass matcher' do
4
+ context "content without subclass Greeting" do
5
+ no_subclass = %q{
6
+ class Hello
7
+ def hello
8
+ end
9
+ end}
10
+
11
+ it "should not have subclass Greeting" do
12
+ no_subclass.should_not have_subclass :hello, :greeting
13
+ end
14
+ end
15
+
16
+ context "content with subclass Greeting" do
17
+ with_subclass = %q{
18
+ class Hello < Greeting
19
+ def hello
20
+ end
21
+ end}
22
+
23
+ it "should not have subclass Greeting" do
24
+ with_subclass.should have_subclass :hello, :greeting do |content|
25
+ content.should_not be_empty
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+
32
+
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'include module matcher' do
4
+ context "content without include Greeting" do
5
+ no_include = %q{
6
+ class Hello < Greeting
7
+ def hello
8
+ end
9
+ end}
10
+
11
+ it "should not have include Greeting" do
12
+ no_include.should_not include_module :greeting
13
+ end
14
+ end
15
+
16
+ context "content with include Greeting" do
17
+ with_module = %q{
18
+ class Hello
19
+ include Greeting
20
+
21
+ def hello
22
+ end
23
+ end}
24
+
25
+ it "should have include Greeting" do
26
+ with_module.should include_module :greeting do |content|
27
+ content.should_not be_empty
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+
34
+
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'inherit matcher' do
4
+ context "content with class that inherits from Greeting" do
5
+ no_subclass = %q{
6
+ class Hello
7
+ def hello
8
+ end
9
+ end}
10
+
11
+ it "should not inherit from Greeting" do
12
+ no_subclass.should_not inherit_from :greeting
13
+ end
14
+ end
15
+
16
+ context "content with subclass Greeting" do
17
+ with_subclass = %q{
18
+ class Hello < Greeting
19
+ def hello
20
+ end
21
+ end}
22
+
23
+ it "should inherit_from Greeting" do
24
+ with_subclass.should inherit_from :greeting do |content|
25
+ content.should_not be_empty
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+
32
+
@@ -0,0 +1,4 @@
1
+ require 'rspec'
2
+ require 'rspec/autorun'
3
+ require 'code-spec'
4
+