foreigner 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/foreigner/connection_adapters/sql2003.rb +1 -1
- data/lib/foreigner/migration/command_recorder.rb +16 -7
- data/test/helper.rb +1 -1
- data/test/unit/command_recorder_test.rb +40 -0
- data/test/{mysql2_adapter_test.rb → unit/mysql2_adapter_test.rb} +1 -1
- data/test/{sql2003_test.rb → unit/sql2003_test.rb} +1 -1
- metadata +5 -5
- data/test/reversible_test.rb +0 -42
@@ -9,13 +9,22 @@ module Foreigner
|
|
9
9
|
record(:remove_foreign_key, args)
|
10
10
|
end
|
11
11
|
|
12
|
-
def invert_add_foreign_key(
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
def invert_add_foreign_key(args)#from_table, to_table, add_options = {})
|
13
|
+
from_table, to_table, add_options = *args
|
14
|
+
add_options ||= {}
|
15
|
+
|
16
|
+
if add_options[:name]
|
17
|
+
options = {:name => add_options[:name]}
|
18
|
+
elsif add_options[:column]
|
19
|
+
options = {:column => add_options[:column]}
|
20
|
+
else
|
21
|
+
options = to_table
|
22
|
+
end
|
23
|
+
|
24
|
+
[:remove_foreign_key, [from_table, options]]
|
18
25
|
end
|
19
26
|
end
|
20
27
|
end
|
21
|
-
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
data/test/helper.rb
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
ActiveRecord::Migration::CommandRecorder.class_eval do
|
4
|
+
include ::Foreigner::Migration::CommandRecorder
|
5
|
+
end
|
6
|
+
|
7
|
+
class Foreigner::CommandRecorderTest < Foreigner::UnitTest
|
8
|
+
def setup
|
9
|
+
@recorder = ActiveRecord::Migration::CommandRecorder.new
|
10
|
+
end
|
11
|
+
|
12
|
+
test 'invert_add_foreign_key' do
|
13
|
+
@recorder.add_foreign_key(:employees, :companies)
|
14
|
+
remove = @recorder.inverse.first
|
15
|
+
assert_equal [:remove_foreign_key, [:employees, :companies]], remove
|
16
|
+
end
|
17
|
+
|
18
|
+
test 'invert_add_foreign_key with column' do
|
19
|
+
@recorder.add_foreign_key(:employees, :companies, :column => :place_id)
|
20
|
+
remove = @recorder.inverse.first
|
21
|
+
assert_equal [:remove_foreign_key, [:employees, {:column => :place_id}]], remove
|
22
|
+
end
|
23
|
+
|
24
|
+
test 'invert_add_foreign_key with name' do
|
25
|
+
@recorder.add_foreign_key(:employees, :companies, :name => 'the_best_fk', :column => :place_id)
|
26
|
+
remove = @recorder.inverse.first
|
27
|
+
assert_equal [:remove_foreign_key, [:employees, {:name => 'the_best_fk'}]], remove
|
28
|
+
|
29
|
+
@recorder.record :rename_table, [:old, :new]
|
30
|
+
rename = @recorder.inverse.first
|
31
|
+
assert_equal [:rename_table, [:new, :old]], rename
|
32
|
+
end
|
33
|
+
|
34
|
+
test 'remove_foreign_key is irreversible' do
|
35
|
+
@recorder.remove_foreign_key(:employees, :companies)
|
36
|
+
assert_raise ActiveRecord::IrreversibleMigration do
|
37
|
+
@recorder.inverse
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: foreigner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.0.
|
5
|
+
version: 1.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Matthew Higgins
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-06-02 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -47,9 +47,9 @@ files:
|
|
47
47
|
- lib/foreigner/schema_dumper.rb
|
48
48
|
- lib/foreigner.rb
|
49
49
|
- test/helper.rb
|
50
|
-
- test/
|
51
|
-
- test/
|
52
|
-
- test/sql2003_test.rb
|
50
|
+
- test/unit/command_recorder_test.rb
|
51
|
+
- test/unit/mysql2_adapter_test.rb
|
52
|
+
- test/unit/sql2003_test.rb
|
53
53
|
has_rdoc: true
|
54
54
|
homepage: http://github.com/matthuhiggins/foreigner
|
55
55
|
licenses: []
|
data/test/reversible_test.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class ReversibleTest < Foreigner::AdapterTest
|
4
|
-
include Foreigner::ConnectionAdapters::Mysql2Adapter
|
5
|
-
ActiveRecord::Migration::CommandRecorder.class_eval do
|
6
|
-
include Foreigner::Migration::CommandRecorder
|
7
|
-
end
|
8
|
-
|
9
|
-
test 'invert_remove_foreign_key' do
|
10
|
-
recorder = ActiveRecord::Migration::CommandRecorder.new
|
11
|
-
recorded = recorder.add_foreign_key(:table1, :table2)[0]
|
12
|
-
assert_equal(
|
13
|
-
send(recorded[0], *recorded[1]),
|
14
|
-
send(*recorder.invert_remove_foreign_key(:table1, :table2))
|
15
|
-
)
|
16
|
-
end
|
17
|
-
test 'invert_remove_foreign_key with column' do
|
18
|
-
recorder = ActiveRecord::Migration::CommandRecorder.new
|
19
|
-
recorded = recorder.add_foreign_key(:table1, :table2, :column => :column1)[0]
|
20
|
-
assert_equal(
|
21
|
-
send(recorded[0], *recorded[1]),
|
22
|
-
send(*recorder.invert_remove_foreign_key(:table1, :table2, :column => :column1))
|
23
|
-
)
|
24
|
-
end
|
25
|
-
test 'invert_add_foreign_key' do
|
26
|
-
recorder = ActiveRecord::Migration::CommandRecorder.new
|
27
|
-
recorded = recorder.remove_foreign_key(:table1, :table2)[0]
|
28
|
-
assert_equal(
|
29
|
-
send(recorded[0], *recorded[1]),
|
30
|
-
send(*recorder.invert_add_foreign_key(:table1, :table2))
|
31
|
-
)
|
32
|
-
end
|
33
|
-
test 'invert_add_foreign_key with column' do
|
34
|
-
recorder = ActiveRecord::Migration::CommandRecorder.new
|
35
|
-
recorded = recorder.remove_foreign_key(:table1, :table2, :column => :column1)[0]
|
36
|
-
assert_equal(
|
37
|
-
send(recorded[0], *recorded[1]),
|
38
|
-
send(*recorder.invert_add_foreign_key(:table1, :table2, :column => :column1))
|
39
|
-
)
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|