activerecord-tableless 1.1.2 → 1.1.3

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.
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.files = `git ls-files`.split($\)
11
11
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
12
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
- gem.version = "1.1.2"
13
+ gem.version = "1.1.3"
14
14
  gem.has_rdoc = true
15
15
 
16
16
  gem.require_paths = ["lib"]
@@ -143,6 +143,7 @@ module ActiveRecord
143
143
  def transaction(&block)
144
144
  case tableless_options[:database]
145
145
  when :pretend_success
146
+ @_current_transaction_records ||= []
146
147
  yield
147
148
  when :fail_fast
148
149
  raise NoDatabase.new("Can't #transaction on Tableless class")
@@ -224,6 +225,12 @@ module ActiveRecord
224
225
  end
225
226
  end
226
227
 
228
+ if ActiveRecord::VERSION::STRING < "3.0"
229
+ else
230
+ def add_to_transaction
231
+ end
232
+ end
233
+
227
234
  private
228
235
 
229
236
  def escaped_var_name(name, prefix = nil)
@@ -3,67 +3,89 @@ require 'active_record'
3
3
  require 'activerecord-tableless'
4
4
  require 'logger'
5
5
 
6
- ActiveRecord::Base.logger = Logger.new(STDERR)
7
- ActiveRecord::Base.logger.level = Logger::Severity::UNKNOWN
8
-
9
- class ChairFailure < ActiveRecord::Base
10
- has_no_table
11
- column :id, :integer
12
- column :name, :string
6
+ def make_tableless_model(database = nil, nested = nil)
7
+ eval <<EOCLASS
8
+ class Chair < ActiveRecord::Base
9
+ #{database ? "has_no_table :database => :#{database}" : 'has_no_table'}
10
+ column :id, :integer
11
+ column :name, :string
12
+ #{if nested
13
+ '
14
+ has_many :arm_rests
15
+ accepts_nested_attributes_for :arm_rests
16
+ '
17
+ end}
18
+ end
19
+ EOCLASS
20
+ if nested
21
+ eval <<EOCLASS
22
+ class ArmRest < ActiveRecord::Base
23
+ has_no_table
24
+ column :id, :integer
25
+ column :chair_id, :integer
26
+ column :name, :string
27
+ end
28
+ EOCLASS
29
+ end
13
30
  end
14
31
 
15
- class ChairPretend < ActiveRecord::Base
16
- has_no_table :database => :pretend_success
17
- column :id, :integer
18
- column :name, :string
32
+ def remove_models
33
+ Object.send(:remove_const, :Chair) rescue nil
34
+ Object.send(:remove_const, :ArmRest) rescue nil
19
35
  end
20
36
 
21
- describe "Tableless attributes" do
37
+ ActiveRecord::Base.logger = Logger.new(STDERR)
38
+ ActiveRecord::Base.logger.level = Logger::Severity::UNKNOWN
22
39
 
23
- subject { ChairFailure.new }
40
+ shared_examples_for "an active record" do
24
41
  it { should respond_to :id }
25
42
  it { should respond_to :id= }
26
43
  it { should respond_to :name }
27
44
  it { should respond_to :name= }
45
+ end
28
46
 
47
+ shared_examples_for "nested model" do
48
+
29
49
  end
30
50
 
31
51
  describe "Tableless with fail_fast" do
32
- let!(:klass) { ChairFailure }
33
- subject { ChairFailure.new }
52
+ before(:all) {make_tableless_model(nil, nil)}
53
+ after(:all){ remove_models }
54
+ subject { Chair.new }
34
55
 
56
+ it_behaves_like "an active record"
35
57
  describe "class" do
36
58
  if ActiveRecord::VERSION::STRING < "3.0"
37
59
  describe "#find" do
38
60
  it "raises ActiveRecord::Tableless::NoDatabase" do
39
- expect { klass.find(1) }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
61
+ expect { Chair.find(1) }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
40
62
  end
41
63
  end
42
64
  describe "#find(:all)" do
43
65
  it "raises ActiveRecord::Tableless::NoDatabase" do
44
- expect { klass.find(:all) }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
66
+ expect { Chair.find(:all) }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
45
67
  end
46
68
  end
47
69
  else ## ActiveRecord::VERSION::STRING >= "3.0"
48
70
  describe "#all" do
49
71
  it "raises ActiveRecord::Tableless::NoDatabase" do
50
- expect { klass.all }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
72
+ expect { Chair.all }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
51
73
  end
52
74
  end
53
75
  end
54
76
  describe "#create" do
55
77
  it "raises ActiveRecord::Tableless::NoDatabase" do
56
- expect { klass.create(:name => 'Jarl') }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
78
+ expect { Chair.create(:name => 'Jarl') }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
57
79
  end
58
80
  end
59
81
  describe "#destroy" do
60
82
  it "raises ActiveRecord::Tableless::NoDatabase" do
61
- expect { klass.destroy(1) }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
83
+ expect { Chair.destroy(1) }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
62
84
  end
63
85
  end
64
86
  describe "#destroy_all" do
65
87
  it "raises ActiveRecord::Tableless::NoDatabase" do
66
- expect { klass.destroy_all }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
88
+ expect { Chair.destroy_all }.to raise_exception(ActiveRecord::Tableless::NoDatabase)
67
89
  end
68
90
  end
69
91
  end
@@ -96,25 +118,25 @@ shared_examples_for "a succeeding database" do
96
118
  if ActiveRecord::VERSION::STRING < "3.0"
97
119
  describe "#find" do
98
120
  it "raises ActiveRecord::RecordNotFound" do
99
- expect { klass.find(314) }.to raise_exception(ActiveRecord::RecordNotFound)
121
+ expect { Chair.find(314) }.to raise_exception(ActiveRecord::RecordNotFound)
100
122
  end
101
123
  end
102
124
  describe "#find(:all)" do
103
- specify { klass.find(:all) == []}
125
+ specify { Chair.find(:all) == []}
104
126
  end
105
127
  else ## ActiveRecord::VERSION::STRING >= "3.0"
106
128
  describe "#all" do
107
- specify { klass.all == []}
129
+ specify { Chair.all == []}
108
130
  end
109
131
  end
110
132
  describe "#create" do
111
- specify { klass.create(:name => 'Jarl') == true }
133
+ specify { Chair.create(:name => 'Jarl') == true }
112
134
  end
113
135
  describe "#destroy" do
114
- specify { klass.destroy(1) == true }
136
+ specify { Chair.destroy(1) == true }
115
137
  end
116
138
  describe "#destroy_all" do
117
- specify { klass.destroy_all == true }
139
+ specify { Chair.destroy_all == true }
118
140
  end
119
141
  end
120
142
 
@@ -141,20 +163,23 @@ describe "Active record with real database" do
141
163
  ActiveRecord::Base.connection.execute("drop table if exists chairs")
142
164
  ActiveRecord::Base.connection.execute("create table chairs (id INTEGER PRIMARY KEY, name TEXT )")
143
165
 
144
- Object.send(:remove_const, Chair) rescue nil
145
166
  class Chair < ActiveRecord::Base
146
167
  end
147
168
  end
148
- before(:all) do
169
+ after(:all) do
170
+ remove_models
149
171
  ActiveRecord::Base.clear_all_connections!
150
172
  end
151
- let!(:klass) { Chair }
173
+
152
174
  subject { Chair.new(:name => 'Jarl') }
175
+ it_behaves_like "an active record"
153
176
  it_behaves_like "a succeeding database"
154
177
  end
155
178
 
156
179
  describe "Tableless with succeeding database" do
157
- let!(:klass) { ChairPretend }
158
- subject { ChairPretend.new(:name => 'Jarl') }
180
+ before(:all) { make_tableless_model(:pretend_success, nil) }
181
+ after(:all){ remove_models }
182
+ subject { Chair.new(:name => 'Jarl') }
183
+ it_behaves_like "an active record"
159
184
  it_behaves_like "a succeeding database"
160
185
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-tableless
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-02-20 00:00:00.000000000 Z
14
+ date: 2013-02-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activerecord
@@ -218,7 +218,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
218
218
  version: '0'
219
219
  segments:
220
220
  - 0
221
- hash: 3602190657480695753
221
+ hash: 1824871736398580322
222
222
  required_rubygems_version: !ruby/object:Gem::Requirement
223
223
  none: false
224
224
  requirements:
@@ -227,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
227
  version: '0'
228
228
  segments:
229
229
  - 0
230
- hash: 3602190657480695753
230
+ hash: 1824871736398580322
231
231
  requirements: []
232
232
  rubyforge_project:
233
233
  rubygems_version: 1.8.24