og 0.29.0 → 0.30.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.
@@ -192,17 +192,17 @@ private
192
192
  Logger.debug "Table '#{klass::OGTABLE}' already exists" if $DBG
193
193
 
194
194
  actual_fields = Set.new(list_fields(klass::OGTABLE))
195
- defined_fields = Set.new(klass.properties.values.map { |f| field_for_property(f) } )
195
+ defined_fields = Set.new(fields_for_class(klass).map { |f| f[0, f.index(' ')] } )
196
196
 
197
197
  unless defined_fields == actual_fields
198
- Logger.debug "Field mismatch in '#{klass::OGTABLE}'. Attempting to correct..."
198
+ Logger.debug "Field mismatch in '#{klass::OGTABLE}'. Attempting to correct..." if $DBG
199
199
 
200
200
  fields_to_add = defined_fields - actual_fields
201
201
  fields_to_delete = actual_fields - defined_fields
202
202
 
203
203
  fields_to_add.each do |field|
204
204
  if @options[:evolve_schema] == true
205
- Logger.debug "Adding field '#{field}' to '#{klass::OGTABLE}'"
205
+ Logger.debug "Adding field '#{field}' to '#{klass::OGTABLE}'" if $DBG
206
206
  sql = "ALTER TABLE #{klass::OGTABLE} ADD COLUMN #{property_to_field(klass, klass.properties[field.to_sym])}"
207
207
  @conn.query(sql)
208
208
  @conn.query("VACUUM #{klass::OGTABLE}")
@@ -252,7 +252,7 @@ private
252
252
  create_join_table_sql(info).each do |sql|
253
253
  @conn.query(sql).close
254
254
  end
255
- Logger.debug "Created jointable '#{info[:table]}'."
255
+ Logger.debug "Created jointable '#{info[:table]}'." if $DBG
256
256
  rescue Object => ex
257
257
  # gmosx: any idea how to better test this?
258
258
  if ex.to_s =~ /table .* already exists/i
@@ -271,8 +271,14 @@ private
271
271
 
272
272
  fields = res.columns
273
273
 
274
+ # Check if the field should be ignored.
275
+ ignore = klass.ann[:self][:ignore_field] || klass.ann[:self][:ignore_fields] || klass.ann[:self][:ignore_columns]
276
+
274
277
  res.fields.size.times do |i|
275
- map[fields[i].intern] = i
278
+ field_name = fields[i].to_sym
279
+ unless (ignore and ignore.include?(field_name))
280
+ map[field_name] = i
281
+ end
276
282
  end
277
283
 
278
284
  return map
@@ -294,10 +300,10 @@ private
294
300
 
295
301
  klass.class_eval %{
296
302
  def og_insert(store)
297
- #{Glue::Aspects.gen_advice_code(:og_insert, klass.advices, :pre) if klass.respond_to?(:advices)}
303
+ #{::Aspects.gen_advice_code(:og_insert, klass.advices, :pre) if klass.respond_to?(:advices)}
298
304
  store.query("#{sql}").close
299
305
  @#{pk} = store.last_insert_rowid
300
- #{Glue::Aspects.gen_advice_code(:og_insert, klass.advices, :post) if klass.respond_to?(:advices)}
306
+ #{::Aspects.gen_advice_code(:og_insert, klass.advices, :post) if klass.respond_to?(:advices)}
301
307
  end
302
308
  }
303
309
  end
@@ -1,3 +1,7 @@
1
+ #--
2
+ # TODO: extend from sqlite.rb to avoid code duplication.
3
+ #++
4
+
1
5
  begin
2
6
  require 'sqlite'
3
7
  rescue Object => ex
@@ -166,7 +170,7 @@ private
166
170
  create_join_table_sql(info).each do |sql|
167
171
  @conn.query(sql).close
168
172
  end
169
- Logger.debug "Created jointable '#{info[:table]}'."
173
+ Logger.debug "Created jointable '#{info[:table]}'." if $DBG
170
174
  rescue Object => ex
171
175
  # gmosx: any idea how to better test this?
172
176
  if ex.to_s =~ /table .* already exists/i
@@ -185,8 +189,14 @@ private
185
189
 
186
190
  fields = res.columns
187
191
 
192
+ # Check if the field should be ignored.
193
+ ignore = klass.ann[:self][:ignore_field] || klass.ann[:self][:ignore_fields] || klass.ann[:self][:ignore_columns]
194
+
188
195
  res.fields.size.times do |i|
