Rubernate 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rubernate/callbacks.rb +1 -2
- data/lib/rubernate/impl/dbi_generic.rb +39 -33
- data/lib/rubernate/impl/dbi_mysql.rb +1 -0
- data/lib/rubernate/impl/dbi_oracle.rb +1 -3
- data/lib/rubernate/impl/dbi_pg.rb +33 -0
- data/lib/rubernate/impl/memory.rb +13 -7
- data/lib/rubernate/init/init_generic.rb +25 -0
- data/lib/rubernate/init/init_mysql.rb +8 -14
- data/lib/rubernate/init/init_oracle.rb +9 -16
- data/lib/rubernate/init/init_pg.rb +78 -0
- data/lib/rubernate/queries.rb +341 -339
- data/lib/rubernate/runtime.rb +18 -0
- data/lib/rubernate.rb +33 -10
- data/tests/all_tests.rb +5 -0
- data/tests/config.rb +18 -8
- data/tests/rubernate/callbacks_test.rb +20 -0
- data/tests/rubernate/fixtures.rb +1 -1
- data/tests/rubernate/impl/dbi_generic_stub.rb +48 -44
- data/tests/rubernate/impl/dbi_oracle_test.rb +15 -10
- data/tests/rubernate/impl/dbi_pg_test.rb +23 -0
- data/tests/rubernate/impl/memory_test.rb +8 -8
- data/tests/rubernate/impl/queries_oracle_test.rb +0 -1
- data/tests/rubernate/impl/queries_pg_test.rb +14 -0
- data/tests/rubernate/impl/queries_stub.rb +18 -0
- data/tests/rubernate/queries_test.rb +2 -2
- metadata +7 -2
data/lib/rubernate/runtime.rb
CHANGED
@@ -184,6 +184,24 @@ module Rubernate
|
|
184
184
|
raise "method MUST be overiden in subclass"
|
185
185
|
end
|
186
186
|
|
187
|
+
# Checks wether ref_obj has been deleted and calls on_lose_ref callback on obj if so.
|
188
|
+
def ref_lost? obj, ref_prop, ref_obj
|
189
|
+
return true unless ref_obj
|
190
|
+
return false unless ref_obj.removed?
|
191
|
+
obj.on_lose_ref ref_prop, ref_obj
|
192
|
+
true
|
193
|
+
end
|
194
|
+
|
195
|
+
# Removes removed refs fom Hash
|
196
|
+
def ref_lost_hash obj, name, hash
|
197
|
+
hash.delete_if {|key, ref| ref_lost? obj, name, ref}
|
198
|
+
end
|
199
|
+
|
200
|
+
# Removes removed refs fom Array
|
201
|
+
def ref_lost_array obj, name, array
|
202
|
+
array.delete_if {|ref| !ref or ref_lost? obj, name, ref}
|
203
|
+
end
|
204
|
+
|
187
205
|
def post_load object
|
188
206
|
for value in object.peer.values
|
189
207
|
value.compact! if value.is_a? Array
|
data/lib/rubernate.rb
CHANGED
@@ -35,14 +35,8 @@ module Rubernate
|
|
35
35
|
require 'rubernate/callbacks'
|
36
36
|
require 'rubernate/persistent'
|
37
37
|
require 'rubernate/peer'
|
38
|
-
require 'rubernate/runtime'
|
39
|
-
require 'rubernate/impl/dbi_generic'
|
38
|
+
require 'rubernate/runtime'
|
40
39
|
require 'rubernate/queries'
|
41
|
-
require 'rubernate/impl/memory'
|
42
|
-
require 'rubernate/impl/dbi_mysql'
|
43
|
-
require 'rubernate/impl/dbi_oracle'
|
44
|
-
require 'rubernate/init/init_mysql'
|
45
|
-
require 'rubernate/init/init_oracle'
|
46
40
|
|
47
41
|
# Rubernate core singelton methods.
|
48
42
|
class << self
|
@@ -60,13 +54,42 @@ module Rubernate
|
|
60
54
|
# * password - databases users password
|
61
55
|
def config db, url, user, password
|
62
56
|
impl, init = case db
|
63
|
-
when :mysql:
|
64
|
-
when :oracle:
|
57
|
+
when :mysql : require_mysql
|
58
|
+
when :oracle: require_oracle
|
59
|
+
when :pg : require_pg
|
60
|
+
when :memory: require_memory
|
65
61
|
else raise "Database #{db} not supported"
|
66
|
-
end
|
62
|
+
end
|
67
63
|
self.configuration = DBI::Configuration.new impl, init, url, user, password
|
68
64
|
end
|
69
65
|
|
66
|
+
# Loads MySQL module
|
67
|
+
def require_mysql
|
68
|
+
require 'rubernate/impl/dbi_mysql'
|
69
|
+
require 'rubernate/init/init_mysql'
|
70
|
+
[DBI::MySqlRuntime, DBI::MySqlInit.new]
|
71
|
+
end
|
72
|
+
|
73
|
+
# Loads Oracle module
|
74
|
+
def require_oracle
|
75
|
+
require 'rubernate/impl/dbi_oracle'
|
76
|
+
require 'rubernate/init/init_oracle'
|
77
|
+
[DBI::OracleRuntime, DBI::OracleInit.new]
|
78
|
+
end
|
79
|
+
|
80
|
+
# Loads Postgres module
|
81
|
+
def require_pg
|
82
|
+
require 'rubernate/impl/dbi_pg'
|
83
|
+
require 'rubernate/init/init_pg'
|
84
|
+
[DBI::PgRuntime, DBI::PgInit.new]
|
85
|
+
end
|
86
|
+
|
87
|
+
# Loads Memory module used only for testing
|
88
|
+
def require_memory
|
89
|
+
require 'rubernate/impl/memory'
|
90
|
+
Memory::Runtime
|
91
|
+
end
|
92
|
+
|
70
93
|
# Intializes database - creates necessary tables, sequences and indices.
|
71
94
|
def init_db
|
72
95
|
@factory.init_db
|
data/tests/all_tests.rb
CHANGED
data/tests/config.rb
CHANGED
@@ -1,19 +1,29 @@
|
|
1
|
-
# Set to true to run tests
|
2
|
-
$run_oracle_tests
|
1
|
+
# Set to true to run tests on Oracle
|
2
|
+
$run_oracle_tests = false
|
3
3
|
|
4
|
-
ORA_RUNTIME_CLASS
|
5
|
-
ORA_DB_URL
|
6
|
-
ORA_DB_USER
|
7
|
-
ORA_DB_PWD
|
4
|
+
ORA_RUNTIME_CLASS = Rubernate.require_oracle[0]
|
5
|
+
ORA_DB_URL = 'dbi:OCI8:dbg91'
|
6
|
+
ORA_DB_USER = 'netcracker65'
|
7
|
+
ORA_DB_PWD = 'netcracker65'
|
8
8
|
|
9
9
|
# Set to true to run tests on MySQL
|
10
|
-
$run_mysql_tests
|
10
|
+
$run_mysql_tests = false
|
11
11
|
|
12
|
-
MYSQL_RUNTIME_CLASS = Rubernate
|
12
|
+
MYSQL_RUNTIME_CLASS = Rubernate.require_mysql[0]
|
13
13
|
MYSQL_DB_URL = 'dbi:Mysql:rubernate_db:localhost'
|
14
14
|
MYSQL_DB_USER = nil
|
15
15
|
MYSQL_DB_PWD = nil
|
16
16
|
|
17
|
+
# Set to true to run tests on PostgreSQL
|
18
|
+
$run_pg_tests = false
|
19
|
+
|
20
|
+
PG_RUNTIME_CLASS = Rubernate.require_pg[0]
|
21
|
+
PG_DB_URL = 'dbi:Pg:rubernate_db'
|
22
|
+
PG_DB_USER = 'rn_test'
|
23
|
+
PG_DB_PWD = 'rn_password'
|
24
|
+
|
25
|
+
Rubernate.require_memory
|
26
|
+
|
17
27
|
# Log4r configuration
|
18
28
|
Rubernate::Log.level = Log4r::DEBUG
|
19
29
|
Rubernate::Log.add Log4r::FileOutputter.new('file',
|
@@ -45,6 +45,11 @@ module Rubernate
|
|
45
45
|
Callbacks.handlers << :on_modify
|
46
46
|
Callbacks.events << Event.new(self, property, old_value, new_value)
|
47
47
|
end
|
48
|
+
|
49
|
+
def on_lose_ref property, ref_obj
|
50
|
+
Callbacks.handlers << :on_lose_ref
|
51
|
+
Callbacks.events << Event.new(self, property, ref_obj)
|
52
|
+
end
|
48
53
|
end
|
49
54
|
|
50
55
|
# This module contains callback method and included in module Rubernate::Runtime
|
@@ -116,5 +121,20 @@ module Rubernate
|
|
116
121
|
:on_modify, :on_modify, :before_flush, :on_save,
|
117
122
|
:after_flush, :after_commit], Callbacks.handlers
|
118
123
|
end
|
124
|
+
|
125
|
+
def test_lose_ref_callbacks
|
126
|
+
pk1, pk2 = nil
|
127
|
+
Rubernate.session do
|
128
|
+
o1 = Full.new.attach; pk1 = o1.primary_key
|
129
|
+
o2 = C1.new.attach; pk2 = o2.primary_key
|
130
|
+
o1.p_ref = o2
|
131
|
+
o1.p_array = [o2]
|
132
|
+
o1.p_hash = {'key' => o2}
|
133
|
+
o2.remove!
|
134
|
+
Callbacks.clear
|
135
|
+
end
|
136
|
+
assert_equal [:before_commit, :before_flush, :on_save, :on_lose_ref,
|
137
|
+
:on_lose_ref, :on_lose_ref, :after_flush, :after_commit], Callbacks.handlers
|
138
|
+
end
|
119
139
|
end
|
120
140
|
end
|
data/tests/rubernate/fixtures.rb
CHANGED
@@ -33,7 +33,7 @@ module FixtureClasses
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
class Full
|
36
|
-
persistent :p_nil, :p_int, :p_float, :p_str, :p_date, :p_time, :p_array, :p_hash
|
36
|
+
persistent :p_nil, :p_int, :p_float, :p_str, :p_date, :p_time, :p_ref, :p_array, :p_hash
|
37
37
|
def to_s
|
38
38
|
"#{self.class}:#{primary_key}"
|
39
39
|
end
|
@@ -74,12 +74,12 @@ module DBI::GenericTests
|
|
74
74
|
@runtime.save o
|
75
75
|
rows = @runtime.dbh.select_all 'select * from r_params'
|
76
76
|
assert_equal 1, rows.size
|
77
|
-
assert_equal o.primary_key, rows[0][
|
78
|
-
assert_equal PARAM_FLAG_STRING, rows[0][
|
79
|
-
assert_nil rows[0][
|
80
|
-
assert_equal 'test', rows[0][
|
81
|
-
assert_nil rows[0][
|
82
|
-
assert_nil rows[0][
|
77
|
+
assert_equal o.primary_key, rows[0][P_PK].to_i
|
78
|
+
assert_equal PARAM_FLAG_STRING, rows[0][P_FLAGS].to_i
|
79
|
+
assert_nil rows[0][P_INT]
|
80
|
+
assert_equal 'test', rows[0][P_STR]
|
81
|
+
assert_nil rows[0][P_TIME]
|
82
|
+
assert_nil rows[0][P_REF]
|
83
83
|
end
|
84
84
|
|
85
85
|
def test_save_param_int
|
@@ -88,12 +88,14 @@ module DBI::GenericTests
|
|
88
88
|
@runtime.save o
|
89
89
|
rows = @runtime.dbh.select_all 'select * from r_params'
|
90
90
|
assert_equal 1, rows.size
|
91
|
-
assert_equal o.primary_key, rows[0][
|
92
|
-
assert_equal PARAM_FLAG_INT, rows[0][
|
93
|
-
assert_equal
|
94
|
-
|
95
|
-
assert_nil rows[0][
|
96
|
-
assert_nil rows[0][
|
91
|
+
assert_equal o.primary_key, rows[0][P_PK].to_i
|
92
|
+
assert_equal PARAM_FLAG_INT, rows[0][P_FLAGS].to_i
|
93
|
+
assert_equal 'p1', rows[0][P_NAME]
|
94
|
+
assert_equal 777, rows[0][P_INT].to_i
|
95
|
+
assert_nil rows[0][P_FLT]
|
96
|
+
assert_nil rows[0][P_STR]
|
97
|
+
assert_nil rows[0][P_TIME]
|
98
|
+
assert_nil rows[0][P_REF]
|
97
99
|
end
|
98
100
|
|
99
101
|
def test_save_param_ref
|
@@ -105,12 +107,12 @@ module DBI::GenericTests
|
|
105
107
|
|
106
108
|
rows = @runtime.dbh.select_all 'select * from r_params'
|
107
109
|
assert_equal 1, rows.size
|
108
|
-
assert_equal o1.primary_key, rows[0][
|
109
|
-
assert_equal PARAM_FLAG_REF, rows[0][
|
110
|
-
assert_nil rows[0][
|
111
|
-
assert_nil rows[0][
|
112
|
-
assert_nil rows[0][
|
113
|
-
assert_equal o0.primary_key, rows[0][
|
110
|
+
assert_equal o1.primary_key, rows[0][P_PK].to_i
|
111
|
+
assert_equal PARAM_FLAG_REF, rows[0][P_FLAGS].to_i
|
112
|
+
assert_nil rows[0][P_INT]
|
113
|
+
assert_nil rows[0][P_STR]
|
114
|
+
assert_nil rows[0][P_TIME]
|
115
|
+
assert_equal o0.primary_key, rows[0][P_REF].to_i
|
114
116
|
end
|
115
117
|
|
116
118
|
def test_save_param_int_hash
|
@@ -127,13 +129,13 @@ module DBI::GenericTests
|
|
127
129
|
rows = @runtime.dbh.select_all 'select * from r_params order by int_value'
|
128
130
|
assert_equal 10, rows.size
|
129
131
|
for row in rows
|
130
|
-
assert_equal o.primary_key, row[
|
131
|
-
assert_equal PARAM_FLAG_INT | PARAM_FLAG_HASH, row[
|
132
|
-
assert hash.has_key?(row[
|
132
|
+
assert_equal o.primary_key, row[P_PK].to_i
|
133
|
+
assert_equal PARAM_FLAG_INT | PARAM_FLAG_HASH, row[P_FLAGS].to_i
|
134
|
+
assert hash.has_key?(row[P_INT].to_i)
|
133
135
|
assert_nil row['FLT_VALUE']
|
134
|
-
assert_nil row[
|
135
|
-
assert_nil row[
|
136
|
-
assert_equal hash[row[
|
136
|
+
assert_nil row[P_STR]
|
137
|
+
assert_nil row[P_TIME]
|
138
|
+
assert_equal hash[row[P_INT].to_i].primary_key, row[P_REF].to_i
|
137
139
|
end
|
138
140
|
end
|
139
141
|
|
@@ -154,22 +156,22 @@ module DBI::GenericTests
|
|
154
156
|
assert_equal 2, rows.size
|
155
157
|
|
156
158
|
for row in rows
|
157
|
-
if row[
|
158
|
-
assert_equal o.primary_key, row[
|
159
|
-
assert hash.has_key?(row[
|
159
|
+
if row[P_FLAGS].to_i == HASH_INT_REF
|
160
|
+
assert_equal o.primary_key, row[P_PK].to_i
|
161
|
+
assert hash.has_key?(row[P_INT].to_i)
|
160
162
|
assert_nil row['FLT_VALUE']
|
161
|
-
assert_nil row[
|
162
|
-
assert_nil row[
|
163
|
-
assert_equal hash[row[
|
164
|
-
elsif row[
|
165
|
-
assert_equal o.primary_key, row[
|
166
|
-
assert_nil row[
|
163
|
+
assert_nil row[P_STR]
|
164
|
+
assert_nil row[P_TIME]
|
165
|
+
assert_equal hash[row[P_INT].to_i].primary_key, row[P_REF].to_i
|
166
|
+
elsif row[P_FLAGS].to_i == HASH_STRING_REF
|
167
|
+
assert_equal o.primary_key, row[P_PK].to_i
|
168
|
+
assert_nil row[P_INT]
|
167
169
|
assert_nil row['FLT_VALUE']
|
168
|
-
assert hash.has_key?(row[
|
169
|
-
assert_nil row[
|
170
|
-
assert_equal hash[row[
|
170
|
+
assert hash.has_key?(row[P_STR])
|
171
|
+
assert_nil row[P_TIME]
|
172
|
+
assert_equal hash[row[P_STR]].primary_key, row[P_REF].to_i
|
171
173
|
else
|
172
|
-
flunk
|
174
|
+
flunk "Invalid flags: #{row[P_FLAGS]}"
|
173
175
|
end
|
174
176
|
end
|
175
177
|
end
|
@@ -190,13 +192,13 @@ module DBI::GenericTests
|
|
190
192
|
assert_equal 10, rows.size
|
191
193
|
for i in 0..9
|
192
194
|
row = rows[i]
|
193
|
-
assert_equal o.primary_key, row[
|
194
|
-
assert_equal 'p1', row[
|
195
|
-
assert_equal ARRAY_INT_REF, row[
|
196
|
-
assert_equal i, row[
|
197
|
-
assert_nil row[
|
198
|
-
assert_nil row[
|
199
|
-
assert_equal array[row[
|
195
|
+
assert_equal o.primary_key, row[P_PK].to_i
|
196
|
+
assert_equal 'p1', row[P_NAME]
|
197
|
+
assert_equal ARRAY_INT_REF, row[P_FLAGS].to_i
|
198
|
+
assert_equal i, row[P_INT].to_i
|
199
|
+
assert_nil row[P_STR]
|
200
|
+
assert_nil row[P_TIME]
|
201
|
+
assert_equal array[row[P_INT].to_i].primary_key, row[P_REF].to_i
|
200
202
|
end
|
201
203
|
end
|
202
204
|
|
@@ -361,6 +363,7 @@ module DBI::GenericTests
|
|
361
363
|
o.p_str = 'Test String'
|
362
364
|
o.p_time = time
|
363
365
|
o.p_date = date
|
366
|
+
o.p_ref = o
|
364
367
|
o.p_array = [o, o, o]
|
365
368
|
o.p_hash = {nil => o,
|
366
369
|
777 => o,
|
@@ -378,6 +381,7 @@ module DBI::GenericTests
|
|
378
381
|
assert_equal 'Test String', o.p_str
|
379
382
|
assert_equal time.to_a[0..5], o.p_time.to_a[0..5] # Ignore time zone
|
380
383
|
assert_equal date, o.p_date # Ignore time zone
|
384
|
+
assert_equal o, o.p_ref
|
381
385
|
assert_equal [o, o, o], o.p_array
|
382
386
|
assert_equal 6, o.p_hash.size
|
383
387
|
|
@@ -4,16 +4,21 @@ $:.unshift(File.expand_path('../../..', __FILE__)) unless
|
|
4
4
|
require 'rubernate/fixtures'
|
5
5
|
require 'rubernate/impl/dbi_generic_stub'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
|
8
|
+
module Rubernate
|
9
|
+
module DBI
|
10
|
+
class OracleTest < Test::Unit::TestCase
|
11
|
+
include Rubernate::DBI::GenericTests
|
12
|
+
def setup
|
13
|
+
init ORA_RUNTIME_CLASS, ORA_DB_URL, ORA_DB_USER, ORA_DB_PWD
|
14
|
+
end
|
11
15
|
end
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
|
17
|
+
class OracleRuntimeTest < Test::Unit::TestCase
|
18
|
+
include Rubernate::GenericRuntimeTests
|
19
|
+
def setup
|
20
|
+
init ORA_RUNTIME_CLASS, ORA_DB_URL, ORA_DB_USER, ORA_DB_PWD
|
21
|
+
end
|
18
22
|
end
|
19
23
|
end
|
24
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
$:.unshift(File.expand_path('../../..', __FILE__)) unless
|
2
|
+
$:.include?(File.expand_path('../../..', __FILE__))
|
3
|
+
|
4
|
+
require 'rubernate/fixtures'
|
5
|
+
require 'rubernate/impl/dbi_generic_stub'
|
6
|
+
|
7
|
+
module Rubernate
|
8
|
+
module DBI
|
9
|
+
class PgTest < Test::Unit::TestCase
|
10
|
+
include Rubernate::DBI::GenericTests
|
11
|
+
def setup
|
12
|
+
init PG_RUNTIME_CLASS, PG_DB_URL, PG_DB_USER, PG_DB_PWD
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class PgRuntimeTest < Test::Unit::TestCase
|
17
|
+
include Rubernate::GenericRuntimeTests
|
18
|
+
def setup
|
19
|
+
init PG_RUNTIME_CLASS, PG_DB_URL, PG_DB_USER, PG_DB_PWD
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -124,35 +124,35 @@ class Rubernate::Memory::RuntimeTest < Test::Unit::TestCase
|
|
124
124
|
def test_save_peer
|
125
125
|
obj, obj.peer = C4.new(1), Peer.new
|
126
126
|
obj.p1, obj.p2 = 2, [C4.new(2)]
|
127
|
-
data = @runtime.save_peer obj
|
127
|
+
data = @runtime.save_peer obj
|
128
128
|
assert_equal({:p1 => 2, :p2 => [ref(2, C4)]}, data)
|
129
129
|
end
|
130
130
|
|
131
131
|
def test_save_param_simple
|
132
|
-
p = @runtime.save_param "test"
|
132
|
+
p = @runtime.save_param nil, nil, "test"
|
133
133
|
assert_equal "test", p
|
134
134
|
|
135
|
-
p = @runtime.save_param 1
|
135
|
+
p = @runtime.save_param nil, nil, 1
|
136
136
|
assert_equal 1, p
|
137
137
|
|
138
|
-
p = @runtime.save_param C4.new(3)
|
138
|
+
p = @runtime.save_param nil, nil, C4.new(3)
|
139
139
|
assert_equal Reference, p.class
|
140
140
|
assert_equal 3, p.primary_key
|
141
141
|
assert_equal C4, p.object_class
|
142
142
|
end
|
143
143
|
|
144
144
|
def test_save_param_array
|
145
|
-
p = @runtime.save_param [C4.new(1), C4.new(2)]
|
145
|
+
p = @runtime.save_param nil, nil, [C4.new(1), C4.new(2)]
|
146
146
|
assert_equal [ref(1, C4), ref(2, C4)], p
|
147
|
-
p = @runtime.save_param []
|
147
|
+
p = @runtime.save_param nil, nil, []
|
148
148
|
assert_equal [], p
|
149
149
|
end
|
150
150
|
|
151
151
|
def test_save_param_hash
|
152
|
-
p = @runtime.save_param
|
152
|
+
p = @runtime.save_param nil, nil, 'k1' => C4.new(1), 2 => C4.new(2)
|
153
153
|
assert_equal({'k1' => ref(1, C4), 2 => ref(2, C4)}, p)
|
154
154
|
assert_not_equal({'k1' => ref(2, C4), 2 => ref(2, C4)}, p)
|
155
|
-
p = @runtime.save_param({})
|
155
|
+
p = @runtime.save_param nil, nil, ({})
|
156
156
|
assert_equal({}, p)
|
157
157
|
end
|
158
158
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
$:.unshift(File.expand_path('../../..', __FILE__)) unless
|
2
|
+
$:.include?(File.expand_path('../../..', __FILE__))
|
3
|
+
|
4
|
+
require 'rubernate/fixtures'
|
5
|
+
require 'rubernate/impl/queries_stub'
|
6
|
+
|
7
|
+
module Rubernate
|
8
|
+
class PgQueriesTest < Test::Unit::TestCase
|
9
|
+
include GenericQueriesTest
|
10
|
+
def setup
|
11
|
+
init :pg, PG_DB_URL, PG_DB_USER, PG_DB_PWD
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -68,5 +68,23 @@ module GenericQueriesTest
|
|
68
68
|
assert_equal [o1], res
|
69
69
|
end
|
70
70
|
end
|
71
|
+
|
72
|
+
def test_or_and_not_nil
|
73
|
+
Rubernate.session do
|
74
|
+
o1, o2, o3 = C2.new.attach, C2.new.attach, C2.new.attach
|
75
|
+
o1.p1, o1.p2 = 1, 2
|
76
|
+
o2.p1, o2.p2 = 1, 3
|
77
|
+
o3.p2 = 4
|
78
|
+
|
79
|
+
res = find_by_query 'Select :o; Where o.p1.int == 1; OrderBy o.p2.int'
|
80
|
+
assert_equal [o1, o2], res
|
81
|
+
|
82
|
+
# res = find_by_query 'Select :o; Where IsNil(o.p1)' TODO: fix this!!!
|
83
|
+
# assert_equal [o3], res
|
84
|
+
|
85
|
+
res = find_by_query 'Select :o; Where Or(o.p2.int == 3, o.p2.int == 4); OrderBy o.p2.int'
|
86
|
+
assert_equal [o2, o3], res
|
87
|
+
end
|
88
|
+
end
|
71
89
|
end
|
72
90
|
end
|
@@ -169,8 +169,8 @@ module Rubernate
|
|
169
169
|
end
|
170
170
|
|
171
171
|
def test_eq_equivalence
|
172
|
-
q0 = query {Select :o; Where o.p1 == :ref}
|
173
|
-
q1 = query {Select :o; Where Eq(o.p1, :ref)}
|
172
|
+
q0 = query {Select :o; Where o.p1.ref == :ref}
|
173
|
+
q1 = query {Select :o; Where Eq(o.p1.ref, :ref)}
|
174
174
|
assert_equal q0.to_sql, q1.to_sql
|
175
175
|
assert_equal q0.markers, q1.markers
|
176
176
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: Rubernate
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2006-03-
|
6
|
+
version: 0.1.5
|
7
|
+
date: 2006-03-20 00:00:00 +03:00
|
8
8
|
summary: Object-oriented storage for Ruby objects based on relational database model
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -41,9 +41,12 @@ files:
|
|
41
41
|
- lib/rubernate/impl/dbi_generic.rb
|
42
42
|
- lib/rubernate/impl/dbi_mysql.rb
|
43
43
|
- lib/rubernate/impl/dbi_oracle.rb
|
44
|
+
- lib/rubernate/impl/dbi_pg.rb
|
44
45
|
- lib/rubernate/impl/memory.rb
|
46
|
+
- lib/rubernate/init/init_generic.rb
|
45
47
|
- lib/rubernate/init/init_mysql.rb
|
46
48
|
- lib/rubernate/init/init_oracle.rb
|
49
|
+
- lib/rubernate/init/init_pg.rb
|
47
50
|
- tests/all_tests.rb
|
48
51
|
- tests/config.rb
|
49
52
|
- tests/README
|
@@ -57,9 +60,11 @@ files:
|
|
57
60
|
- tests/rubernate/impl/dbi_generic_stub.rb
|
58
61
|
- tests/rubernate/impl/dbi_mysql_test.rb
|
59
62
|
- tests/rubernate/impl/dbi_oracle_test.rb
|
63
|
+
- tests/rubernate/impl/dbi_pg_test.rb
|
60
64
|
- tests/rubernate/impl/memory_test.rb
|
61
65
|
- tests/rubernate/impl/queries_mysql_test.rb
|
62
66
|
- tests/rubernate/impl/queries_oracle_test.rb
|
67
|
+
- tests/rubernate/impl/queries_pg_test.rb
|
63
68
|
- tests/rubernate/impl/queries_stub.rb
|
64
69
|
- README
|
65
70
|
test_files:
|