polymorphic_model 0.0.4 → 0.0.5

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -0,0 +1,27 @@
1
+ require 'spec'
2
+ require 'spec/rails/mocks'
3
+
4
+ module Spec
5
+ module Rails
6
+ module Mocks
7
+
8
+ class InvalidPolymorphicModelTypeError < Exception; end
9
+
10
+ def mock_polymorphic_model(model_class, model_type, options_and_stubs={})
11
+ raise InvalidPolymorphicModelTypeError unless model_class.types.include?(model_type)
12
+ if block_given?
13
+ m = mock_model(model_class, options_and_stubs, &block)
14
+ else
15
+ m = mock_model(model_class, options_and_stubs)
16
+ end
17
+
18
+ model_class.types.each do |t|
19
+ m.stub!(:"#{t}?").and_return(t == model_type ? true : false)
20
+ end
21
+ polymorphic_column = model_class.instance_eval { @_polymorphic_column }
22
+ m.stub!(polymorphic_column).and_return(model_type.to_s)
23
+ return m
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1 @@
1
+ require 'polymorphic_model/spec/rails/mocks'
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{polymorphic_model}
8
- s.version = "0.0.4"
8
+ s.version = "0.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Artur Roszczyk"]
@@ -25,9 +25,12 @@ Gem::Specification.new do |s|
25
25
  "VERSION",
26
26
  "init.rb",
27
27
  "lib/polymorphic_model.rb",
28
+ "lib/polymorphic_model/spec/rails/mocks.rb",
29
+ "lib/spec/rails/polymorphic_model.rb",
28
30
  "polymorphic_model.gemspec",
29
31
  "rails/init.rb",
30
32
  "spec/lib/database.rb",
33
+ "spec/polymorphic_model/spec/rails/mocks_spec.rb",
31
34
  "spec/polymorphic_model_spec.rb",
32
35
  "spec/spec.opts",
33
36
  "spec/spec_helper.rb"
@@ -39,6 +42,7 @@ Gem::Specification.new do |s|
39
42
  s.summary = %q{Alternative for ActiveRecord's Single Table Inheritance}
40
43
  s.test_files = [
41
44
  "spec/lib/database.rb",
45
+ "spec/polymorphic_model/spec/rails/mocks_spec.rb",
42
46
  "spec/polymorphic_model_spec.rb",
43
47
  "spec/spec_helper.rb"
44
48
  ]
@@ -0,0 +1,35 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
2
+
3
+ describe "Spec::Rails::Mocks" do
4
+ require 'spec/rails/polymorphic_model'
5
+ include Spec::Rails::Mocks
6
+
7
+ describe :mock_polymorphic_model do
8
+ before(:all) do
9
+ set_database(["task"])
10
+ class Task < ActiveRecord::Base
11
+ polymorphic_model :with_type_column => "task_type"
12
+ define_type :internal
13
+ define_type :external
14
+ end
15
+ end
16
+
17
+ it "should stub check-methods" do
18
+ mock = mock_polymorphic_model(Task, :external)
19
+ mock.should be_external
20
+ mock.should_not be_internal
21
+ end
22
+
23
+ it "should should stub type-column value" do
24
+ mock = mock_polymorphic_model(Task, :internal)
25
+ mock.task_type.should == "internal"
26
+ end
27
+
28
+ it "should not allow mock model with incorrect type" do
29
+ lambda do
30
+ mock_polymorphic_model(Task, :invalid)
31
+ end.should raise_error(Spec::Rails::Mocks::InvalidPolymorphicModelTypeError)
32
+ end
33
+
34
+ end
35
+ end
@@ -1,7 +1,8 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "PolymorphicModel" do
4
- before do
4
+ before(:each) do
5
+ set_database(["job"])
5
6
  Job.instance_eval do
6
7
  polymorphic_model :with_type_column => :job_type
7
8
  end
@@ -30,6 +31,7 @@ end
30
31
 
31
32
  describe "When normal collection types are defined" do
32
33
  before do
34
+ set_database(["job"])
33
35
  Job.instance_eval do
34
36
  polymorphic_model :with_type_column => :job_type
35
37
  define_type :internal
@@ -75,6 +77,7 @@ end
75
77
  describe "When singleton type is defined" do
76
78
  describe "with autocreate" do
77
79
  before do
80
+ set_database(["job"])
78
81
  Job.instance_eval do
79
82
  polymorphic_model :with_type_column => :job_type
80
83
  define_type :basic, :singleton => true, :autocreate => true
@@ -106,6 +109,7 @@ describe "When singleton type is defined" do
106
109
 
107
110
  describe "without autocreate" do
108
111
  before do
112
+ set_database(["job"])
109
113
  Job.instance_eval do
110
114
  polymorphic_model :with_type_column => :job_type
111
115
  define_type :basic, :singleton => true, :autocreate => false
data/spec/spec_helper.rb CHANGED
@@ -6,5 +6,4 @@ require 'spec/autorun'
6
6
  require 'lib/database'
7
7
 
8
8
  Spec::Runner.configure do |config|
9
- config.before(:each) { set_database(["job", "offer"]) }
10
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polymorphic_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artur Roszczyk
@@ -60,9 +60,12 @@ files:
60
60
  - VERSION
61
61
  - init.rb
62
62
  - lib/polymorphic_model.rb
63
+ - lib/polymorphic_model/spec/rails/mocks.rb
64
+ - lib/spec/rails/polymorphic_model.rb
63
65
  - polymorphic_model.gemspec
64
66
  - rails/init.rb
65
67
  - spec/lib/database.rb
68
+ - spec/polymorphic_model/spec/rails/mocks_spec.rb
66
69
  - spec/polymorphic_model_spec.rb
67
70
  - spec/spec.opts
68
71
  - spec/spec_helper.rb
@@ -96,5 +99,6 @@ specification_version: 3
96
99
  summary: Alternative for ActiveRecord's Single Table Inheritance
97
100
  test_files:
98
101
  - spec/lib/database.rb
102
+ - spec/polymorphic_model/spec/rails/mocks_spec.rb
99
103
  - spec/polymorphic_model_spec.rb
100
104
  - spec/spec_helper.rb