189
- map[fields[i].intern] = i
196
+ field_name = fields[i].to_sym
197
+ unless (ignore and ignore.include?(field_name))
198
+ map[field_name] = i
199
+ end
190
200
  end
191
201
 
192
202
  return map
@@ -208,10 +218,10 @@ private
208
218
 
209
219
  klass.class_eval %{
210
220
  def og_insert(store)
211
- #{Glue::Aspects.gen_advice_code(:og_insert, klass.advices, :pre) if klass.respond_to?(:advices)}
221
+ #{::Aspects.gen_advice_code(:og_insert, klass.advices, :pre) if klass.respond_to?(:advices)}
212
222
  store.query("#{sql}").close
213
223
  @#{pk} = store.last_insert_rowid
214
- #{Glue::Aspects.gen_advice_code(:og_insert, klass.advices, :post) if klass.respond_to?(:advices)}
224
+ #{::Aspects.gen_advice_code(:og_insert, klass.advices, :post) if klass.respond_to?(:advices)}
215
225
  end
216
226
  }
217
227
  end
@@ -82,10 +82,10 @@ require 'og'
82
82
 
83
83
  Logger.set(Logger.new(StringIO.new)) unless $DBG
84
84
 
85
- Og.thread_safe = false
86
-
87
85
  $og1 ||= Og.setup(@og_config1)
88
86
  $og2 ||= Og.setup(@og_config2)
89
87
 
88
+ Og.thread_safe = false if Og.thread_safe
89
+
90
90
  # * Tom Sawyer <transfire@gmail.com>
91
91
  # * George Moschovitis <gm@navel.gr>
@@ -17,6 +17,8 @@ class TC_Sti < Test::Unit::TestCase
17
17
  property :three
18
18
  end
19
19
 
20
+ $og1.manage_classes(StiParent, StiChild)
21
+
20
22
  def setup
21
23
  @store = Og::SqlStore.new(nil)
22
24
  end
@@ -51,3 +53,42 @@ class TC_Sti < Test::Unit::TestCase
51
53
  assert(field_names.member?(:ogtype.to_s), msg)
52
54
  end
53
55
  end
56
+
57
+ class TC_Sti_OgType < Test::Unit::TestCase
58
+ class Human
59
+ property :name
60
+
61
+ schema_inheritance
62
+
63
+ def initialize(name)
64
+ @name = name
65
+ end
66
+ end
67
+
68
+ class Parent < Human
69
+ property :job
70
+ end
71
+
72
+ class Child < Human
73
+ property :toys
74
+ end
75
+
76
+ $og1.manage_classes(Human, Parent, Child)
77
+
78
+ def setup
79
+ Parent.create('mom')
80
+ Parent.create('dad')
81
+ Child.create('son')
82
+ end
83
+
84
+ def test_sti_all
85
+ all = Human.all
86
+ assert_equal(3, all.size)
87
+ parents = all.select {|h| h.class == Parent }
88
+ children = all.select {|h| h.class == Child }
89
+ assert_equal(2, parents.size)
90
+ assert_equal(1, children.size)
91
+ assert_equal(%w[dad mom], parents.sort {|x,y| x.name <=> y.name}.map {|p| p.name } )
92
+ assert_equal(%w[son], children.map {|c| c.name } )
93
+ end
94
+ end
@@ -5,6 +5,7 @@ require 'facets'
5
5
 
6
6
  require 'test/unit'
7
7
  require 'og'
8
+ require 'glue/timestamped'
8
9
 
9
10
  class TC_OgAggrCalc < Test::Unit::TestCase # :nodoc: all
10
11
  include Og
@@ -12,6 +13,7 @@ class TC_OgAggrCalc < Test::Unit::TestCase # :nodoc: all
12
13
  class User
13
14
  property :section, String
14
15
  property :age, Fixnum
16
+ is Glue::Timestamped
15
17
 
16
18
  def initialize(section, age)
17
19
  @section = section
@@ -27,7 +29,7 @@ class TC_OgAggrCalc < Test::Unit::TestCase # :nodoc: all
27
29
  User.create('d', 34)
28
30
  User.create('d', 33)
29
31
  User.create('c', 27)
30
- User.create('c', 31)
32
+ last = User.create('c', 31)
31
33
 
32
34
  assert_equal 6, User.count
33
35
  assert_equal 12, User.minimum(:age)
@@ -38,7 +40,11 @@ class TC_OgAggrCalc < Test::Unit::TestCase # :nodoc: all
38
40
 
39
41
  sums = User.sum(:age, :group => :section)
