foreigner 1.0.2 → 1.0.3

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