12
12
namespace Symfony \UX \Autocomplete \Tests \Integration \Doctrine ;
13
13
14
14
use Doctrine \DBAL \Types \Types ;
15
- use Doctrine \ORM \Mapping \ClassMetadataInfo ;
16
15
use Symfony \Bundle \FrameworkBundle \Test \KernelTestCase ;
17
16
use Symfony \UX \Autocomplete \Doctrine \EntityMetadata ;
18
17
use Symfony \UX \Autocomplete \Doctrine \EntityMetadataFactory ;
@@ -51,13 +50,16 @@ public function testGetPropertyDataType(): void
51
50
{
52
51
$ metadata = $ this ->getMetadata ();
53
52
$ this ->assertSame (Types::STRING , $ metadata ->getPropertyDataType ('name ' ));
54
- $ this ->assertEquals (ClassMetadataInfo::MANY_TO_ONE , $ metadata ->getPropertyDataType ('category ' ));
53
+ // ORM 2.* ClassMetadataInfo::MANY_TO_ONE
54
+ // ORM 3.* ClassMetadata::MANY_TO_ONE
55
+ $ this ->assertEquals (2 , $ metadata ->getPropertyDataType ('category ' ));
55
56
}
56
57
57
58
public function testGetFieldMetadata (): void
58
59
{
59
60
$ metadata = $ this ->getMetadata ();
60
- $ this ->assertSame ([
61
+ $ nameMetadata = $ metadata ->getFieldMetadata ('name ' );
62
+ $ expected = [
61
63
'fieldName ' => 'name ' ,
62
64
'type ' => 'string ' ,
63
65
'scale ' => null ,
@@ -66,48 +68,68 @@ public function testGetFieldMetadata(): void
66
68
'nullable ' => false ,
67
69
'precision ' => null ,
68
70
'columnName ' => 'name ' ,
69
- ], $ metadata ->getFieldMetadata ('name ' ));
71
+ ];
72
+ foreach ($ expected as $ key => $ value ) {
73
+ $ this ->assertArrayHasKey ($ key , $ nameMetadata );
74
+ $ this ->assertSame ($ value , $ nameMetadata [$ key ]);
75
+ }
70
76
}
71
77
72
78
public function testGetAssociationMetadata (): void
73
79
{
74
80
$ metadata = $ this ->getMetadata ();
75
- $ this -> assertSame ( [
81
+ $ expected = [
76
82
'fieldName ' => 'category ' ,
77
- 'joinColumns ' => [
78
- [
79
- 'name ' => 'category_id ' ,
80
- 'unique ' => false ,
81
- 'nullable ' => false ,
82
- 'onDelete ' => null ,
83
- 'columnDefinition ' => null ,
84
- 'referencedColumnName ' => 'id ' ,
85
- ],
86
- ],
87
- 'cascade ' => [],
88
83
'inversedBy ' => 'products ' ,
89
84
'targetEntity ' => 'Symfony\UX\Autocomplete\Tests\Fixtures\Entity\Category ' ,
90
85
'fetch ' => 2 ,
91
- 'type ' => 2 ,
92
- 'mappedBy ' => null ,
93
86
'isOwningSide ' => true ,
94
87
'sourceEntity ' => 'Symfony\UX\Autocomplete\Tests\Fixtures\Entity\Product ' ,
95
- 'isCascadeRemove ' => false ,
96
- 'isCascadePersist ' => false ,
97
- 'isCascadeRefresh ' => false ,
98
- 'isCascadeMerge ' => false ,
99
- 'isCascadeDetach ' => false ,
100
88
'sourceToTargetKeyColumns ' => [
101
89
'category_id ' => 'id ' ,
102
90
],
103
- 'joinColumnFieldNames ' => [
104
- 'category_id ' => 'category_id ' ,
105
- ],
106
91
'targetToSourceKeyColumns ' => [
107
92
'id ' => 'category_id ' ,
108
93
],
109
94
'orphanRemoval ' => false ,
110
- ], $ metadata ->getAssociationMetadata ('category ' ));
95
+ ];
96
+
97
+ $ metadata = $ metadata ->getAssociationMetadata ('category ' );
98
+
99
+ foreach ($ expected as $ key => $ val ) {
100
+ $ this ->assertArrayHasKey ($ key , $ metadata );
101
+ if (!\is_array ($ val )) {
102
+ $ this ->assertEquals ($ val , $ metadata [$ key ]);
103
+ continue ;
104
+ }
105
+ foreach ($ val as $ k => $ v ) {
106
+ $ this ->assertArrayHasKey ($ k , $ metadata [$ key ]);
107
+ $ this ->assertEquals ($ v , $ metadata [$ key ][$ k ]);
108
+ }
109
+ }
110
+
111
+ $ this ->assertArrayHasKey ('joinColumns ' , $ metadata );
112
+ $ this ->assertCount (1 , $ metadata ['joinColumns ' ]);
113
+ $ expectedJoinColumn = [
114
+ 'name ' => 'category_id ' ,
115
+ 'columnDefinition ' => null ,
116
+ // Doctrine 3.0 removed
117
+ // 'fieldName' => 'category_id',
118
+ 'unique ' => false ,
119
+ 'nullable ' => true ,
120
+ 'referencedColumnName ' => 'id ' ,
121
+ ];
122
+ $ this ->assertArrayHasKey (0 , $ metadata ['joinColumns ' ]);
123
+ $ columnMetadata = $ metadata ['joinColumns ' ][0 ];
124
+ foreach ($ expectedJoinColumn as $ key => $ val ) {
125
+ $ this ->assertArrayHasKey ($ key , $ columnMetadata );
126
+ // Doctrine 3.0 changed the way it determines 'nullable' for join columns
127
+ if ('nullable ' === $ key ) {
128
+ $ this ->assertIsBool ($ columnMetadata [$ key ]);
129
+ continue ;
130
+ }
131
+ $ this ->assertSame ($ val , $ columnMetadata [$ key ]);
132
+ }
111
133
}
112
134
113
135
public function testIsEmbeddedClassProperty (): void
0 commit comments