40
42
  assert_equal 3, sums.size
41
- assert_equal 28, sums[0]
43
+ assert(sums.include?(28))
44
+ assert(sums.include?(58))
45
+ assert(sums.include?(67))
46
+ assert_equal(last.create_time.to_s, User.max(:create_time).to_s)
47
+ assert_instance_of(Time, User.max(:create_time))
42
48
  end
43
49
 
44
50
  end
@@ -75,6 +75,7 @@ class TC_FileCacheable < Test::Unit::TestCase # :nodoc: all
75
75
 
76
76
  property :name, String
77
77
  property :age, Fixnum
78
+ property :permissions, Array
78
79
  end
79
80
 
80
81
  $og1.manage_classes(User)
@@ -104,7 +105,9 @@ class TC_FileCacheable < Test::Unit::TestCase # :nodoc: all
104
105
  User.create_with :name => 'Stella'
105
106
 
106
107
  u = User[1]
107
-
108
+ u.permissions = %w[1 2 3]
109
+ u.save
110
+
108
111
  assert_equal 'George', u.name, msg
109
112
 
110
113
  # Comes from the cache.
@@ -122,6 +125,7 @@ class TC_FileCacheable < Test::Unit::TestCase # :nodoc: all
122
125
  u = User[1]
123
126
 
124
127
  assert_equal u.name, @og.cache.get(u.og_cache_key).name, msg
128
+ assert_equal %w[1 2 3], @og.cache.get(u.og_cache_key).permissions, msg
125
129
 
126
130
  u.delete
127
131
  User.delete(2)
@@ -155,7 +159,7 @@ begin
155
159
  def test_all
156
160
  Caches.each do |cache_class|
157
161
  # @og.cache = DrbCache.new(:address => Og.cache_address, :port => Og.cache_port)
158
- @og.cache = cache_class.new
162
+ @og.cache = cache_class.new(self.class, 60)
159
163
 
160
164
  msg = "Failed for cache type: #{cache_class}"
161
165
 
@@ -0,0 +1,51 @@
1
+ require File.join(File.dirname(__FILE__), 'CONFIG.rb')
2
+
3
+ require 'rubygems'
4
+ require 'facets'
5
+ require 'test/unit'
6
+ require 'og'
7
+
8
+ class TC_CamelCase < Test::Unit::TestCase # :nodoc: all
9
+ include Og
10
+
11
+ class CategoryCamelCase
12
+ property :title, String
13
+ def initialize(title)
14
+ @title = title
15
+ end
16
+ end
17
+
18
+ class ArticleCamelCase
19
+ property :title, String
20
+ joins_many CategoryCamelCase, :through => ArticleToCategory
21
+
22
+ def initialize(title)
23
+ @title = title
24
+ end
25
+ end
26
+
27
+ class ArticleToCategory
28
+ property :rate, Float
29
+ property :hits, Fixnum
30
+ has_one ArticleCamelCase
31
+ has_one CategoryCamelCase
32
+ end
33
+
34
+ def setup
35
+ $og1.manage_classes(CategoryCamelCase, ArticleCamelCase, ArticleToCategory)
36
+ end
37
+
38
+ def test_all
39
+ c1 = CategoryCamelCase.create('tech')
40
+ c2 = CategoryCamelCase.create('funny')
41
+ a = ArticleCamelCase.create('a1')
42
+ a.category_camel_cases.push(c1, :hits =>3, :rate => 2.3)
43
+ a.category_camel_cases.push(c2, :rate => 1.2)
44
+ join = a.category_camel_case_join_data(c1)
45
+ assert_equal 2.3, join.rate
46
+ assert_equal 3, join.hits
47
+ join = a.category_camel_case_join_data(c2)
48
+ assert_equal 1.2, join.rate
49
+ assert_equal nil, join.hits
50
+ end
51
+ end
@@ -28,6 +28,35 @@ class TC_ResolveOptions < Test::Unit::TestCase # :nodoc: all
28
28
  end
29
29
 
30
30
  assert_equal 2, users.size
31
+
32
+ users = User.find { |user| user.age === [14, 23] }
33
+
34
+ assert_equal 2, users.size
35
+ end
36
+ end
37
+
38
+ class TC_EZ_STI < Test::Unit::TestCase # :nodoc: all
39
+ class Person
40
+ property :name, String
41
+ property :kids, Integer
42
+ schema_inheritance
43
+ end
44
+
45
+ class Musician < Person
46
+ property :instruments, Array
47
+ end
48
+
49
+ class Plumber < Person
50
+ property :tools, Array
51
+ end
52
+
53
+ $og1.manage_classes(Person, Musician, Plumber)
54
+
55
+ def test_op_triple_equals # ===
56
+ results = nil
57
+ assert_nothing_raised do
58
+ results = Musician.find {|m| m.kids === [3,4,5]}
59
+ end
60
+ assert(results.empty?)
31
61
  end
