ribs 0.0.1 → 0.0.2

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.
@@ -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