4
4
5
5
namespace Jsor \Doctrine \PostGIS ;
6
6
7
+ use Doctrine \Common \EventManager ;
7
8
use Doctrine \DBAL \Configuration as DBALConfiguration ;
8
9
use Doctrine \DBAL \Connection ;
9
10
use Doctrine \DBAL \DriverManager ;
13
14
use Doctrine \ORM \EntityManagerInterface ;
14
15
use Doctrine \ORM \Mapping \Driver \AttributeDriver ;
15
16
use Doctrine \ORM \Tools \SchemaTool ;
17
+ use Doctrine \ORM \Tools \ToolEvents ;
16
18
use Doctrine \Persistence \Mapping \Driver \MappingDriver ;
17
- use Jsor \Doctrine \PostGIS \Event \ DBALSchemaEventSubscriber ;
18
- use Jsor \Doctrine \PostGIS \Event \ORMSchemaEventSubscriber ;
19
+ use Jsor \Doctrine \PostGIS \Driver \ Middleware ;
20
+ use Jsor \Doctrine \PostGIS \Event \ORMSchemaEventListener ;
19
21
use Jsor \Doctrine \PostGIS \Functions \Configurator ;
20
- use Symfony \Bridge \Doctrine \SchemaListener \MessengerTransportDoctrineSchemaSubscriber ;
22
+ use Jsor \Doctrine \PostGIS \Schema \SchemaManagerFactory ;
23
+ use Symfony \Bridge \Doctrine \SchemaListener \MessengerTransportDoctrineSchemaListener ;
21
24
use Symfony \Component \Messenger \Bridge \Doctrine \Transport \Connection as MessengerConnection ;
22
25
use Symfony \Component \Messenger \Bridge \Doctrine \Transport \DoctrineTransport ;
23
26
use Symfony \Component \Messenger \Bridge \Doctrine \Transport \PostgreSqlConnection ;
@@ -27,6 +30,8 @@ abstract class AbstractFunctionalTestCase extends AbstractTestCase
27
30
{
28
31
private static ?Connection $ _conn = null ;
29
32
33
+ private static ?EventManager $ _eventManager = null ;
34
+
30
35
private static ?MessengerConnection $ _messengerConn = null ;
31
36
32
37
/**
@@ -38,6 +43,13 @@ abstract class AbstractFunctionalTestCase extends AbstractTestCase
38
43
39
44
private ?SchemaTool $ _schemaTool = null ;
40
45
46
+ protected function setUp (): void
47
+ {
48
+ parent ::setUp ();
49
+
50
+ static ::_registerTypes ();
51
+ }
52
+
41
53
protected function tearDown (): void
42
54
{
43
55
parent ::tearDown ();
@@ -88,15 +100,28 @@ protected function _getDbParams(): array
88
100
];
89
101
}
90
102
103
+ protected function _getEventManager (): EventManager
104
+ {
105
+ if (!self ::$ _eventManager ) {
106
+ self ::$ _eventManager = new EventManager ();
107
+ }
108
+
109
+ return self ::$ _eventManager ;
110
+ }
111
+
91
112
protected function _getConnection (): Connection
92
113
{
93
114
if (!isset (self ::$ _conn )) {
94
115
if (class_exists (ORMConfiguration::class)) {
95
- self :: $ _conn = DriverManager:: getConnection ( $ this -> _getDbParams (), new ORMConfiguration () );
96
- Configurator::configure (self :: $ _conn -> getConfiguration () );
116
+ $ config = new ORMConfiguration ();
117
+ Configurator::configure ($ config );
97
118
} else {
98
- self :: $ _conn = DriverManager:: getConnection ( $ this -> _getDbParams (), new DBALConfiguration () );
119
+ $ config = new DBALConfiguration ();
99
120
}
121
+ $ config ->setMiddlewares ([new Middleware ()]);
122
+ $ config ->setSchemaManagerFactory (new SchemaManagerFactory ());
123
+
124
+ self ::$ _conn = DriverManager::getConnection ($ this ->_getDbParams (), $ config , $ this ->_getEventManager ());
100
125
101
126
self ::$ _messengerConn = new PostgreSqlConnection (
102
127
[
@@ -106,8 +131,9 @@ protected function _getConnection(): Connection
106
131
self ::$ _conn ,
107
132
);
108
133
109
- self ::$ _conn ->getEventManager ()->addEventSubscriber (
110
- new MessengerTransportDoctrineSchemaSubscriber (
134
+ $ this ->_getEventManager ()->addEventListener (
135
+ ToolEvents::postGenerateSchema,
136
+ new MessengerTransportDoctrineSchemaListener (
111
137
[
112
138
new DoctrineTransport (
113
139
self ::$ _messengerConn ,
@@ -118,9 +144,7 @@ protected function _getConnection(): Connection
118
144
);
119
145
120
146
if (class_exists (ORMConfiguration::class)) {
121
- self ::$ _conn ->getEventManager ()->addEventSubscriber (new ORMSchemaEventSubscriber ());
122
- } else {
123
- self ::$ _conn ->getEventManager ()->addEventSubscriber (new DBALSchemaEventSubscriber ());
147
+ $ this ->_getEventManager ()->addEventListener ('postGenerateSchemaTable ' , new ORMSchemaEventListener ());
124
148
}
125
149
126
150
if (!Type::hasType ('tsvector ' )) {
@@ -145,7 +169,7 @@ protected function _getMessengerConnection(): MessengerConnection
145
169
return self ::$ _messengerConn ;
146
170
}
147
171
148
- protected function _getEntityManager (?ORMConfiguration $ config = null ): EntityManager
172
+ protected function _getEntityManager (?ORMConfiguration $ config = null ): EntityManagerInterface
149
173
{
150
174
if (null !== $ this ->_em ) {
151
175
return $ this ->_em ;
@@ -159,7 +183,7 @@ protected function _getEntityManager(?ORMConfiguration $config = null): EntityMa
159
183
160
184
$ this ->_setupConfiguration ($ config );
161
185
162
- $ em = EntityManager:: create ($ connection , $ config );
186
+ $ em = new EntityManager ($ connection , $ config, $ this -> _getEventManager () );
163
187
164
188
return $ this ->_em = $ em ;
165
189
}
0 commit comments