joinfix 0.1.0 → 0.1.1
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/README +1 -1
- data/lib/joinfix/fixtures.rb +130 -155
- data/lib/joinfix/fixtures_class.rb +95 -30
- data/lib/joinfix.rb +108 -45
- data/rails/log/development.log +71 -0
- data/rails/log/test.log +85 -0
- data/rails/test/test_helper.rb +1 -0
- data/test/belongs_to_polymorphic_test.rb +78 -0
- data/test/belongs_to_test.rb +135 -44
- data/test/belongs_to_with_options_test.rb +57 -0
- data/test/has_and_belongs_to_many_test.rb +36 -36
- data/test/has_and_belongs_to_many_with_options_test.rb +84 -0
- data/test/has_many_as_test.rb +66 -0
- data/test/has_many_test.rb +33 -69
- data/test/has_many_through_test.rb +79 -0
- data/test/has_many_through_with_options_test.rb +85 -0
- data/test/has_many_with_options_test.rb +63 -0
- data/test/has_one_test.rb +26 -27
- data/test/has_one_with_options_test.rb +57 -0
- data/test/joinfix_test.rb +5 -5
- data/test/joinfix_test_helper.rb +76 -16
- data/test/missing_fixture_test.rb +54 -0
- data/test/nested_test.rb +13 -6
- data/test/todo +15 -0
- metadata +48 -51
- data/test/fixtures/as_children.yml +0 -0
- data/test/fixtures/bt_children.yml +0 -0
- data/test/fixtures/bt_parents.yml +0 -30
- data/test/fixtures/habtm_children.yml +0 -0
- data/test/fixtures/habtm_children_habtm_parents.yml +0 -0
- data/test/fixtures/habtm_joins.yml +0 -0
- data/test/fixtures/habtm_parents.yml +0 -18
- data/test/fixtures/hm_children.yml +0 -0
- data/test/fixtures/hm_joins.yml +0 -0
- data/test/fixtures/hm_parents.yml +0 -34
- data/test/fixtures/ho_children.yml +0 -0
- data/test/fixtures/ho_parents.yml +0 -14
- data/test/fixtures/no_join_fixes.yml +0 -4
- data/test/fixtures/omap_no_join_fixes.yml +0 -7
- data/test/fixtures/polymorphic_children.yml +0 -0
@@ -0,0 +1,57 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/joinfix_test_helper'
|
2
|
+
|
3
|
+
#
|
4
|
+
# belongs_to with configuration options
|
5
|
+
#
|
6
|
+
|
7
|
+
class BelongsToWithOptionsMigration < ActiveRecord::Migration
|
8
|
+
def self.up
|
9
|
+
create_table :bt_with_options_parents do |t|
|
10
|
+
t.column :field, :string
|
11
|
+
t.column :alternate, :integer
|
12
|
+
end
|
13
|
+
create_table :bt_with_options_children do |t|
|
14
|
+
t.column :field, :string
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.down
|
19
|
+
drop_table :bt_with_options_parents
|
20
|
+
drop_table :bt_with_options_children
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class BtWithOptionsParent < ActiveRecord::Base
|
25
|
+
belongs_to :child,
|
26
|
+
:foreign_key => "alternate",
|
27
|
+
:class_name => "BtWithOptionsChild"
|
28
|
+
end
|
29
|
+
|
30
|
+
class BtWithOptionsChild < ActiveRecord::Base
|
31
|
+
end
|
32
|
+
|
33
|
+
class BelongsToWithOptionsTest < Test::Unit::TestCase
|
34
|
+
fixtures :bt_with_options_parents, :bt_with_options_children
|
35
|
+
|
36
|
+
def test_belongs_to_with_options
|
37
|
+
setup_fixtures(
|
38
|
+
:bt_with_options_parents => %Q{
|
39
|
+
parent_entry:
|
40
|
+
field: parent value
|
41
|
+
child:
|
42
|
+
child_entry:
|
43
|
+
field: child value},
|
44
|
+
:bt_with_options_children => "")
|
45
|
+
|
46
|
+
assert_fixtures(
|
47
|
+
:bt_with_options_parents => %Q{
|
48
|
+
parent_entry:
|
49
|
+
id: 1
|
50
|
+
alternate: 1
|
51
|
+
field: parent value},
|
52
|
+
:bt_with_options_children => %Q{
|
53
|
+
child_entry:
|
54
|
+
id: 1
|
55
|
+
field: child value})
|
56
|
+
end
|
57
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/joinfix_test_helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class HasAndBelongsToManyMigration < ActiveRecord::Migration
|
4
4
|
def self.up
|
5
5
|
create_table :habtm_parents do |t|
|
6
6
|
t.column :field, :string
|
@@ -12,27 +12,17 @@ class HabtmMigration < ActiveRecord::Migration
|
|
12
12
|
t.column :habtm_parent_id, :integer
|
13
13
|
t.column :habtm_child_id, :integer
|
14
14
|
end
|
15
|
-
create_table :habtm_joins do |t|
|
16
|
-
t.column :join_parent_id, :integer
|
17
|
-
t.column :join_child_id, :integer
|
18
|
-
end
|
19
15
|
end
|
20
16
|
|
21
17
|
def self.down
|
22
18
|
drop_table :habtm_parents
|
23
19
|
drop_table :habtm_children
|
24
20
|
drop_table :habtm_children_habtm_parents
|
25
|
-
drop_table :habtm_joins
|
26
21
|
end
|
27
22
|
end
|
28
23
|
|
29
24
|
class HabtmParent < ActiveRecord::Base
|
30
25
|
has_and_belongs_to_many :habtm_children
|
31
|
-
has_and_belongs_to_many :children,
|
32
|
-
:foreign_key => "join_parent_id",
|
33
|
-
:association_foreign_key => "join_child_id",
|
34
|
-
:class_name => "HabtmChild",
|
35
|
-
:join_table => :habtm_joins
|
36
26
|
end
|
37
27
|
|
38
28
|
class HabtmChild < ActiveRecord::Base
|
@@ -41,32 +31,42 @@ end
|
|
41
31
|
class HabtmChildrenHabtmParent < ActiveRecord::Base
|
42
32
|
end
|
43
33
|
|
44
|
-
class HabtmJoin < ActiveRecord::Base
|
45
|
-
end
|
46
|
-
|
47
34
|
class HasAndBelongsToManyTest < Test::Unit::TestCase
|
48
|
-
fixtures :habtm_parents, :habtm_children, :habtm_children_habtm_parents
|
49
|
-
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
entry = habtm_parents(:with_habtm_children)
|
64
|
-
assert_equal "with_habtm_children", entry.field
|
65
|
-
assert_equal ["1","2"], entry.habtm_children.collect {|e| e.field}.sort
|
35
|
+
fixtures :habtm_parents, :habtm_children, :habtm_children_habtm_parents
|
36
|
+
|
37
|
+
def test_habtm
|
38
|
+
setup_fixtures(
|
39
|
+
:habtm_parents => %Q{
|
40
|
+
parent_entry:
|
41
|
+
field: parent value
|
42
|
+
habtm_children:
|
43
|
+
- child_one:
|
44
|
+
field: one
|
45
|
+
- child_two:
|
46
|
+
field: two},
|
47
|
+
:habtm_children => "",
|
48
|
+
:habtm_children_habtm_parents => "")
|
66
49
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
50
|
+
assert_fixtures(
|
51
|
+
:habtm_parents => %Q{
|
52
|
+
parent_entry:
|
53
|
+
id: 1
|
54
|
+
field: parent value},
|
55
|
+
:habtm_children => %Q{
|
56
|
+
child_one:
|
57
|
+
id: 1
|
58
|
+
field: one
|
59
|
+
child_two:
|
60
|
+
id: 2
|
61
|
+
field: two},
|
62
|
+
:habtm_children_habtm_parents => %Q{
|
63
|
+
child_one_parent_entry:
|
64
|
+
id: 1
|
65
|
+
habtm_parent_id: 1
|
66
|
+
habtm_child_id: 1
|
67
|
+
child_two_parent_entry:
|
68
|
+
id: 2
|
69
|
+
habtm_parent_id: 1
|
70
|
+
habtm_child_id: 2 })
|
71
71
|
end
|
72
72
|
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/joinfix_test_helper'
|
2
|
+
|
3
|
+
#
|
4
|
+
# Habtm with options
|
5
|
+
#
|
6
|
+
|
7
|
+
class HasAndBelongsToManyWithOptionsMigration < ActiveRecord::Migration
|
8
|
+
def self.up
|
9
|
+
create_table :habtm_with_options_parents do |t|
|
10
|
+
t.column :field, :string
|
11
|
+
end
|
12
|
+
create_table :habtm_with_options_children do |t|
|
13
|
+
t.column :field, :string
|
14
|
+
end
|
15
|
+
create_table :habtm_joins do |t|
|
16
|
+
t.column :field, :string
|
17
|
+
t.column :alternate_parent, :integer
|
18
|
+
t.column :alternate_child, :integer
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.down
|
23
|
+
drop_table :habtm_with_options_parents
|
24
|
+
drop_table :habtm_with_options_children
|
25
|
+
drop_table :habtm_joins
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class HabtmWithOptionsParent < ActiveRecord::Base
|
30
|
+
has_and_belongs_to_many :children,
|
31
|
+
:foreign_key => "alternate_parent",
|
32
|
+
:association_foreign_key => "alternate_child",
|
33
|
+
:class_name => "HabtmWithOptionsChild",
|
34
|
+
:join_table => :habtm_joins
|
35
|
+
end
|
36
|
+
|
37
|
+
class HabtmWithOptionsChild < ActiveRecord::Base
|
38
|
+
end
|
39
|
+
|
40
|
+
class HabtmJoin < ActiveRecord::Base
|
41
|
+
end
|
42
|
+
|
43
|
+
class HasAndBelongsToManyWithOptionsTest < Test::Unit::TestCase
|
44
|
+
fixtures :habtm_with_options_parents, :habtm_with_options_children, :habtm_joins
|
45
|
+
|
46
|
+
def test_habtm_with_options
|
47
|
+
setup_fixtures(
|
48
|
+
:habtm_with_options_parents => %Q{
|
49
|
+
parent_entry:
|
50
|
+
field: parent value
|
51
|
+
children:
|
52
|
+
- child_one:
|
53
|
+
field: one
|
54
|
+
- child_two:
|
55
|
+
field: two},
|
56
|
+
:habtm_with_options_children => "",
|
57
|
+
:habtm_joins => "
|
58
|
+
child_one_parent_entry:
|
59
|
+
field: one value")
|
60
|
+
|
61
|
+
assert_fixtures(
|
62
|
+
:habtm_with_options_parents => %Q{
|
63
|
+
parent_entry:
|
64
|
+
id: 1
|
65
|
+
field: parent value},
|
66
|
+
:habtm_with_options_children => %Q{
|
67
|
+
child_one:
|
68
|
+
id: 1
|
69
|
+
field: one
|
70
|
+
child_two:
|
71
|
+
id: 2
|
72
|
+
field: two},
|
73
|
+
:habtm_joins => %Q{
|
74
|
+
child_one_parent_entry:
|
75
|
+
id: 1
|
76
|
+
field: one value
|
77
|
+
alternate_parent: 1
|
78
|
+
alternate_child: 1
|
79
|
+
child_two_parent_entry:
|
80
|
+
id: 2
|
81
|
+
alternate_parent: 1
|
82
|
+
alternate_child: 2 })
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/joinfix_test_helper'
|
2
|
+
|
3
|
+
#
|
4
|
+
# hm as
|
5
|
+
#
|
6
|
+
|
7
|
+
class HasManyAsMigration < ActiveRecord::Migration
|
8
|
+
def self.up
|
9
|
+
create_table :hm_as_parents do |t|
|
10
|
+
t.column :field, :string
|
11
|
+
end
|
12
|
+
create_table :hm_as_children do |t|
|
13
|
+
t.column :polymorphic_parent_id, :integer
|
14
|
+
t.column :polymorphic_parent_type, :string
|
15
|
+
t.column :field, :string
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.down
|
20
|
+
drop_table :hm_as_parents
|
21
|
+
drop_table :hm_as_children
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class HmAsParent < ActiveRecord::Base
|
26
|
+
has_many :hm_as_children,
|
27
|
+
:as => :polymorphic_parent
|
28
|
+
end
|
29
|
+
|
30
|
+
class HmAsChild < ActiveRecord::Base
|
31
|
+
belongs_to :polymorphic_parent, :polymorphic => true
|
32
|
+
end
|
33
|
+
|
34
|
+
class HasManyAsTest < Test::Unit::TestCase
|
35
|
+
fixtures :hm_as_parents, :hm_as_children
|
36
|
+
|
37
|
+
def test_has_many_as
|
38
|
+
setup_fixtures(
|
39
|
+
:hm_as_parents => %Q{
|
40
|
+
parent_entry:
|
41
|
+
field: parent value
|
42
|
+
hm_as_children:
|
43
|
+
child_one:
|
44
|
+
field: one
|
45
|
+
child_two:
|
46
|
+
field: two},
|
47
|
+
:hm_as_children => "")
|
48
|
+
|
49
|
+
assert_fixtures(
|
50
|
+
:hm_as_parents => %Q{
|
51
|
+
parent_entry:
|
52
|
+
id: 1
|
53
|
+
field: parent value},
|
54
|
+
:hm_as_children => %Q{
|
55
|
+
child_one:
|
56
|
+
id: 1
|
57
|
+
polymorphic_parent_id: 1
|
58
|
+
polymorphic_parent_type: HmAsParent
|
59
|
+
field: one
|
60
|
+
child_two:
|
61
|
+
id: 2
|
62
|
+
polymorphic_parent_id: 1
|
63
|
+
polymorphic_parent_type: HmAsParent
|
64
|
+
field: two})
|
65
|
+
end
|
66
|
+
end
|
data/test/has_many_test.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/joinfix_test_helper'
|
2
2
|
|
3
|
-
|
3
|
+
#
|
4
|
+
# has many test
|
5
|
+
#
|
6
|
+
|
7
|
+
class HasManyMigration < ActiveRecord::Migration
|
4
8
|
def self.up
|
5
9
|
create_table :hm_parents do |t|
|
6
10
|
t.column :field, :string
|
@@ -8,90 +12,50 @@ class HmMigration < ActiveRecord::Migration
|
|
8
12
|
create_table :hm_children do |t|
|
9
13
|
t.column :field, :string
|
10
14
|
t.column :hm_parent_id, :integer
|
11
|
-
t.column :alt_id, :integer
|
12
|
-
end
|
13
|
-
create_table :hm_joins do |t|
|
14
|
-
t.column :hm_parent_id, :integer
|
15
|
-
t.column :hm_child_id, :integer
|
16
15
|
end
|
17
|
-
create_table :as_children do |t|
|
18
|
-
t.column :polymorphic_parent_id, :integer
|
19
|
-
t.column :polymorphic_parent_type, :string
|
20
|
-
t.column :field, :string
|
21
|
-
end
|
22
16
|
end
|
23
17
|
|
24
18
|
def self.down
|
25
19
|
drop_table :hm_parents
|
26
20
|
drop_table :hm_children
|
27
|
-
drop_table :hm_joins
|
28
|
-
drop_table :as_children
|
29
21
|
end
|
30
22
|
end
|
31
23
|
|
32
24
|
class HmParent < ActiveRecord::Base
|
33
25
|
has_many :hm_children
|
34
|
-
has_many :children,
|
35
|
-
:foreign_key => "alt_id",
|
36
|
-
:class_name => "HmChild"
|
37
|
-
|
38
|
-
has_many :hm_joins
|
39
|
-
has_many :join_children,
|
40
|
-
:through => :hm_joins,
|
41
|
-
:source => :hm_child
|
42
|
-
|
43
|
-
has_many :through_children,
|
44
|
-
:through => :hm_joins,
|
45
|
-
:source => :hm_child
|
46
|
-
|
47
|
-
has_many :as_children,
|
48
|
-
:as => :polymorphic_parent
|
49
26
|
end
|
50
27
|
|
51
28
|
class HmChild < ActiveRecord::Base
|
52
29
|
end
|
53
30
|
|
54
|
-
class HmJoin < ActiveRecord::Base
|
55
|
-
belongs_to :hm_child
|
56
|
-
end
|
57
|
-
|
58
|
-
class AsChild < ActiveRecord::Base
|
59
|
-
belongs_to :polymorphic_parent, :polymorphic => true
|
60
|
-
end
|
61
|
-
|
62
31
|
class HasManyTest < Test::Unit::TestCase
|
63
|
-
fixtures :hm_parents, :hm_children
|
64
|
-
|
65
|
-
def setup
|
66
|
-
end
|
67
|
-
|
68
|
-
def teardown
|
69
|
-
end
|
70
|
-
|
32
|
+
fixtures :hm_parents, :hm_children
|
33
|
+
|
71
34
|
def test_has_many
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
35
|
+
setup_fixtures(
|
36
|
+
:hm_parents => %Q{
|
37
|
+
parent_entry:
|
38
|
+
field: parent value
|
39
|
+
hm_children:
|
40
|
+
- child_one:
|
41
|
+
field: one
|
42
|
+
- child_two:
|
43
|
+
field: two},
|
44
|
+
:hm_children => "")
|
45
|
+
|
46
|
+
assert_fixtures(
|
47
|
+
:hm_parents => %Q{
|
48
|
+
parent_entry:
|
49
|
+
id: 1
|
50
|
+
field: parent value},
|
51
|
+
:hm_children => %Q{
|
52
|
+
child_one:
|
53
|
+
id: 1
|
54
|
+
hm_parent_id: 1
|
55
|
+
field: one
|
56
|
+
child_two:
|
57
|
+
id: 2
|
58
|
+
hm_parent_id: 1
|
59
|
+
field: two})
|
96
60
|
end
|
97
|
-
end
|
61
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/joinfix_test_helper'
|
2
|
+
|
3
|
+
#
|
4
|
+
# hm through
|
5
|
+
#
|
6
|
+
|
7
|
+
class HasManyThroughMigration < ActiveRecord::Migration
|
8
|
+
def self.up
|
9
|
+
create_table :hm_through_parents do |t|
|
10
|
+
t.column :field, :string
|
11
|
+
end
|
12
|
+
create_table :hm_through_children do |t|
|
13
|
+
t.column :field, :string
|
14
|
+
end
|
15
|
+
create_table :hm_through_joins do |t|
|
16
|
+
t.column :hm_through_parent_id, :integer
|
17
|
+
t.column :hm_through_child_id, :integer
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.down
|
22
|
+
drop_table :hm_through_parents
|
23
|
+
drop_table :hm_through_children
|
24
|
+
drop_table :hm_through_joins
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
class HmThroughParent < ActiveRecord::Base
|
30
|
+
has_many :hm_through_joins
|
31
|
+
has_many :hm_through_children, :through => :hm_through_joins
|
32
|
+
end
|
33
|
+
|
34
|
+
class HmThroughChild < ActiveRecord::Base
|
35
|
+
end
|
36
|
+
|
37
|
+
class HmThroughJoin < ActiveRecord::Base
|
38
|
+
belongs_to :hm_through_child
|
39
|
+
end
|
40
|
+
|
41
|
+
class HasManyThroughTest < Test::Unit::TestCase
|
42
|
+
fixtures :hm_through_parents, :hm_through_children, :hm_through_joins
|
43
|
+
|
44
|
+
def test_has_many_through
|
45
|
+
setup_fixtures(
|
46
|
+
:hm_through_parents => %Q{
|
47
|
+
parent_entry:
|
48
|
+
field: parent value
|
49
|
+
hm_through_children:
|
50
|
+
- child_one:
|
51
|
+
field: one
|
52
|
+
- child_two:
|
53
|
+
field: two},
|
54
|
+
:hm_through_children => "",
|
55
|
+
:hm_through_joins => "")
|
56
|
+
|
57
|
+
assert_fixtures(
|
58
|
+
:hm_through_parents => %Q{
|
59
|
+
parent_entry:
|
60
|
+
id: 1
|
61
|
+
field: parent value},
|
62
|
+
:hm_through_children => %Q{
|
63
|
+
child_one:
|
64
|
+
id: 1
|
65
|
+
field: one
|
66
|
+
child_two:
|
67
|
+
id: 2
|
68
|
+
field: two},
|
69
|
+
:hm_through_joins => %Q{
|
70
|
+
child_one_parent_entry:
|
71
|
+
id: 1
|
72
|
+
hm_through_parent_id: 1
|
73
|
+
hm_through_child_id: 1
|
74
|
+
child_two_parent_entry:
|
75
|
+
id: 2
|
76
|
+
hm_through_parent_id: 1
|
77
|
+
hm_through_child_id: 2})
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/joinfix_test_helper'
|
2
|
+
|
3
|
+
#
|
4
|
+
# hm through
|
5
|
+
#
|
6
|
+
|
7
|
+
class HasManyThroughWithOptionsMigration < ActiveRecord::Migration
|
8
|
+
def self.up
|
9
|
+
create_table :hm_through_with_options_parents do |t|
|
10
|
+
t.column :field, :string
|
11
|
+
end
|
12
|
+
create_table :hm_through_with_options_children do |t|
|
13
|
+
t.column :field, :string
|
14
|
+
end
|
15
|
+
create_table :hm_through_with_options_joins do |t|
|
16
|
+
t.column :alternate_parent, :integer
|
17
|
+
t.column :alternate_child, :integer
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.down
|
22
|
+
drop_table :hm_through_with_options_parents
|
23
|
+
drop_table :hm_through_with_options_children
|
24
|
+
drop_table :hm_through_with_options_joins
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
class HmThroughWithOptionsParent < ActiveRecord::Base
|
30
|
+
has_many :through_joins,
|
31
|
+
:class_name => 'HmThroughWithOptionsJoin',
|
32
|
+
:foreign_key => 'alternate_parent'
|
33
|
+
has_many :children,
|
34
|
+
:through => :through_joins,
|
35
|
+
:source => :through_child
|
36
|
+
end
|
37
|
+
|
38
|
+
class HmThroughWithOptionsChild < ActiveRecord::Base
|
39
|
+
end
|
40
|
+
|
41
|
+
class HmThroughWithOptionsJoin < ActiveRecord::Base
|
42
|
+
belongs_to :through_child,
|
43
|
+
:class_name => 'HmThroughWithOptionsChild',
|
44
|
+
:foreign_key => 'alternate_child'
|
45
|
+
end
|
46
|
+
|
47
|
+
class HasManyThroughWithOptionsTest < Test::Unit::TestCase
|
48
|
+
fixtures :hm_through_with_options_parents, :hm_through_with_options_children, :hm_through_with_options_joins
|
49
|
+
|
50
|
+
def test_has_many_through_with_options
|
51
|
+
setup_fixtures(
|
52
|
+
:hm_through_with_options_parents => %Q{
|
53
|
+
parent_entry:
|
54
|
+
field: parent value
|
55
|
+
children:
|
56
|
+
- child_one:
|
57
|
+
field: one
|
58
|
+
- child_two:
|
59
|
+
field: two},
|
60
|
+
:hm_through_with_options_children => "",
|
61
|
+
:hm_through_with_options_joins => "")
|
62
|
+
|
63
|
+
assert_fixtures(
|
64
|
+
:hm_through_with_options_parents => %Q{
|
65
|
+
parent_entry:
|
66
|
+
id: 1
|
67
|
+
field: parent value},
|
68
|
+
:hm_through_with_options_children => %Q{
|
69
|
+
child_one:
|
70
|
+
id: 1
|
71
|
+
field: one
|
72
|
+
child_two:
|
73
|
+
id: 2
|
74
|
+
field: two},
|
75
|
+
:hm_through_with_options_joins => %Q{
|
76
|
+
child_one_parent_entry:
|
77
|
+
id: 1
|
78
|
+
alternate_parent: 1
|
79
|
+
alternate_child: 1
|
80
|
+
child_two_parent_entry:
|
81
|
+
id: 2
|
82
|
+
alternate_parent: 1
|
83
|
+
alternate_child: 2})
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/joinfix_test_helper'
|
2
|
+
|
3
|
+
#
|
4
|
+
# hm with options
|
5
|
+
#
|
6
|
+
|
7
|
+
class HasManyWithOptionsMigration < ActiveRecord::Migration
|
8
|
+
def self.up
|
9
|
+
create_table :hm_with_options_parents do |t|
|
10
|
+
t.column :field, :string
|
11
|
+
end
|
12
|
+
create_table :hm_with_options_children do |t|
|
13
|
+
t.column :field, :string
|
14
|
+
t.column :alternate, :integer
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.down
|
19
|
+
drop_table :hm_with_options_parents
|
20
|
+
drop_table :hm_with_options_children
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class HmWithOptionsParent < ActiveRecord::Base
|
25
|
+
has_many :children,
|
26
|
+
:foreign_key => "alternate",
|
27
|
+
:class_name => "HmWithOptionsChild"
|
28
|
+
end
|
29
|
+
|
30
|
+
class HmWithOptionsChild < ActiveRecord::Base
|
31
|
+
end
|
32
|
+
|
33
|
+
class HasManyWithOptionsTest < Test::Unit::TestCase
|
34
|
+
fixtures :hm_with_options_parents, :hm_with_options_children
|
35
|
+
|
36
|
+
def test_has_many_with_options
|
37
|
+
setup_fixtures(
|
38
|
+
:hm_with_options_parents => %Q{
|
39
|
+
parent_entry:
|
40
|
+
field: parent value
|
41
|
+
children:
|
42
|
+
- child_one:
|
43
|
+
field: one
|
44
|
+
- child_two:
|
45
|
+
field: two},
|
46
|
+
:hm_with_options_children => "")
|
47
|
+
|
48
|
+
assert_fixtures(
|
49
|
+
:hm_with_options_parents => %Q{
|
50
|
+
parent_entry:
|
51
|
+
id: 1
|
52
|
+
field: parent value},
|
53
|
+
:hm_with_options_children => %Q{
|
54
|
+
child_one:
|
55
|
+
id: 1
|
56
|
+
alternate: 1
|
57
|
+
field: one
|
58
|
+
child_two:
|
59
|
+
id: 2
|
60
|
+
alternate: 1
|
61
|
+
field: two})
|
62
|
+
end
|
63
|
+
end
|