ribs 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,21 +20,68 @@ Ribs::DB.define do |db|
20
20
  db.dialect = 'Derby'
21
21
  db.uri = 'jdbc:derby:test_database;create=true'
22
22
  db.driver = 'org.apache.derby.jdbc.EmbeddedDriver'
23
+ db.default = true
23
24
  # db.properties['hibernate.show_sql'] = 'true'
24
25
  end
25
26
 
27
+ Ribs::DB.define(:flarg) do |db|
28
+ db.dialect = 'Derby'
29
+ db.uri = 'jdbc:derby:test_database_flarg;create=true'
30
+ db.driver = 'org.apache.derby.jdbc.EmbeddedDriver'
31
+ end
32
+
33
+ Ribs::DB.define(:flurg) do |db|
34
+ db.dialect = 'Derby'
35
+ db.uri = 'jdbc:derby:test_database_flurg;create=true'
36
+ db.driver = 'org.apache.derby.jdbc.EmbeddedDriver'
37
+ end
38
+
26
39
  def reset_database!
27
- Ribs.with_session do |s|
28
- s.ddl "DROP TABLE DB_TRACK" rescue nil
29
- s.ddl "DROP TABLE ARTIST" rescue nil
40
+ Ribs.with_handle(:flarg) do |h|
41
+ h.ddl "DROP TABLE FAKEMODEL" rescue nil
42
+ h.ddl "DROP TABLE FAKEMODEL_FAKESECONDMODEL" rescue nil
43
+ h.ddl <<SQL
44
+ CREATE TABLE FAKEMODEL (
45
+ ID INT NOT NULL
46
+ )
47
+ SQL
48
+ h.ddl <<SQL
49
+ CREATE TABLE FAKEMODEL_FAKESECONDMODEL (
50
+ ID INT NOT NULL
51
+ )
52
+ SQL
53
+ end
54
+
55
+ Ribs.with_handle(:flurg) do |h|
56
+ h.ddl "DROP TABLE FAKEMODEL" rescue nil
57
+ h.ddl "DROP TABLE FAKEMODEL_FAKESECONDMODEL" rescue nil
58
+ h.ddl <<SQL
59
+ CREATE TABLE FAKEMODEL (
60
+ ID INT NOT NULL
61
+ )
62
+ SQL
63
+ h.ddl <<SQL
64
+ CREATE TABLE FAKEMODEL_FAKESECONDMODEL (
65
+ ID INT NOT NULL
66
+ )
67
+ SQL
68
+ end
69
+
70
+ Ribs.with_handle do |h|
71
+ h.ddl "DROP TABLE DB_TRACK" rescue nil
72
+ h.ddl "DROP TABLE ARTIST" rescue nil
73
+ h.ddl "DROP TABLE person" rescue nil
74
+ h.ddl "DROP TABLE address" rescue nil
75
+ h.ddl "DROP TABLE FAKEMODEL" rescue nil
76
+ h.ddl "DROP TABLE FAKEMODEL_FAKESECONDMODEL" rescue nil
30
77
 
31
78
  # GENERATED ALWAYS AS IDENTITY
32
79
  # Add new columns for TIMESTAMP, BINARY, DECIMAL, FLOAT, BOOLEAN
