dbd4 1.0.4 → 1.0.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/bin/dbd4 CHANGED
@@ -21,7 +21,7 @@
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #--
23
23
 
24
- DBD4VERSION = '1.0.4'
24
+ DBD4VERSION = '1.0.5'
25
25
 
26
26
  require 'getoptlong'
27
27
  require 'dbd4/dbd4_model_file'
@@ -141,10 +141,10 @@ class DBD4Import
141
141
  dbmf.generateModelFiles unless $validate_only == true
142
142
  puts "Done!"
143
143
  end
144
- rescue Exception => ex
145
- puts "dbmodel aborted!"
146
- puts ex
147
- exit(1)
144
+ #rescue Exception => ex
145
+ # puts "dbmodel aborted!"
146
+ # puts ex
147
+ # exit(1)
148
148
  end
149
149
  end
150
150
  end
@@ -92,7 +92,7 @@ module DBD4
92
92
  @comments = table.attributes['Comments']
93
93
  @name = table.attributes['Tablename']
94
94
  @modelname = Inflector.singularize(@name)
95
- @nm_table = false;
95
+ @nm_table = table.attributes['nmTable'];
96
96
  @primary_key = nil;
97
97
 
98
98
  @relation_starts = Array.new
@@ -100,7 +100,15 @@ module DBD4
100
100
  @columns = Columns.new(self)
101
101
  @non_standard_name = false
102
102
  end
103
-
103
+
104
+ def self.createJoinTableName(t1, t2)
105
+ if t1.name < t2.name
106
+ "#{t1.name}_#{t2.name}"
107
+ else
108
+ "#{t2.name}_#{t1.name}"
109
+ end
110
+ end
111
+
104
112
  def addColumnFromXml(column_xml)
105
113
  column = Column.new(column_xml, self)
106
114
  @primary_key = column if column.primary_key? and ! @primary_key
@@ -116,20 +124,25 @@ module DBD4
116
124
  end
117
125
 
118
126
  def validate(messages)
119
- if @nm_table
120
- t1 = @relation_ends.values[0].source_table
121
- t2 = @relation_ends.values[1].source_table
122
- expected_name = nil;
123
- if t1.name < t2.name
124
- expected_name = "#{t1.name}_#{t2.name}"
127
+ if @nm_table == '1'
128
+ if @relation_ends.size != 2
129
+ messages[:warnings] << "Warning : join table #{name} must have only 2 foreign keys with one2many types."
130
+ elsif @relation_ends.values[0].type != :many2many or relation_ends.values[1].type != :many2many
131
+ messages[:warnings] << "Warning : join table #{name} has a relation that is not many2many"
125
132
  else
126
- expected_name = "#{t2.name}_#{t1.name}"
127
- end
128
- if @name != expected_name then
129
- messages[:warnings] << "Warning : join table #{name} differs from expected #{expected_name}"
130
- @non_standard_name = true
133
+ t1 = @relation_ends.values[0].source_table
134
+ t2 = @relation_ends.values[1].source_table
135
+ expected_name = Table.createJoinTableName(t1, t2)
136
+ if @name != expected_name then
137
+ messages[:warnings] << "Warning : join table #{name} differs from expected #{expected_name}"
138
+ @non_standard_name = true
139
+ end
131
140
  end
132
141
  else
142
+ if @columns.size == 2 and @columns.foreign_keys.size == 2 and @relation_ends.values.size == 2 and @relation_ends.values[0].type == :one2many and @relation_ends.values[1].type == :one2many
143
+ messages[:warnings] << "Warning : table name #{name} seems to be a join table (many2many) please specify 'is nm_table' in DBDesigner"
144
+ end
145
+
133
146
  if @modelname == @name
134
147
  messages[:warnings] << "Warning : table name #{name} is not in a valid plural form, should be #{Inflector.pluralize(name)}"
135
148
  @non_standard_name = true
@@ -152,28 +165,28 @@ module DBD4
152
165
  tmp = Relations.new
153
166
  @relation_ends.each { |r| tmp<<allObjects[:relations][r.id] }
154
167
  @relation_ends = tmp
155
- if @columns.size == 3
156
- if @columns.foreign_keys.size == 2
157
- if @relation_ends.values.size == 2
158
- if @relation_ends.values[0].type == :one2many and @relation_ends.values[1].type == :one2many
159
- @nm_table = true
160
- @relation_ends.values[0].destination_table = @relation_ends.values[1].source_table
161
- @relation_ends.values[0].join_table = self
162
- @relation_ends.values[1].destination_table = @relation_ends.values[0].source_table
163
- @relation_ends.values[1].join_table = self
164
- @relation_ends.values[0].type = :many2many
165
- @relation_ends.values[1].type = :many2many
166
- end
167
- end
168
- end
168
+ if @relation_ends.values.size == 2 and @nm_table == '1' then
169
+ @relation_ends.values[0].destination_table = @relation_ends.values[1].source_table
170
+ @relation_ends.values[0].join_table = self
171
+ @relation_ends.values[1].destination_table = @relation_ends.values[0].source_table
172
+ @relation_ends.values[1].join_table = self
173
+ @relation_ends.values[0].type = :many2many
174
+ @relation_ends.values[1].type = :many2many
169
175
  end
170
176
  end
171
177
 
172
178
  def generateModelFile
173
179
  m = RailsModelFile.new({:modelname => @modelname})
174
- m.update(self) unless @nm_table
180
+ m.update(self) unless @nm_table == '1'
175
181
  m = RailsMigrationFile.new({:tablename => @name})
176
182
  m.update(self)
183
+
184
+ @relation_starts.each_value do |rs|
185
+ if rs.type == :many2many and rs.join_table == nil
186
+ m = RailsMigrationFile.new({:virtual => true, :tablename => Table.createJoinTableName(self, rs.destination_table)})
187
+ m.update_implicit_join_table(rs)
188
+ end
189
+ end
177
190
  end
178
191
 
179
192
  def to_str
@@ -273,33 +286,61 @@ module DBD4
273
286
  when '5'
274
287
  @type = :one2one
275
288
  when '2'
276
- @type = :one2many
289
+ @type = :one2many
290
+ when '3'
291
+ @type = :many2many
277
292
  end
278
293
  @source_table = relation.attributes['SrcTable']
279
294
  @destination_table = relation.attributes['DestTable']
280
295
  end
281
-
296
+
282
297
  def resolve(allObjects)
283
298
  @source_table = allObjects[:tables][@source_table]
284
299
  @destination_table = allObjects[:tables][@destination_table]
285
- @source_column = @source_table.columns.primary_keys[@fk_fields[0].source_field]
286
- @destination_column = @destination_table.columns.foreign_keys[@fk_fields[0].destination_field]
300
+ if @type != :many2many
301
+ @source_column = @source_table.columns.primary_keys[@fk_fields[0].source_field]
302
+ @destination_column = @destination_table.columns.foreign_keys[@fk_fields[0].destination_field]
303
+ end
287
304
  end
288
305
 
289
306
  def validate(messages)
307
+ if @type == nil
308
+ messages[:warnings] << "Warning : between table #{@destination_table.name} and table #{@source_table.name}, type #{@kind} is invalid"
309
+ end
310
+
290
311
  if @fk_fields.size > 1
291
- messages[:warnings] << "Warning : between table #{@destination_column.table.name} and table #{@source_column.table.name}, relation #{name} targets more than 1 foreign_key"
312
+ messages[:warnings] << "Warning : between table #{@destination_table.name} and table #{@source_table.name}, relation #{name} targets more than 1 foreign_key"
292
313
  end
293
314
 
294
- expected_fkey_name = Inflector.singularize(@source_table.name) + "_id"
295
- if @destination_column.name != expected_fkey_name and @destination_column.polymorphic == nil then
296
- messages[:warnings] << "Warning : table #{@destination_column.table.name}, foreign key #{@destination_column.name} does not match expected name #{expected_fkey_name}"
297
- @destination_column.non_standard_name = true
315
+ if !( @type != nil and @type == :many2many and @join_table == nil )
316
+ expected_fkey_name = Inflector.singularize(@source_table.name) + "_id"
317
+ if @destination_column.name != expected_fkey_name and @destination_column.polymorphic == nil then
318
+ messages[:warnings] << "Warning : table #{@destination_column.table.name}, foreign key #{@destination_column.name} does not match expected name #{expected_fkey_name}"
319
+ @destination_column.non_standard_name = true
320
+ end
298
321
  end
299
322
  end
300
323
 
301
324
  def to_str
302
- "Relation(id=#{id}, name=#{name}, type=#{type}, src=#{source_table.name}, dst=#{destination_table.name}, fk=#{fk_fields.to_str})"
325
+ result = "Relation(id=#{id}, name=#{name}, type=#{type},"
326
+ if source_column != nil
327
+ result += " src_col=#{source_column.name},"
328
+ else
329
+ result += " src_col=nil,"
330
+ end
331
+ if destination_column != nil
332
+ result += " dst_col=#{destination_column.name},"
333
+ else
334
+ result += " dst_col=nil,"
335
+ end
336
+ result += " src=#{source_table.name}, dst=#{destination_table.name}, fk=#{fk_fields.to_str},"
337
+ if join_table != nil
338
+ result += " join_table=#{join_table.name}"
339
+ else
340
+ result += " join_table=nil"
341
+ end
342
+ result += ")"
343
+ result
303
344
  end
304
345
  end
305
346
 
@@ -444,8 +485,9 @@ module DBD4
444
485
 
445
486
  def <<(column)
446
487
  column.table = @table
447
- @primary_key = column unless @primary_key
488
+
448
489
  if column.primary_key?
490
+ @primary_key = column
449
491
  @primary_keys[column.name] = column
450
492
  end
451
493
  if column.foreign_key?
@@ -464,16 +506,22 @@ module DBD4
464
506
  end
465
507
 
466
508
  def validate(messages)
467
- if @primary_key == nil then
468
- messages[:errors] << "Error : table #{@table.name} has no primary keys, you need at least 1"
469
- else
470
- if @primary_keys.size > 1 then
471
- messages[:warnings] << "Warning : table #{@table.name} has more than 1 primary key, only the first one will be considered"
509
+ if @table.nm_table == '0'
510
+ if @primary_key == nil then
511
+ messages[:errors] << "Error : table #{@table.name} has no primary keys, you need at least 1"
512
+ else
513
+ if @primary_keys.size > 1 then
514
+ messages[:warnings] << "Warning : table #{@table.name} has more than 1 primary key, only the first one will be considered"
515
+ end
516
+
517
+ if @primary_key.name != 'id'
518
+ messages[:warnings] << "Warning : table #{@table.name} primary key #{@primary_key.name} differs from expected name id"
519
+ @primary_key.non_standard_name = true
520
+ end
472
521
  end
473
-
474
- if @primary_key.name != 'id'
475
- messages[:warnings] << "Warning : table #{@table.name} primary key #{@primary_key.name} differs from expected name id"
476
- @primary_key.non_standard_name = true
522
+ else
523
+ if @primary_key != nil then
524
+ messages[:warnings] << "Warning : table #{@table.name} is a many2many join table, it cannot have a primary key"
477
525
  end
478
526
  end
479
527
  each_value { |v| v.validate(messages) }
@@ -32,15 +32,29 @@ module DBD4
32
32
  @warnings = Array.new
33
33
  @infos = Array.new
34
34
  @tablename = options[:tablename]
35
+ @virtual = options[:virtual]
35
36
 
36
37
  if options[:tablename]
37
38
  if Inflector.singularize(@tablename) == @tablename
38
39
  raise RailsModelFileError, "MigrationModelFile : tablename #{@tablename} is not valid, it must be plural, not singular"
39
40
  end
40
- partial_name = "_create_" + Inflector.underscore(Inflector.camelize(@tablename)) + ".rb"
41
- fileList = Dir.new(File.join('db', 'migrate')).entries.delete_if { |e| e !~ /#{partial_name}/ }
41
+ partial_name = "_create_" + Inflector.underscore(Inflector.camelize(@tablename)) + ".rb"
42
+ fileList = Array.new(Dir.new(File.join('db', 'migrate')).entries).delete_if { |e| e !~ /#{partial_name}/ }
42
43
  if fileList.size == 0
43
- raise "Could not find migration file starting with #{partial_name} in dir db/migrate"
44
+ if @virtual == true
45
+ cmdline = ['migration', "create_" + Inflector.underscore(Inflector.camelize(@tablename)) ]
46
+ puts "Calling generator: #{cmdline.join(' ')}"
47
+ Rails::Generator::Scripts::Generate.new.run(cmdline)
48
+ fileList = Array.new(Dir.new(File.join('db', 'migrate')).entries).delete_if { |e| e !~ /#{partial_name}/ }
49
+ if fileList.size == 0
50
+ raise "Could not find generated migration file starting with #{partial_name} in dir db/migrate"
51
+ end
52
+ if fileList.size > 1
53
+ raise "Found more than 1 migration file starting with #{partial_name} in dir db/migrate"
54
+ end
55
+ else
56
+ raise "Could not find migration file starting with #{partial_name} in dir db/migrate"
57
+ end
44
58
  end
45
59
  if fileList.size > 1
46
60
  raise "Found more than 1 migration file starting with #{partial_name} in dir db/migrate"
@@ -100,7 +114,7 @@ module DBD4
100
114
  new_migration_file_content = <<"MIGRATIONFILE"
101
115
  class Create#{c} < ActiveRecord::Migration
102
116
  def self.up
103
- create_table :#{table.name} do |t|
117
+ create_table :#{@tablename} do |t|
104
118
  #{columnsToString(table)}
105
119
  end
106
120
  end
@@ -119,6 +133,32 @@ MIGRATIONFILE
119
133
  end
120
134
  end
121
135
 
136
+ def update_implicit_join_table(relation)
137
+ raise "MigrationFile : migration file name not given" if ! @migrationfile
138
+ c = Inflector.camelize(@tablename)
139
+ new_migration_file_content = <<"MIGRATIONFILE"
140
+ class Create#{c} < ActiveRecord::Migration
141
+ def self.up
142
+ create_table :#{@tablename}, :id => false do |t|
143
+ t.column :#{relation.source_table.modelname}_id, :integer
144
+ t.column :#{relation.destination_table.modelname}_id, :integer
145
+ end
146
+ end
147
+
148
+ def self.down
149
+ drop_table :#{@tablename}
150
+ end
151
+ end
152
+ MIGRATIONFILE
153
+
154
+ old_migration_file_content = IO.readlines(@migrationfile).join("")
155
+ if (old_migration_file_content != new_migration_file_content)
156
+ puts "Updating migration file for table #{@tablename} (file : #{@migrationfile})..."
157
+ newFile = File.open(@migrationfile, "w")
158
+ newFile.puts new_migration_file_content
159
+ end
160
+ end
161
+
122
162
  def to_str
123
163
  @lines.join("")
124
164
  end
@@ -39,7 +39,6 @@ module DBD4
39
39
  'has_one' => {},
40
40
  'has_many' => {},
41
41
  'belongs_to' => {},
42
- 'habtm' => {},
43
42
  'has_and_belongs_to_many' => {},
44
43
  'class' => {},
45
44
  'primary_key' => {},
@@ -112,21 +111,17 @@ module DBD4
112
111
  else
113
112
  @elements['table_name'] = { :start => i, :name => $~[1] }
114
113
  end
115
- elsif l.match(/^\s*(has_one|has_many|has_and_belongs_to_many|habtm|belongs_to)\s+:([a-zA-Z_0-9]+)/)
114
+ elsif l.match(/^\s*(has_one|has_many|has_and_belongs_to_many|belongs_to)\s+:([a-zA-Z_0-9]+)/)
116
115
  r_type = $~[1]
117
116
  t_name = $~[2]
118
117
 
119
- if r_type == 'has_and_belongs_to_many'
120
- r_type = 'habtm'
121
- end
122
-
123
118
  if @elements[r_type][t_name]
124
119
  @warnings << "Warning in file #{@modelfile} at line #{i + 1}:"
125
120
  @warnings << " Duplicate declaration #{r_type}, it is already defined at line #{@elements[r_type][t_name][:start] + 1}"
126
121
  @lines[i] = "#" + @lines[i]
127
122
  i += 1
128
123
  while i < @lines.size
129
- break if @lines[i].match(/^\s*(?:has_one|has_many|has_and_belongs_to_many|habtm|belongs_to|def|end)/)
124
+ break if @lines[i].match(/^\s*(?:has_one|has_many|has_and_belongs_to_many|belongs_to|def|end)/)
130
125
  @lines[i] = "#" + @lines[i] if @lines[i] !~ /^\s*#/
131
126
  i += 1
132
127
  end
@@ -141,7 +136,7 @@ module DBD4
141
136
  i += 1
142
137
  while i < @lines.size
143
138
  l2 = @lines[i]
144
- break if @lines[i].match(/^\s*(?:has_one|has_many|has_and_belongs_to_many|habtm|belongs_to|def|end)/)
139
+ break if @lines[i].match(/^\s*(?:has_one|has_many|has_and_belongs_to_many|belongs_to|def|end)/)
145
140
  r[:foreign_key] = $~ if l2.match(/:foreign_key\s*=>\s*["']([a-zA-Z_0-9]+)/)
146
141
  r[:polymorphic] = $~ if l2.match(/:polymorphic\s*=>\s*true/)
147
142
  r[:as] = $~ if l2.match(/:as\s*=>\s*([a-zA-Z_0-9]+)/)
@@ -191,13 +186,13 @@ module DBD4
191
186
 
192
187
  etype = 'has_one' if r.type == :one2one
193
188
  etype = 'has_many' if r.type == :one2many
194
- etype = 'habtm' if r.type == :many2many
189
+ etype = 'has_and_belongs_to_many' if r.type == :many2many
195
190
  element = @elements[etype][dname]
196
191
 
197
192
  #If the line exists
198
193
  if element
199
194
  if element[:as]
200
- if r.destination_column.polymorphic
195
+ if r.destination_column and r.destination_column.polymorphic
201
196
  for i in (element[:start] .. element[:end])
202
197
  @lines[i].sub!(/(:as\s*=>\s*["']?)[a-zA-Z_0-9]+/, "\\1#{r.destination_column.polymorphic}")
203
198
  end
@@ -207,12 +202,14 @@ module DBD4
207
202
  end
208
203
  end
209
204
  else
210
- @lines[element[:start]].sub!(/(#{etype}[^,]+)/, "\\1, :as => '#{r.destination_column.polymorphic}'")
205
+ if r.destination_column and r.destination_column.polymorphic
206
+ @lines[element[:start]].sub!(/(#{etype}[^,]+)/, "\\1, :as => '#{r.destination_column.polymorphic}'")
207
+ end
211
208
  end
212
209
  left_over[etype].delete(dname)
213
210
  else
214
211
  @lines[@elements['class'][:start]] += " #{etype} :#{dname}"
215
- if r.destination_column.polymorphic
212
+ if r.destination_column and r.destination_column.polymorphic
216
213
  @lines[@elements['class'][:start]] += ", :as => #{r.destination_column.polymorphic}"
217
214
  end
218
215
  @lines[@elements['class'][:start]] += "\n"
@@ -232,19 +229,19 @@ module DBD4
232
229
  end
233
230
 
234
231
  etype = 'belongs_to' if r.type == :one2one or r.type == :one2many
235
- etype = 'habtm' if r.type == :many2many
232
+ etype = 'has_and_belongs_to_many' if r.type == :many2many
236
233
  element = @elements[etype][dname]
237
234
 
238
235
  #If the line exists
239
236
  if element
240
237
  if element[:polymorphic]
241
- if ! r.destination_column.polymorphic
238
+ if r.destination_column and ! r.destination_column.polymorphic
242
239
  for i in (element[:start] .. element[:end])
243
240
  @lines[i].sub!(/,\s*:polymorphic\s*=>\s*["']?[a-zA-Z_0-9]+["']?/, "")
244
241
  end
245
242
  end
246
243
  else
247
- if r.destination_column.polymorphic
244
+ if r.destination_column and r.destination_column.polymorphic
248
245
  @lines[element[:start]].sub!(/(#{etype}[^,\n]+)/, "\\1, :polymorphic => true")
249
246
  else
250
247
  # do nothing
@@ -253,7 +250,7 @@ module DBD4
253
250
  left_over[etype].delete(dname)
254
251
  else
255
252
  @lines[@elements['class'][:start]] += " #{etype} :#{dname}"
256
- if r.destination_column.polymorphic
253
+ if r.destination_column and r.destination_column.polymorphic
257
254
  @elements[etype] = { dname => { :polymorphic => true, :added => true } }
258
255
  @lines[@elements['class'][:start]] += ", :polymorphic => true"
259
256
  end
@@ -22,6 +22,7 @@ $files = {
22
22
  'app/models/dog.rb' => "class Dog < ActiveRecord::Base\nend\n",
23
23
  'app/models/kid.rb' => "class Kid < ActiveRecord::Base\nend\n",
24
24
  'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n",
25
+ 'app/models/car.rb' => "class Car < ActiveRecord::Base\nend\n",
25
26
  'db/migrate/001_create_cats.rb' => "",
26
27
  'db/migrate/001_create_cats.rb' => "",
27
28
  'db/migrate/001_create_cats.rb' => "",
@@ -37,18 +38,14 @@ $files = {
37
38
  'db/migrate/011_create_wives.rb' => "",
38
39
  'db/migrate/012_create_dogs.rb' => "",
39
40
  'db/migrate/013_create_kids.rb' => "",
40
- 'db/migrate/014_create_houses.rb' => ""
41
+ 'db/migrate/014_create_houses.rb' => "",
42
+ 'db/migrate/015_create_cars.rb' => "",
43
+ 'db/migrate/104_create_cars_people.rb' => ""
41
44
  }
42
45
 
43
- $files_written_to = Array.new
46
+ $new_migration_numbers = ['100', '101', '102', '103', '104']
44
47
 
45
- class Dir
46
- def initialize(dirname)
47
- raise "Cannot open directory : #{dirname}" if dirname != File.join("db", "migrate")
48
- end
49
-
50
- def entries
51
- [
48
+ $dir_entries = [
52
49
  '001_create_cats.rb',
53
50
  '002_create_computers_users.rb',
54
51
  '003_create_computers.rb',
@@ -62,8 +59,19 @@ class Dir
62
59
  '011_create_wives.rb',
63
60
  '012_create_dogs.rb',
64
61
  '013_create_kids.rb',
65
- '014_create_houses.rb'
62
+ '014_create_houses.rb',
63
+ '015_create_cars.rb'
66
64
  ]
65
+
66
+ $files_written_to = Array.new
67
+
68
+ class Dir
69
+ def initialize(dirname)
70
+ raise "Cannot open directory : #{dirname}" if dirname != File.join("db", "migrate")
71
+ end
72
+
73
+ def entries
74
+ $dir_entries
67
75
  end
68
76
  end
69
77
 
@@ -207,6 +215,7 @@ INPUT
207
215
  'app/models/dog.rb' => "class Dog < ActiveRecord::Base\nend\n",
208
216
  'app/models/kid.rb' => "class Kid < ActiveRecord::Base\nend\n",
209
217
  'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n",
218
+ 'app/models/car.rb' => "class Car < ActiveRecord::Base\nend\n",
210
219
  'db/migrate/001_create_cats.rb' => "",
211
220
  'db/migrate/002_create_computers_users.rb' => "",
212
221
  'db/migrate/003_create_computers.rb' => "",
@@ -220,12 +229,14 @@ INPUT
220
229
  'db/migrate/011_create_wives.rb' => "",
221
230
  'db/migrate/012_create_dogs.rb' => "",
222
231
  'db/migrate/013_create_kids.rb' => "",
223
- 'db/migrate/014_create_houses.rb' => ""
232
+ 'db/migrate/014_create_houses.rb' => "",
233
+ 'db/migrate/104_create_cars_people.rb' => "",
234
+ 'db/migrate/015_create_cars.rb' => ""
224
235
  }
225
236
  @b.generateModelFiles
226
- #puts $files_written_to
237
+
227
238
  run_info = Rails::Generator::Scripts::Generate.new.run_info
228
- assert_equal(14, run_info.size)
239
+ assert_equal(16, run_info.size)
229
240
  assert_equal(1, run_info['model computer'])
230
241
  assert_equal(1, run_info['model wife'])
231
242
  assert_equal(1, run_info['model shoe'])
@@ -240,6 +251,8 @@ INPUT
240
251
  assert_equal(1, run_info['model house'])
241
252
  assert_equal(1, run_info['model dog'])
242
253
  assert_equal(1, run_info['model job'])
254
+ assert_equal(1, run_info['migration create_cars_people'])
255
+ assert_equal(1, run_info['model car'])
243
256
  end
244
257
 
245
258
  def _test_comment
@@ -258,6 +271,7 @@ INPUT
258
271
  'app/models/dog.rb' => "class Dog < ActiveRecord::Base\n has_many :generic_animals, :as => gogole\nend\n",
259
272
  'app/models/kid.rb' => "class Kid < ActiveRecord::Base\nend\n",
260
273
  'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n",
274
+ 'app/models/car.rb' => "class Car < ActiveRecord::Base\nend\n",
261
275
  'db/migrate/001_create_cats.rb' => "",
262
276
  'db/migrate/001_create_cats.rb' => "",
263
277
  'db/migrate/002_create_computers_users.rb' => "",
@@ -272,7 +286,9 @@ INPUT
272
286
  'db/migrate/011_create_wives.rb' => "",
273
287
  'db/migrate/012_create_dogs.rb' => "",
274
288
  'db/migrate/013_create_kids.rb' => "",
275
- 'db/migrate/014_create_houses.rb' => ""
289
+ 'db/migrate/014_create_houses.rb' => "",
290
+ 'db/migrate/104_create_cars_people.rb' => "",
291
+ 'db/migrate/015_create_cars.rb' => ""
276
292
  }
277
293
 
278
294
  $files_written_to = Array.new
@@ -34,6 +34,7 @@ class Dbd4Test < Test::Unit::TestCase
34
34
 
35
35
  def _test_with_all_errors_corrected
36
36
  b = DBD4::DBD4ModelFile.new(File.join(File.dirname(__FILE__), '..', 'data', 'good_example.xml'))
37
+ puts b.messages[:warnings]
37
38
  assert_equal(0, b.messages[:errors].size)
38
39
  assert_equal(0, b.messages[:warnings].size)
39
40
  a = b.to_str.readlines.zip(IO.readlines(File.join(File.dirname(__FILE__), '..', 'data', 'good_example.output')))
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: dbd4
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.4
7
- date: 2006-08-24 00:00:00 -04:00
6
+ version: 1.0.5
7
+ date: 2006-08-26 00:00:00 -04:00
8
8
  summary: A package for importing DB Designer 4 xml models in rails.
9
9
  require_paths:
10
10
  - lib