2
2
3
3
namespace Stof \DoctrineExtensionsBundle \Tests \DependencyInjection ;
4
4
5
+ use Doctrine \Common \Annotations \AnnotationReader ;
6
+ use Doctrine \Common \EventSubscriber ;
5
7
use Stof \DoctrineExtensionsBundle \DependencyInjection \StofDoctrineExtensionsExtension ;
6
8
use PHPUnit \Framework \TestCase ;
7
9
use Symfony \Component \DependencyInjection \ContainerBuilder ;
@@ -43,11 +45,12 @@ public function testLoadORMConfig($listener)
43
45
44
46
$ def = $ container ->getDefinition ('stof_doctrine_extensions.listener. ' .$ listener );
45
47
46
- $ this ->assertTrue ($ def ->hasTag ('doctrine.event_subscriber ' ));
48
+ $ this ->assertTrue ($ def ->hasTag ('doctrine.event_listener ' ));
47
49
48
- $ tags = $ def ->getTag ('doctrine.event_subscriber ' );
50
+ $ tags = $ def ->getTag ('doctrine.event_listener ' );
51
+ $ configuredManagers = array_unique (array_column ($ tags , 'connection ' ));
49
52
50
- $ this ->assertCount (2 , $ tags );
53
+ $ this ->assertCount (2 , $ configuredManagers );
51
54
}
52
55
53
56
/**
@@ -69,11 +72,12 @@ public function testLoadMongodbConfig($listener)
69
72
70
73
$ def = $ container ->getDefinition ('stof_doctrine_extensions.listener. ' .$ listener );
71
74
72
- $ this ->assertTrue ($ def ->hasTag ('doctrine_mongodb.odm.event_subscriber ' ));
75
+ $ this ->assertTrue ($ def ->hasTag ('doctrine_mongodb.odm.event_listener ' ));
73
76
74
- $ tags = $ def ->getTag ('doctrine_mongodb.odm.event_subscriber ' );
77
+ $ tags = $ def ->getTag ('doctrine_mongodb.odm.event_listener ' );
78
+ $ configuredManagers = array_unique (array_column ($ tags , 'connection ' ));
75
79
76
- $ this ->assertCount (2 , $ tags );
80
+ $ this ->assertCount (2 , $ configuredManagers );
77
81
}
78
82
79
83
/**
@@ -95,10 +99,37 @@ public function testLoadBothConfig($listener)
95
99
96
100
$ def = $ container ->getDefinition ('stof_doctrine_extensions.listener. ' .$ listener );
97
101
98
- $ this ->assertTrue ($ def ->hasTag ('doctrine.event_subscriber ' ));
99
- $ this ->assertTrue ($ def ->hasTag ('doctrine_mongodb.odm.event_subscriber ' ));
102
+ $ this ->assertTrue ($ def ->hasTag ('doctrine.event_listener ' ));
103
+ $ this ->assertTrue ($ def ->hasTag ('doctrine_mongodb.odm.event_listener ' ));
100
104
101
- $ this ->assertCount (1 , $ def ->getTag ('doctrine.event_subscriber ' ));
102
- $ this ->assertCount (1 , $ def ->getTag ('doctrine_mongodb.odm.event_subscriber ' ));
105
+ $ this ->assertCount (1 , array_unique (array_column ($ def ->getTag ('doctrine.event_listener ' ), 'connection ' )));
106
+ $ this ->assertCount (1 , array_unique (array_column ($ def ->getTag ('doctrine_mongodb.odm.event_listener ' ), 'connection ' )));
107
+ }
108
+
109
+ /**
110
+ * @dataProvider provideExtensions
111
+ */
112
+ public function testEventConsistency (string $ listener )
113
+ {
114
+ $ extension = new StofDoctrineExtensionsExtension ();
115
+ $ container = new ContainerBuilder ();
116
+ $ container ->register ('annotation_reader ' , AnnotationReader::class);
117
+
118
+ $ config = array ('orm ' => array (
119
+ 'default ' => array ($ listener => true ),
120
+ ));
121
+
122
+ $ extension ->load (array ($ config ), $ container );
123
+
124
+ $ def = $ container ->getDefinition ('stof_doctrine_extensions.listener. ' .$ listener );
125
+ $ configuredEvents = array_column ($ def ->getTag ('doctrine.event_listener ' ), 'event ' );
126
+
127
+ $ listenerInstance = $ container ->get ('stof_doctrine_extensions.listener. ' .$ listener );
128
+
129
+ if (!$ listenerInstance instanceof EventSubscriber) {
130
+ $ this ->markTestSkipped (sprintf ('The listener for "%s" is not a Doctrine event subscriber. ' , $ listener ));
131
+ }
132
+
133
+ $ this ->assertEqualsCanonicalizing ($ listenerInstance ->getSubscribedEvents (), $ configuredEvents );
103
134
}
104
135
}
0 commit comments