32
-
33
62
  end
@@ -13,6 +13,9 @@ class TC_Join < Test::Unit::TestCase # :nodoc: all
13
13
 
14
14
  class Category
15
15
  property :title, String
16
+ joins_many Article
17
+ joins_many :third_join, Article, :table => :ogj_article_category_third
18
+ joins_many :fourth_join, Article, :table => :ogj_article_category_fourth
16
19
 
17
20
  def initialize(title)
18
21
  @title = title
@@ -22,7 +25,11 @@ class TC_Join < Test::Unit::TestCase # :nodoc: all
22
25
  class Article
23
26
  property :title, String
24
27
 
25
- joins_many Category, :through => ArticleToCategory
28
+ joins_many :first_join, Category, :through => ArticleToCategory
29
+ joins_many :second_join, Category, :through => ArticleToCategory
30
+ joins_many :third_join, Category, :table => :ogj_article_category_third
31
+ joins_many :fourth_join, Category, :table => :ogj_article_category_fourth
32
+ joins_many Category
26
33
 
27
34
  def initialize(title)
28
35
  @title = title
@@ -44,18 +51,78 @@ class TC_Join < Test::Unit::TestCase # :nodoc: all
44
51
  def test_all
45
52
  c1 = Category.create('tech')
46
53
  c2 = Category.create('funny')
54
+ c3 = Category.create('finance')
47
55
 
48
56
  a = Article.create('a1')
49
- a.categories.push(c1, :hits =>3, :rate => 2.3)
50
- a.categories.push(c2, :rate => 1.2)
51
-
52
- join = a.category_join_data(c1)
57
+ a2 = Article.create('a2')
58
+ a3 = Article.create('a2')
59
+
60
+ # Put the categories into seperate relations
61
+
62
+ a.first_join.push(c1, :hits =>3, :rate => 2.3)
63
+ a.second_join.push(c2, :rate => 1.2)
64
+ a.third_join << c1
65
+ a.fourth_join << c2
66
+ a2.third_join << c1
67
+ a3.fourth_join << c1
68
+
69
+ a.categories << c3
70
+
71
+ # ++ Join Through Tests
72
+
73
+ # Test that each relationship appears where it should
74
+
75
+ join = a.first_join_join_data(c1)
53
76
  assert_equal 2.3, join.rate
54
77
  assert_equal 3, join.hits
55
78
 
56
- join = a.category_join_data(c2)
79
+ join = a.second_join_join_data(c2)
57
80
  assert_equal 1.2, join.rate
58
81
  assert_equal nil, join.hits
82
+
83
+ # This feature should be available but I cannot think
84
+ # of the best way to implement it right now.
85
+
86
+ # Test that each relationship does not appears where
87
+ # it should not.
88
+
89
+ # join = a.second_join_join_data(c1)
90
+ # assert_nil(join)
91
+
92
+ # join = a.first_join_join_data(c2)
93
+ # assert_nil(join)
94
+
95
+ # join = a.first_join_join_data(c3)
96
+ # assert_nil(join)
97
+
98
+ # -- Join Through Tests
99
+
100
+ # ++ Tripple join table tests
101
+
102
+ # Test each relationship appears where it should
103
+
104
+ assert(a.third_join.include?(c1), "c1 does not appear in third join relationship")
105
+ assert(a.fourth_join.include?(c2), "c2 does not appear in fourth join relationship")
106
+ assert(a.categories.include?(c3), "c3 does not appear in categories (un-named) join relationship")
107
+
108
+ # Tests the same thing backwards
109
+
110
+ assert(c3.articles.include?(a), "article does not appear in c3 (reverse join broken)")
111
+ assert(c1.third_join.include?(a2), "a2 does not appear in c1.third_join (reverse join broken)")
112
+ assert(c1.fourth_join.include?(a3), "a3 does not appear in c1.fourth_join (reverse join broken)")
113
+ assert(!c1.third_join.include?(a3), "a3 appears in c1.third_join (reverse join broken)")
114
+
115
+ # Test that each relationship does not appears where
116
+ # it should not.
117
+
118
+ assert(!a.third_join.include?(c2), "c2 appears in third join relationship")
119
+ assert(!a.third_join.include?(c3), "c3 appears in third join relationship")
120
+ assert(!a.fourth_join.include?(c1), "c1 appears in fourth join relationship")
121
+ assert(!a.fourth_join.include?(c3), "c3 appears in fourth join relationship")
122
+ assert(!a.categories.include?(c1), "c1 appears in categories (un-named) join relationship")
123
+ assert(!a.categories.include?(c2), "c2 appears in categories (un-named) join relationship")
124
+
125
+ # -- Tripple join table tests
59
126
  end
