immigrant 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/immigrant.rb +2 -2
  2. data/test/immigrant_test.rb +63 -24
  3. metadata +7 -7
data/lib/immigrant.rb CHANGED
@@ -106,13 +106,13 @@ module Immigrant
106
106
  when :has_and_belongs_to_many
107
107
  [
108
108
  Foreigner::ConnectionAdapters::ForeignKeyDefinition.new(
109
- reflection.options[:join_table], klass.table_name,
109
+ reflection.options[:join_table].to_s, klass.table_name,
110
110
  :column => reflection.send(fk_method).to_s,
111
111
  :primary_key => klass.primary_key.to_s,
112
112
  :dependent => nil
113
113
  ),
114
114
  Foreigner::ConnectionAdapters::ForeignKeyDefinition.new(
115
- reflection.options[:join_table], reflection.klass.table_name,
115
+ reflection.options[:join_table].to_s, reflection.klass.table_name,
116
116
  :column => reflection.association_foreign_key.to_s,
117
117
  :primary_key => reflection.klass.primary_key.to_s,
118
118
  :dependent => nil
@@ -41,12 +41,14 @@ class ImmigrantTest < ActiveSupport::TestCase
41
41
  belongs_to :guy, :class_name => 'Author', :foreign_key => 'author_id'
42
42
  end
43
43
 
44
+ keys = Immigrant.infer_keys([], [Author, Book]).first
45
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
44
46
  assert_equal(
45
47
  [foreign_key_definition(
46
48
  'books', 'authors',
47
49
  :column => 'author_id', :primary_key => 'id', :dependent => nil
48
50
  )],
49
- Immigrant.infer_keys([], [Author, Book]).first
51
+ keys
50
52
  )
51
53
  end
52
54
 
@@ -56,12 +58,14 @@ class ImmigrantTest < ActiveSupport::TestCase
56
58
  end
57
59
  class Book < MockModel; end
58
60
 
61
+ keys = Immigrant.infer_keys([], [Author, Book]).first
62
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
59
63
  assert_equal(
60
64
  [foreign_key_definition(
61
65
  'books', 'authors',
62
66
  :column => 'author_id', :primary_key => 'id', :dependent => nil
63
67
  )],
64
- Immigrant.infer_keys([], [Author, Book]).first
68
+ keys
65
69
  )
66
70
  end
67
71
 
@@ -71,12 +75,14 @@ class ImmigrantTest < ActiveSupport::TestCase
71
75
  end
72
76
  class Book < MockModel; end
73
77
 
78
+ keys = Immigrant.infer_keys([], [Author, Book]).first
79
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
74
80
  assert_equal(
75
81
  [foreign_key_definition(
76
82
  'books', 'authors',
77
83
  :column => 'author_id', :primary_key => 'id', :dependent => :delete
78
84
  )],
79
- Immigrant.infer_keys([], [Author, Book]).first
85
+ keys
80
86
  )
81
87
  end
82
88
 
@@ -86,12 +92,14 @@ class ImmigrantTest < ActiveSupport::TestCase
86
92
  end
87
93
  class Book < MockModel; end
88
94
 
95
+ keys = Immigrant.infer_keys([], [Author, Book]).first
96
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
89
97
  assert_equal(
90
98
  [foreign_key_definition(
91
99
  'books', 'authors',
92
100
  :column => 'author_id', :primary_key => 'id', :dependent => nil
93
101
  )],
94
- Immigrant.infer_keys([], [Author, Book]).first
102
+ keys
95
103
  )
96
104
  end
97
105
 
@@ -101,12 +109,14 @@ class ImmigrantTest < ActiveSupport::TestCase
101
109
  end
102
110
  class Book < MockModel; end
103
111
 
112
+ keys = Immigrant.infer_keys([], [Author, Book]).first
113
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
104
114
  assert_equal(
105
115
  [foreign_key_definition(
106
116
  'books', 'authors',
107
117
  :column => 'author_id', :primary_key => 'id', :dependent => :delete
108
118
  )],
109
- Immigrant.infer_keys([], [Author, Book]).first
119
+ keys
110
120
  )
111
121
  end
112
122
 
@@ -116,6 +126,8 @@ class ImmigrantTest < ActiveSupport::TestCase
116
126
  end
117
127
  class Fan < MockModel; end
118
128
 
129
+ keys = Immigrant.infer_keys([], [Author, Fan]).first
130
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
119
131
  assert_equal(
120
132
  [foreign_key_definition(
121
133
  'authors_fans', 'authors',
@@ -125,7 +137,28 @@ class ImmigrantTest < ActiveSupport::TestCase
125
137
  'authors_fans', 'fans',
126
138
  :column => 'fan_id', :primary_key => 'id', :dependent => nil
127
139
  )],
128
- Immigrant.infer_keys([], [Author, Fan]).first
140
+ keys
141
+ )
142
+ end
143
+
144
+ test 'has_and_belongs_to_many should respect the join_table' do
145
+ class Author < MockModel
146
+ has_and_belongs_to_many :fans, :join_table => :lol_wuts
147
+ end
148
+ class Fan < MockModel; end
149
+
150
+ keys = Immigrant.infer_keys([], [Author, Fan]).first
151
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
152
+ assert_equal(
153
+ [foreign_key_definition(
154
+ 'lol_wuts', 'authors',
155
+ :column => 'author_id', :primary_key => 'id', :dependent => nil
156
+ ),
157
+ foreign_key_definition(
158
+ 'lol_wuts', 'fans',
159
+ :column => 'fan_id', :primary_key => 'id', :dependent => nil
160
+ )],
161
+ keys
129
162
  )
130
163
  end
131
164
 
@@ -138,6 +171,8 @@ class ImmigrantTest < ActiveSupport::TestCase
138
171
  class Book < MockModel; end
139
172
  class Article < MockModel; end
140
173
 
174
+ keys = Immigrant.infer_keys([], [Article, Author, Book]).first
175
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
141
176
  assert_equal(
142
177
  [foreign_key_definition(
143
178
  'articles', 'authors',
@@ -147,7 +182,7 @@ class ImmigrantTest < ActiveSupport::TestCase
147
182
  'books', 'authors',
148
183
  :column => 'author_id', :primary_key => 'id', :dependent => nil
149
184
  )],
150
- Immigrant.infer_keys([], [Article, Author, Book]).first
185
+ keys
151
186
  )
152
187
  end
153
188
 
@@ -162,12 +197,14 @@ class ImmigrantTest < ActiveSupport::TestCase
162
197
  class Manager < Employee; end
163
198
 
164
199
  assert(Manager.reflections.present?)
200
+ keys = Immigrant.infer_keys([], [Company, Employee, Manager]).first
201
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
165
202
  assert_equal(
166
203
  [foreign_key_definition(
167
204
  'employees', 'companies',
168
205
  :column => 'company_id', :primary_key => 'id', :dependent => nil
169
206
  )],
170
- Immigrant.infer_keys([], [Company, Employee, Manager]).first
207
+ keys
171
208
  )
172
209
  end
173
210
 
@@ -179,12 +216,14 @@ class ImmigrantTest < ActiveSupport::TestCase
179
216
  belongs_to :author
180
217
  end
181
218
 
219
+ keys = Immigrant.infer_keys([], [Author, Book]).first
220
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
182
221
  assert_equal(
183
222
  [foreign_key_definition(
184
223
  'books', 'authors',
185
224
  :column => 'author_id', :primary_key => 'id', :dependent => nil
186
225
  )],
187
- Immigrant.infer_keys([], [Author, Book]).first
226
+ keys
188
227
  )
189
228
  end
190
229
 
@@ -196,12 +235,14 @@ class ImmigrantTest < ActiveSupport::TestCase
196
235
  end
197
236
  class Book < MockModel; end
198
237
 
238
+ keys = Immigrant.infer_keys([], [Author, Book]).first
239
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
199
240
  assert_equal(
200
241
  [foreign_key_definition(
201
242
  'books', 'authors',
202
243
  :column => 'author_id', :primary_key => 'id', :dependent => nil
203
244
  )],
204
- Immigrant.infer_keys([], [Author, Book]).first
245
+ keys
205
246
  )
206
247
  end
207
248
 
@@ -229,10 +270,8 @@ class ImmigrantTest < ActiveSupport::TestCase
229
270
  class Book < MockModel; end
230
271
  class Article < MockModel; end
231
272
 
232
- assert_equal(
233
- [],
234
- Immigrant.infer_keys(database_keys, [Article, Author, Book]).first
235
- )
273
+ keys = Immigrant.infer_keys(database_keys, [Article, Author, Book]).first
274
+ assert_equal([], keys)
236
275
  end
237
276
 
238
277
  test 'finder_sql associations should not generate foreign keys' do
@@ -246,10 +285,8 @@ class ImmigrantTest < ActiveSupport::TestCase
246
285
  end
247
286
  class Book < MockModel; end
248
287
 
249
- assert_equal(
250
- [],
251
- Immigrant.infer_keys([], [Author, Book]).first
252
- )
288
+ keys = Immigrant.infer_keys([], [Author, Book]).first
289
+ assert_equal([], keys)
253
290
  end
254
291
 
255
292
  test 'polymorphic associations should not generate foreign keys' do
@@ -263,10 +300,8 @@ class ImmigrantTest < ActiveSupport::TestCase
263
300
  has_many :properties, :as => :owner
264
301
  end
265
302
 
266
- assert_equal(
267
- [],
268
- Immigrant.infer_keys([], [Corporation, Person, Property]).first
269
- )
303
+ keys = Immigrant.infer_keys([], [Corporation, Person, Property]).first
304
+ assert_equal([], keys)
270
305
  end
271
306
 
272
307
  test 'has_many :through should not generate foreign keys' do
@@ -283,6 +318,8 @@ class ImmigrantTest < ActiveSupport::TestCase
283
318
  has_many :authors, :through => :authors_fans
284
319
  end
285
320
 
321
+ keys = Immigrant.infer_keys([], [Author, AuthorsFan, Fan]).first
322
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
286
323
  assert_equal(
287
324
  [foreign_key_definition(
288
325
  'authors_fans', 'authors',
@@ -292,7 +329,7 @@ class ImmigrantTest < ActiveSupport::TestCase
292
329
  'authors_fans', 'fans',
293
330
  :column => 'fan_id', :primary_key => 'id', :dependent => nil
294
331
  )],
295
- Immigrant.infer_keys([], [Author, AuthorsFan, Fan]).first
332
+ keys
296
333
  )
297
334
  end
298
335
 
@@ -303,12 +340,14 @@ class ImmigrantTest < ActiveSupport::TestCase
303
340
  belongs_to :invalid
304
341
  end
305
342
 
343
+ keys = Immigrant.infer_keys([], [Author, Book]).first
344
+ assert_nothing_raised { keys.map { |key| key.to_ruby(:add) } }
306
345
  assert_equal(
307
346
  [foreign_key_definition(
308
347
  'books', 'authors',
309
348
  :column => 'author_id', :primary_key => 'id', :dependent => nil
310
349
  )],
311
- Immigrant.infer_keys([], [Author, Book]).first
350
+ keys
312
351
  )
313
352
  end
314
353
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: immigrant
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jon Jensen
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-11-11 00:00:00 -07:00
18
+ date: 2012-12-13 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -41,12 +41,12 @@ dependencies:
41
41
  requirements:
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- hash: 31
44
+ hash: 29
45
45
  segments:
46
46
  - 1
47
+ - 2
47
48
  - 1
48
- - 6
49
- version: 1.1.6
49
+ version: 1.2.1
50
50
  type: :runtime
51
51
  version_requirements: *id002
52
52
  description: Adds a generator for creating a foreign key migration based on your current model associations