og 0.29.0 → 0.30.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: