joinfix 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|