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.
- data/lib/immigrant.rb +2 -2
- data/test/immigrant_test.rb +63 -24
- 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
|
data/test/immigrant_test.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
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-
|
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:
|
44
|
+
hash: 29
|
45
45
|
segments:
|
46
46
|
- 1
|
47
|
+
- 2
|
47
48
|
- 1
|
48
|
-
|
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
|