60
127
 
61
128
  end
@@ -10,7 +10,7 @@ require 'og/validation'
10
10
  class TC_MultiValidation < Test::Unit::TestCase # :nodoc: all
11
11
 
12
12
  def test_all
13
- file = File.join(File.expand_path(File.dirname(__FILE__)), 'multi_validations_model.rb')
13
+ file = File.join(File.dirname(__FILE__), 'multi_validations_model.rb')
14
14
  load file
15
15
  assert_equal 2, TC_MultiValidation::User.validations.size
16
16
  load file
metadata CHANGED
@@ -3,13 +3,13 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: og
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.29.0
7
- date: 2006-03-07 00:00:00 +02:00
6
+ version: 0.30.0
7
+ date: 2006-05-05 00:00:00 +03:00
8
8
  summary: State of the art object-relational mapping system.
9
9
  require_paths:
10
10
  - lib
11
11
  email: gm@navel.gr
12
- homepage: http://www.nitrohq.com
12
+ homepage: http://www.nitroproject.org
13
13
  rubyforge_project: nitro
14
14
  description:
15
15
  autorequire:
@@ -22,115 +22,115 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
22
22
  - !ruby/object:Gem::Version
23
23
  version: 0.0.0
24
24
  version:
25
- platform: ruby
25
+ platform:
26
26
  signing_key:
27
27
  cert_chain:
28
28
  authors:
29
29
  - George Moschovitis
30
30
  files:
31
+ - ProjectInfo
32
+ - INSTALL
33
+ - README
31
34
  - doc
32
35
  - examples
33
36
  - lib
34
37
  - test
35
- - ProjectInfo
36
- - Rakefile
37
- - README
38
38
  - setup.rb
39
- - INSTALL
40
- - doc/tutorial.txt
41
- - doc/config.txt
42
- - doc/RELEASES
43
- - doc/LICENSE
44
39
  - doc/CHANGELOG.1
45
40
  - doc/AUTHORS
46
- - examples/run.rb
41
+ - doc/tutorial.txt
42
+ - doc/LICENSE
43
+ - doc/RELEASES
44
+ - doc/config.txt
47
45
  - examples/README
46
+ - examples/run.rb
48
47
  - examples/mysql_to_psql.rb
49
48
  - lib/og
50
49
  - lib/glue
51
50
  - lib/og.rb
52
51
  - lib/og/ez
52
+ - lib/og/collection.rb
53
+ - lib/og/entity.rb
54
+ - lib/og/errors.rb
55
+ - lib/og/evolution.rb
56
+ - lib/og/manager.rb
53
57
  - lib/og/relation
54
58
  - lib/og/store
59
+ - lib/og/relation.rb
55
60
  - lib/og/test
61
+ - lib/og/store.rb
56
62
  - lib/og/vendor
57
- - lib/og/validation.rb
58
- - lib/og/types.rb
59
63
  - lib/og/test.rb
60
- - lib/og/store.rb
61
- - lib/og/relation.rb
62
- - lib/og/manager.rb
63
- - lib/og/evolution.rb
64
- - lib/og/errors.rb
65
- - lib/og/entity.rb
66
- - lib/og/collection.rb
64
+ - lib/og/types.rb
67
65
  - lib/og/markers.rb
66
+ - lib/og/validation.rb
68
67
  - lib/og/ez/condition.rb
69
68
  - lib/og/ez/clause.rb
69
+ - lib/og/relation/all.rb
70
70
  - lib/og/relation/many_to_many.rb
71
- - lib/og/relation/refers_to.rb
72
- - lib/og/relation/joins_many.rb
73
- - lib/og/relation/has_one.rb
74
- - lib/og/relation/has_many.rb
75
71
  - lib/og/relation/belongs_to.rb
76
- - lib/og/relation/all.rb
72
+ - lib/og/relation/has_many.rb
73
+ - lib/og/relation/has_one.rb
74
+ - lib/og/relation/joins_many.rb
75
+ - lib/og/relation/refers_to.rb
77
76
  - lib/og/store/alpha
