immigrant 0.1.3 → 0.1.4

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