33
- s.ddl <<SQL
80
+ h.ddl <<SQL
34
81
  CREATE TABLE DB_TRACK (
35
82
  TRACK_ID INT NOT NULL,
36
83
  title VARCHAR(255) NOT NULL,
37
- filePath VARCHAR(255),
84
+ filePath VARCHAR(255) NOT NULL,
38
85
  playTime TIME,
39
86
  added DATE,
40
87
  volume INT NOT NULL,
@@ -49,25 +96,57 @@ CREATE TABLE DB_TRACK (
49
96
  )
50
97
  SQL
51
98
 
52
- s.ddl <<SQL
99
+ h.ddl <<SQL
53
100
  CREATE TABLE ARTIST (
54
101
  ID INT NOT NULL,
55
102
  name VARCHAR(255) NOT NULL,
56
103
  PRIMARY KEY (ID)
57
104
  )
105
+ SQL
106
+
107
+ h.ddl <<SQL
108
+ CREATE TABLE person (
109
+ ID INT NOT NULL,
110
+ given_name VARCHAR(255),
111
+ sur_name VARCHAR(255) NOT NULL,
112
+ age INT NOT NULL,
113
+ PRIMARY KEY (ID)
114
+ )
115
+ SQL
116
+
117
+ h.ddl <<SQL
118
+ CREATE TABLE address (
119
+ ID INT NOT NULL,
120
+ street VARCHAR(255),
121
+ postal VARCHAR(255),
122
+ zip VARCHAR(255),
123
+ country VARCHAR(255),
124
+ PRIMARY KEY (ID)
125
+ )
126
+ SQL
127
+
128
+ h.ddl <<SQL
129
+ CREATE TABLE FAKEMODEL (
130
+ ID INT NOT NULL
131
+ )
132
+ SQL
133
+ h.ddl <<SQL
134
+ CREATE TABLE FAKEMODEL_FAKESECONDMODEL (
135
+ ID INT NOT NULL
136
+ )
58
137
  SQL
59
138
 
60
139
  template = <<SQL
61
140
  INSERT INTO DB_TRACK(TRACK_ID, title, filePath, playTime, added, volume, lastPlayed, data, description, fraction, otherFraction, good, price) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
62
141
  SQL
63
142
 
64
- s.insert(template,
143
+ h.insert(template,
65
144
  [1, "foobar", "c:/abc/cde/foo.mp3", [Time.time_at(14,50,0), :time], [Time.local(1984, 12, 13, 0,0,0), :date], 13,
66
145
  [Time.local(1984, 12, 14, 12,3,11), :timestamp], ["abc", :binary], ["foobar", :text], 3.4, 5.7, true, BigDecimal.new("13134.11")],
67
146
  [2, "flux", "d:/abc/cde/flax.mp3", [Time.time_at(16,23,0), :time], [Time.local(1983, 12, 13, 0,0,0), :date], 13,
68
147
  [Time.local(1982, 5, 3, 13,3,7), :timestamp], ["mumsi", :binary], ["maxi", :text], 3.5, 35435.4522234, false, BigDecimal.new("55454.33")])
69
148
 
70
- s.insert("INSERT INTO ARTIST(ID, name) VALUES(?, ?)",
149
+ h.insert("INSERT INTO ARTIST(ID, name) VALUES(?, ?)",
71
150
  [1, "Public Image Ltd"],
72
151
  [2, "New Model Army"],
73
152
  [3, "David Bowie"])
@@ -79,5 +158,7 @@ reset_database!
79
158
  at_exit do
80
159
  require 'fileutils'
81
160
  FileUtils.rm_rf('test_database')
161
+ FileUtils.rm_rf('test_database_flarg')
162
+ FileUtils.rm_rf('test_database_flurg')
82
163
  FileUtils.rm_rf('derby.log')
83
164
  end
@@ -1,28 +1,40 @@
1
1
  require File.join(File.dirname(__FILE__), 'test_helper')
2
2
 
3
3
  class Track
4
- Ribs! do |rib|
5
- rib.table :DB_TRACK
6
-
7
- rib.primary_key :TRACK_ID
8
-
9
- rib.col :title, :track_title
10
- rib.col :playTime, :time
11
- rib.col :added, :date_added
12
- rib.col :lastPlayed, :last_played_at
13
- rib.col :data, :file_data
14
- rib.col :description, :desc
15
- rib.col :fraction, :some_fraction
16
- rib.col :good, :is_good
17
- rib.col :price, :full_price
18
-
19
- rib.avoid :filePath
4
+ attr_accessor :track_id
5
+ attr_accessor :track_title
6
+ attr_accessor :time
7
+ attr_accessor :date_added
8
+ attr_accessor :last_played_at
9
+ attr_accessor :file_data
10
+ attr_accessor :desc
11
+ attr_accessor :some_fraction
12
+ attr_accessor :is_good
13
+ attr_accessor :full_price
14
+ attr_accessor :volume
15
+
16
+ Ribs! :table => :DB_TRACK, :identity_map => false do |rib|
17
+ rib.TRACK_ID.primary_key!
18
+
19
+ rib.track_title :column => :title
20
+ rib.time :column => :playTime
21
+ rib.date_added :column => :added
22
+ rib.last_played_at :column => :lastPlayed
23
+ rib.file_data :column => :data
24
+ rib.desc :column => :description
25
+ rib.some_fraction :column => :fraction
26
+ rib.is_good :column => :good
27
+ rib.full_price :column => :price
28
+
29
+ rib.filePath :avoid, :default => "fluxie"
20
30
  end
21
31
  end
22
32
 
33
+ # R(Track).define_accessors
34
+
23
35
  describe Track do
24
36
  it "should be able to find things based on mapped primary key" do
25
- track = Track.find(2)
37
+ track = R(Track).get(2)
26
38
  track.track_id.should == 2
27
39
  track.track_title.should == "flux"
28
40
  track.time.should == Time.time_at(16,23,0)
@@ -31,7 +43,7 @@ describe Track do
31
43
  end
32
44
 
33
45
  it "should have property that wasn't named" do
34
- prop = Track.ribs_metadata['VOLUME']
46
+ prop = R(Track).metadata['VOLUME']
35
47
  prop.name.should == 'VOLUME'
36
48
  colarr = prop.column_iterator.to_a
37
49
  colarr.length.should == 1
@@ -39,63 +51,63 @@ describe Track do
39
51
  end
40
52
 
41
53
  it "shouldn't have property that's avoided" do
42
- Track.ribs_metadata['filePath'].should be_nil
54
+ R(Track).metadata['filePath'].should be_nil
43
55
  end
44
56
 
45
57
  it "should have correct names for defined properties" do
46
- props = Track.ribs_metadata.properties
58
+ props = R(Track).metadata.properties
47
59
  # the primary keys aren't actually part of the properties
48
60
  props.keys.sort.should == ['OTHERFRACTION', 'VOLUME', 'track_title', 'time', 'date_added', 'file_data', 'desc', 'some_fraction', 'is_good', 'full_price', 'last_played_at'].sort
49
61
  props.values.map { |p| p.column_iterator.to_a[0].name }.sort.should ==
50
62
  ['VOLUME', 'TITLE', 'PLAYTIME', 'ADDED', 'OTHERFRACTION', 'LASTPLAYED', 'DATA', 'DESCRIPTION', 'FRACTION', 'GOOD', 'PRICE'].sort
51
63
  end
52
64
 
53
- it "should have correct value and type for OTHERFRACTION property" do
54
- res = Track.find(:all).map { |a| a.otherfraction }.sort
65
+ it "should have correct value and type for OTHERFRACTION property from instance variable" do
66
+ res = R(Track).all.map { |a| a.instance_variable_get :@otherfraction }.sort
55
67
  res[0].should be_close(5.7, 0.00001)
56
68
  res[1].should be_close(35435.4522234, 0.01)
57
69
  end
58
70
 
59
71
  it "should have correct value and type for VOLUME property" do
60
- Track.find(:all).map { |a| a.volume }.sort.should == [13, 13]
72
+ R(Track).all.map { |a| a.volume }.sort.should == [13, 13]
61
73
  end
62
74
 
63
75
  it "should have correct value and type for track_title property" do
64
- Track.find(:all).map { |a| a.track_title }.sort.should == ["flux", "foobar"]
76
+ R(Track).all.map { |a| a.track_title }.sort.should == ["flux", "foobar"]
65
77
  end
66
78
 
67
79
  it "should have correct value and type for time property" do
68
- Track.find(:all).map { |a| a.time }.sort.should == [Time.time_at(14,50,0), Time.time_at(16,23,0)]
80
+ R(Track).all.map { |a| a.time }.sort.should == [Time.time_at(14,50,0), Time.time_at(16,23,0)]
69
81
  end
70
82
 
71
83
  it "should have correct value and type for date_added property" do
72
- Track.find(:all).map { |a| a.date_added }.sort.should == [Time.local(1983, 12, 13, 0, 0, 0),Time.local(1984, 12, 13, 0, 0, 0)]
84
+ R(Track).all.map { |a| a.date_added }.sort.should == [Time.local(1983, 12, 13, 0, 0, 0),Time.local(1984, 12, 13, 0, 0, 0)]
73
85
  end
74
86
 
75
87
  it "should have correct value and type for file_data property" do
76
- Track.find(:all).map { |a| a.file_data }.sort.should == ["abc", "mumsi"]
88
+ R(Track).all.map { |a| a.file_data }.sort.should == ["abc", "mumsi"]
77
89
  end
78
90
 
79
91
  it "should have correct value and type for desc property" do
80
- Track.find(:all).map { |a| a.desc }.sort.should == ["foobar", "maxi"]
92
+ R(Track).all.map { |a| a.desc }.sort.should == ["foobar", "maxi"]
81
93
  end
82
94
 
83
95
  it "should have correct value and type for some_fraction property" do
84
- res = Track.find(:all).map { |a| a.some_fraction }.sort
96
+ res = R(Track).all.map { |a| a.some_fraction }.sort
85
97
  res[0].should be_close(3.4, 0.00001)
86
98
  res[1].should be_close(3.5, 0.00001)
87
99
  end
88
100
 
89
101
  it "should have correct value and type for is_good property" do
90
- Track.find(:all).map { |a| a.is_good }.sort_by{|v| v ? 0 : 1}.should == [true, false]
102
+ R(Track).all.map { |a| a.is_good }.sort_by{|v| v ? 0 : 1}.should == [true, false]
91
103
  end
92
104
 
93
105
  it "should have correct value and type for full_price property" do
94
- Track.find(:all).map { |a| a.full_price }.sort.should == [BigDecimal.new("13134.11"), BigDecimal.new("55454.33")]
106
+ R(Track).all.map { |a| a.full_price }.sort.should == [BigDecimal.new("13134.11"), BigDecimal.new("55454.33")]
95
107
  end
96
108
 
97
109
  it "should have correct value and type for last_played_at property" do
98
- Track.find(:all).map { |a| a.last_played_at }.sort.should == [Time.local(1982, 5, 3, 13,3,7), Time.local(1984, 12, 14, 12,3,11)]
110
+ R(Track).all.map { |a| a.last_played_at }.sort.should == [Time.local(1982, 5, 3, 13,3,7), Time.local(1984, 12, 14, 12,3,11)]
99
111
  end
100
112
 
101
113
  it "should be possible to create a new instance by setting properties" do
@@ -113,11 +125,11 @@ describe Track do
113
125
  track.full_price = BigDecimal.new("14.49")
114
126
  track.volume = 5
115
127
 
116
- Track.find(3).should be_nil
128
+ R(Track).get(3).should be_nil
117
129
 
118
- track.save
130
+ R(track).save
119
131
 
120
- Track.find(3).should_not be_nil
132
+ R(Track).get(3).should_not be_nil
121
133
  ensure
122
134
  reset_database!
123
135
  end
@@ -125,7 +137,7 @@ describe Track do
125
137
 
126
138
  it "should be possible to create a new instance by giving properties to new" do
127
139
  begin
128
- track = Track.new(
140
+ track = R(Track).new(
129
141
  :track_id => 3,
130
142
  :track_title => "Born to raise hell",
131
143
  :time => Time.time_at(0,3,25),
@@ -138,11 +150,11 @@ describe Track do
138
150
  :full_price => BigDecimal.new("14.49"),
139
151
  :volume => 5)
140
152
 
141
- Track.find(3).should be_nil
153
+ R(Track).get(3).should be_nil
142
154
 
143
- track.save
155
+ R(track).save
144
156
 
145
- Track.find(3).should_not be_nil
157
+ R(Track).get(3).should_not be_nil
146
158
  ensure
147
159
  reset_database!
148
160
  end
@@ -150,8 +162,8 @@ describe Track do
150
162
 
151
163
  it "should be possible to create a new instance by using create" do
152
164
  begin
153
- Track.find(3).should be_nil
154
- track = Track.create(
165
+ R(Track).get(3).should be_nil
166
+ track = R(Track).create(
155
167
  :track_id => 3,
156
168
  :track_title => "Born to raise hell",
157
169
  :time => Time.time_at(0,3,25),
@@ -164,14 +176,14 @@ describe Track do
164
176
  :full_price => BigDecimal.new("14.49"),
165
177
  :volume => 5)
166
178
 
167
- Track.find(3).should_not be_nil
179
+ R(Track).get(3).should_not be_nil
168
180
  ensure
169
181
  reset_database!
170
182
  end
171
183
  end
172
184
 
173
185
  def create_simple
174
- Track.create(
186
+ R(Track).create(
175
187
  :track_id => 3,
176
188
  :track_title => "Born to raise hell",
177
189
  :time => Time.time_at(0,3,25),
@@ -184,7 +196,7 @@ describe Track do
184
196
  :full_price => BigDecimal.new("14.49"),
185
197
  :volume => 5)
186
198
 
187
- Track.find(3)
199
+ R(Track).get(3)
188
200
  end
189
201
 
190
202
  it "should have correct value and type for TRACK_ID property on newly created bean" do
@@ -277,11 +289,11 @@ describe Track do
277
289
 
278
290
  it "should be possible to update track_title property on existing bean" do
279
291
  begin
280
- v = Track.find(1)
292
+ v = R(Track).get(1)
281
293
  v.track_title = "new value here"
282
- v.save
294
+ R(v).save
283
295
 
284
- Track.find(1).track_title.should == "new value here"
296
+ R(Track).get(1).track_title.should == "new value here"
285
297
  ensure
286
298
  reset_database!
287
299
  end
@@ -289,11 +301,11 @@ describe Track do
289
301
 
290
302
  it "should be possible to update time property on existing bean" do
291
303
  begin
292
- v = Track.find(1)
304
+ v = R(Track).get(1)
293
305
  v.time = Time.time_at(23,32,33)
294
- v.save
306
+ R(v).save
295
307
 
296
- Track.find(1).time.should == Time.time_at(23,32,33)
308
+ R(Track).get(1).time.should == Time.time_at(23,32,33)
297
309
  ensure
298
310
  reset_database!
299
311
  end
@@ -301,11 +313,11 @@ describe Track do
301
313
 
302
314
  it "should be possible to update date_added property on existing bean" do
303
315
  begin
304
- v = Track.find(1)
316
+ v = R(Track).get(1)
305
317
  v.date_added = Time.local(2004,10,9,0,0,0)
306
- v.save
318
+ R(v).save
307
319
 
308
- Track.find(1).date_added.should == Time.local(2004,10,9,0,0,0)
320
+ R(Track).get(1).date_added.should == Time.local(2004,10,9,0,0,0)
309
321
  ensure
310
322
  reset_database!
311
323
  end
@@ -313,11 +325,11 @@ describe Track do
313
325
 
314
326
  it "should be possible to update last_played_at property on existing bean" do
315
327
  begin
316
- v = Track.find(1)
328
+ v = R(Track).get(1)
317
329
  v.last_played_at = Time.local(2005,8,8,10,24,12)
318
- v.save
330
+ R(v).save
319
331
 
320
- Track.find(1).last_played_at.should == Time.local(2005,8,8,10,24,12)
332
+ R(Track).get(1).last_played_at.should == Time.local(2005,8,8,10,24,12)
321
333
  ensure
322
334
  reset_database!
323
335
  end
@@ -325,11 +337,11 @@ describe Track do
325
337
 
326
338
  it "should be possible to update file_data property on existing bean" do
327
339
  begin
328
- v = Track.find(1)
340
+ v = R(Track).get(1)
329
341
  v.file_data = "Some data"
330
- v.save
342
+ R(v).save
331
343
 
332
- Track.find(1).file_data.should == "Some data"
344
+ R(Track).get(1).file_data.should == "Some data"
333
345
  ensure
334
346
  reset_database!
335
347
  end
@@ -337,11 +349,11 @@ describe Track do
337
349
 
338
350
  it "should be possible to update desc property on existing bean" do
339
351
  begin
340
- v = Track.find(1)
352
+ v = R(Track).get(1)
341
353
  v.desc = "Some description"
342
- v.save
354
+ R(v).save
343
355
 
344
- Track.find(1).desc.should == "Some description"
356
+ R(Track).get(1).desc.should == "Some description"
345
357
  ensure
346
358
  reset_database!
347
359
  end
@@ -349,11 +361,11 @@ describe Track do
349
361
 
350
362
  it "should be possible to update some_fraction property on existing bean" do
351
363
  begin
352
- v = Track.find(1)
364
+ v = R(Track).get(1)
353
365
  v.some_fraction = 3.1416 #Anal test
354
- v.save
366
+ R(v).save
355
367
 
356
- Track.find(1).some_fraction.should be_close(3.1416, 0.00001)
368
+ R(Track).get(1).some_fraction.should be_close(3.1416, 0.00001)
357
369
  ensure
358
370
  reset_database!
359
371
  end
@@ -361,11 +373,11 @@ describe Track do
361
373
 
362
374
  it "should be possible to update is_good property on existing bean" do
363
375
  begin
364
- v = Track.find(1)
376
+ v = R(Track).get(1)
365
377
  v.is_good = false
366
- v.save
378
+ R(v).save
367
379
 
368
- Track.find(1).is_good.should be_false
380
+ R(Track).get(1).is_good.should be_false
369
381
  ensure
370
382
  reset_database!
371
383
  end
@@ -373,11 +385,11 @@ describe Track do
373
385
 
374
386
  it "should be possible to update full_price property on existing bean" do
375
387
  begin
376
- v = Track.find(1)
388
+ v = R(Track).get(1)
377
389
  v.full_price = BigDecimal.new("142.12")
378
- v.save
390
+ R(v).save
379
391
 
380
- Track.find(1).full_price.should == BigDecimal.new("142.12")
392
+ R(Track).get(1).full_price.should == BigDecimal.new("142.12")
381
393
  ensure
382
394
  reset_database!
383
395
  end
@@ -385,11 +397,11 @@ describe Track do
385
397
 
386
398
  it "should be possible to update volume property on existing bean" do
387
399
  begin
388
- v = Track.find(1)
400
+ v = R(Track).get(1)
389
401
  v.volume = 42
390
- v.save
402
+ R(v).save
391
403
 
392
- Track.find(1).volume.should == 42
404
+ R(Track).get(1).volume.should == 42
393
405
  ensure
394
406
  reset_database!
395
407
  end
@@ -397,8 +409,8 @@ describe Track do
397
409
 
398
410
  it "should be possible to delete existing bean" do
399
411
  begin
400
- Track.find(1).destroy!
401
- Track.find(1).should be_nil
412
+ R(R(Track).get(1)).destroy!
413
+ R(Track).get(1).should be_nil
402
414
  ensure
403
415
  reset_database!
404
416
  end
@@ -406,8 +418,8 @@ describe Track do
406
418
 
407
419
  it "should be possible to delete existing bean by id" do
408
420
  begin
409
- Track.destroy(2)
410
- Track.find(2).should be_nil
421
+ R(Track).destroy(2)
422
+ R(Track).get(2).should be_nil
411
423
  ensure
412
424
  reset_database!
413
425
  end