78
- - lib/og/store/sqlite.rb
79
- - lib/og/store/sql.rb
80
- - lib/og/store/psql.rb
81
- - lib/og/store/mysql.rb
82
77
  - lib/og/store/kirby.rb
78
+ - lib/og/store/mysql.rb
79
+ - lib/og/store/psql.rb
80
+ - lib/og/store/sql.rb
81
+ - lib/og/store/sqlite.rb
83
82
  - lib/og/store/sqlite2.rb
84
83
  - lib/og/store/alpha/sqlserver.rb
85
- - lib/og/store/alpha/memory.rb
86
84
  - lib/og/store/alpha/filesys.rb
87
- - lib/og/test/testcase.rb
85
+ - lib/og/store/alpha/memory.rb
88
86
  - lib/og/test/assertions.rb
87
+ - lib/og/test/testcase.rb
89
88
  - lib/og/vendor/mysql.rb
90
89
  - lib/og/vendor/README
91
- - lib/glue/taggable.rb
92
- - lib/glue/tree.rb
93
90
  - lib/glue/hierarchical.rb
94
- - lib/glue/timestamped.rb
95
- - lib/glue/revisable.rb
96
91
  - lib/glue/orderable.rb
97
92
  - lib/glue/optimistic_locking.rb
93
+ - lib/glue/revisable.rb
94
+ - lib/glue/taggable.rb
95
+ - lib/glue/timestamped.rb
96
+ - lib/glue/tree.rb
98
97
  - lib/glue/searchable.rb
99
98
  - lib/glue/cacheable.rb
100
99
  - test/og
101
100
  - test/glue
102
101
  - test/og/mixin
102
+ - test/og/CONFIG.rb
103
103
  - test/og/store
104
104
  - test/og/tc_delete_all.rb
105
- - test/og/tc_types.rb
106
- - test/og/tc_store.rb
107
- - test/og/tc_select.rb
108
- - test/og/tc_reverse.rb
109
- - test/og/tc_relation.rb
105
+ - test/og/tc_inheritance.rb
106
+ - test/og/tc_join.rb
107
+ - test/og/tc_multiple.rb
110
108
  - test/og/tc_override.rb
111
109
  - test/og/tc_polymorphic.rb
112
- - test/og/tc_multiple.rb
113
- - test/og/tc_join.rb
114
- - test/og/tc_inheritance.rb
115
- - test/og/CONFIG.rb
116
- - test/og/tc_scoped.rb
110
+ - test/og/tc_relation.rb
111
+ - test/og/tc_reverse.rb
112
+ - test/og/tc_select.rb
113
+ - test/og/tc_store.rb
114
+ - test/og/tc_types.rb
117
115
  - test/og/tc_finder.rb
116
+ - test/og/tc_scoped.rb
118
117
  - test/og/tc_validation.rb
119
118
  - test/og/tc_accumulator.rb
120
119
  - test/og/tc_inheritance2.rb
121
120
  - test/og/tc_validation2.rb
122
- - test/og/tc_validation_loop.rb
123
- - test/og/tc_cacheable.rb
124
121
  - test/og/tc_multi_validations.rb
122
+ - test/og/tc_cacheable.rb
123
+ - test/og/tc_validation_loop.rb
125
124
  - test/og/tc_resolve.rb
126
125
  - test/og/multi_validations_model.rb
127
126
  - test/og/tc_ez.rb
128
127
  - test/og/tc_aggregations_calculations.rb
129
- - test/og/mixin/tc_timestamped.rb
130
- - test/og/mixin/tc_taggable.rb
131
- - test/og/mixin/tc_orderable.rb
128
+ - test/og/tc_camel_case_join.rb
132
129
  - test/og/mixin/tc_hierarchical.rb
130
+ - test/og/mixin/tc_orderable.rb
133
131
  - test/og/mixin/tc_optimistic_locking.rb
132
+ - test/og/mixin/tc_taggable.rb
133
+ - test/og/mixin/tc_timestamped.rb
134
134
  - test/og/store/tc_filesys.rb
135
135
  - test/og/store/tc_kirby.rb
136
136
  - test/og/store/tc_sti.rb
@@ -155,5 +155,5 @@ dependencies:
155
155
  requirements:
156
156
  - - "="
157
157
  - !ruby/object:Gem::Version
158
- version: 0.29.0
158
+ version: 0.30.0
159
159
  version: