spicycode-micronaut-rails 0.1.7.0 → 0.1.7.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,13 +27,16 @@ module Micronaut
27
27
  when /mocha/i
28
28
  require 'micronaut/rails/mocking/with_mocha'
29
29
  ::Micronaut.configuration.include(::Micronaut::Rails::Mocking::WithMocha, filter_options)
30
+ when /rr/i
31
+ require 'micronaut/rails/mocking/with_rr'
32
+ ::Micronaut.configuration.include(::Micronaut::Rails::Mocking::WithRR, filter_options)
30
33
  end
31
34
  end
32
35
 
33
36
  def enable_reasonable_defaults!
34
- enable_active_record_transactional_support :describes => lambda { |dt| dt < ::ActiveRecord::Base }
35
- enable_helper_support :describes => lambda { |dt| dt.to_s.ends_with?('Helper') }
36
- enable_controller_support :describes => lambda { |dt| dt < ::ActionController::Base }
37
+ enable_active_record_transactional_support :behaviour => { :describes => lambda { |dt| dt < ::ActiveRecord::Base } }
38
+ enable_helper_support :behaviour => { :describes => lambda { |dt| dt.to_s.ends_with?('Helper') } }
39
+ enable_controller_support :behaviour => { :describes => lambda { |dt| dt < ::ActionController::Base } }
37
40
  enable_rails_specific_mocking_extensions
38
41
  end
39
42
 
@@ -97,8 +97,6 @@ module Micronaut
97
97
  @response.session = @request.session
98
98
  end
99
99
 
100
-
101
-
102
100
  end
103
101
 
104
102
  end
@@ -0,0 +1,24 @@
1
+ module Micronaut
2
+ module Rails
3
+ module Mocking
4
+
5
+ module ModelStubber
6
+
7
+ def connection
8
+ raise MicronautRails::IllegalDataAccessException.new("stubbed/mocked models are not allowed to access the database")
9
+ end
10
+
11
+ def new_record?
12
+ id.nil?
13
+ end
14
+
15
+ def as_new_record
16
+ self.id = nil
17
+ self
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -3,29 +3,12 @@ module Micronaut
3
3
  module Mocking
4
4
  module WithMocha
5
5
 
6
- module ModelStubber
7
-
8
- def connection
9
- raise MicronautRails::IllegalDataAccessException.new("stubbed models are not allowed to access the database")
10
- end
11
-
12
- def new_record?
13
- id.nil?
14
- end
15
-
16
- def as_new_record
17
- self.id = nil
18
- self
19
- end
20
-
21
- end
22
-
23
6
  def stub_model(model_class, params = {})
24
7
  params = params.dup
25
8
  model = model_class.new
26
9
  model.id = params.delete(:id) || next_id
27
10
 
28
- model.extend ModelStubber
11
+ model.extend Micronaut::Rails::Mocking::ModelStubber
29
12
  params.keys.each do |prop|
30
13
  model[prop] = params.delete(prop) if model.has_attribute?(prop)
31
14
  end
@@ -0,0 +1,44 @@
1
+ module Micronaut
2
+ module Rails
3
+ module Mocking
4
+
5
+ module WithRR
6
+ # Creates a mock object instance for a +model_class+ with common
7
+ # methods stubbed out. Additional methods may be easily stubbed (via
8
+ # add_stubs) if +stubs+ is passed.
9
+ def mock_or_stub_model(model_class, mock_or_stub, options = {})
10
+ model = model_class.new
11
+ model.extend Micronaut::Rails::Mocking::ModelStubber
12
+ model_id = next_id
13
+
14
+ stub(errors_stub = Object.new).count.returns(0)
15
+ full_params = { :id => model_id, :new_record? => false, :errors => errors_stub }.update(options)
16
+
17
+ full_params.each do |method, value|
18
+ eval "#{mock_or_stub}(model).#{method}.returns(value)", binding, __FILE__, __LINE__
19
+ end
20
+
21
+ yield model if block_given?
22
+ model
23
+ end
24
+
25
+ def mock_model(model_class, options = {})
26
+ mock_or_stub_model(model_class, 'mock', options)
27
+ end
28
+
29
+ def stub_model(model_class, options = {})
30
+ mock_or_stub_model(model_class, 'stub', options)
31
+ end
32
+
33
+ private
34
+
35
+ @@model_id = 1000
36
+ def next_id
37
+ @@model_id += 1
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -4,7 +4,7 @@ module Micronaut
4
4
  MAJOR = 0
5
5
  MINOR = 1
6
6
  TINY = 7
7
- MINISCULE = 0
7
+ MINISCULE = 1
8
8
 
9
9
  STRING = [MAJOR, MINOR, TINY, MINISCULE].join('.')
10
10
 
@@ -8,20 +8,12 @@ require 'micronaut/rails/version'
8
8
  require 'micronaut/rails/helpers'
9
9
  require 'micronaut/rails/controllers'
10
10
  require 'micronaut/rails/extensions/active_record'
11
+ require 'micronaut/rails/mocking/model_stubber'
11
12
 
12
13
  module Micronaut
13
14
  module Rails
14
15
  class IllegalDataAccessException < StandardError; end
15
16
 
16
- def self.include_in(config)
17
- if config.mock_framework.to_s =~ /mocha/i
18
- require 'micronaut/rails/mocking/with_mocha'
19
- Micronaut::Behaviour.send(:include, Micronaut::Rails::Mocking::WithMocha)
20
- end
21
- config.extend(Micronaut::Rails::TransactionalDatabaseSupport, :behaviour => { :describes => lambda { |dt| dt < ActiveRecord::Base } })
22
- config.extend(Micronaut::Rails::Helpers, :behaviour => { :describes => lambda { |dt| dt.to_s.ends_with?('Helper') } })
23
- config.extend(Micronaut::Rails::Controllers, :behaviour => { :describes => lambda { |dt| dt < ActionController::Base } })
24
- end
25
17
  end
26
18
 
27
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spicycode-micronaut-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7.0
4
+ version: 0.1.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Humphries
@@ -9,7 +9,7 @@ autorequire: micronaut-rails
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-28 00:00:00 -08:00
12
+ date: 2008-12-29 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -61,7 +61,9 @@ files:
61
61
  - lib/micronaut/rails/matchers/controllers/redirect_to.rb
62
62
  - lib/micronaut/rails/matchers/controllers/render_template.rb
63
63
  - lib/micronaut/rails/mocking
64
+ - lib/micronaut/rails/mocking/model_stubber.rb
64
65
  - lib/micronaut/rails/mocking/with_mocha.rb
66
+ - lib/micronaut/rails/mocking/with_rr.rb
65
67
  - lib/micronaut/rails/transactional_database_support.rb
66
68
  - lib/micronaut/rails/version.rb
67
69
  - lib/micronaut-rails.rb