foreigner 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -26,7 +26,7 @@ module Foreigner
26
26
  sql
27
27
  end
28
28
 
29
- def remove_foreign_key(table, to_table = nil, options = {})
29
+ def remove_foreign_key(table, options = {})
30
30
  execute "ALTER TABLE #{quote_table_name(table)} #{remove_foreign_key_sql(table, options)}"
31
31
  end
32
32
 
@@ -9,13 +9,22 @@ module Foreigner
9
9
  record(:remove_foreign_key, args)
10
10
  end
11
11
 
12
- def invert_add_foreign_key(*args)
13
- [:remove_foreign_key, *args]
14
- end
15
-
16
- def invert_remove_foreign_key(*args)
17
- [:add_foreign_key, *args]
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
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'test/unit'
3
3
  require 'rails/all'
4
4
 
5
- require 'foreigner'
5
+ require File.expand_path('../../lib/foreigner', __FILE__)
6
6
 
7
7
  Foreigner::Adapter.registered.values.each do |file_name|
8
8
  require file_name
@@ -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
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class Mysql2AdapterTest < Foreigner::AdapterTest
3
+ class Foreigner::Mysql2AdapterTest < Foreigner::UnitTest
4
4
  include Foreigner::ConnectionAdapters::Mysql2Adapter
5
5
 
6
6
  test 'remove_by_table' do
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class Sql2003Test < Foreigner::AdapterTest
3
+ class Foreigner::Sql2003Test < Foreigner::UnitTest
4
4
  include Foreigner::ConnectionAdapters::Sql2003
5
5
 
6
6
  test 'add_without_options' do
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: foreigner
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.2
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-05-24 00:00:00 -07:00
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/mysql2_adapter_test.rb
51
- - test/reversible_test.rb
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: []
@@ -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