spicycode-micronaut-rails 0.1.7.0 → 0.1.7.1

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.
@@ -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