Rubernate 0.1.4 → 0.1.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/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:
|