1010namespace ZendTest \Stdlib \Hydrator \Aggregate ;
1111
1212use PHPUnit_Framework_TestCase ;
13+ use Prophecy \Argument ;
14+ use Zend \EventManager \EventManager ;
15+ use Zend \Hydrator \Aggregate \HydratorListener ;
16+ use Zend \Hydrator \HydratorInterface ;
1317use Zend \Stdlib \Hydrator \Aggregate \AggregateHydrator ;
18+ use Zend \Stdlib \Hydrator \Aggregate \ExtractEvent ;
19+ use Zend \Stdlib \Hydrator \Aggregate \HydrateEvent ;
1420use stdClass ;
1521
1622/**
@@ -24,7 +30,7 @@ class AggregateHydratorTest extends PHPUnit_Framework_TestCase
2430 protected $ hydrator ;
2531
2632 /**
27- * @var \Zend\EventManager\EventManagerInterface |\PHPUnit_Framework_MockObject_MockObject
33+ * @var \Zend\EventManager\EventManager |\PHPUnit_Framework_MockObject_MockObject
2834 */
2935 protected $ eventManager ;
3036
@@ -33,7 +39,7 @@ class AggregateHydratorTest extends PHPUnit_Framework_TestCase
3339 */
3440 public function setUp ()
3541 {
36- $ this ->eventManager = $ this ->getMock (' Zend\ EventManager\EventManagerInterface ' );
42+ $ this ->eventManager = $ this ->getMock (EventManager::class );
3743 $ this ->hydrator = new AggregateHydrator ();
3844
3945 $ this ->hydrator ->setEventManager ($ this ->eventManager );
@@ -44,45 +50,112 @@ public function setUp()
4450 */
4551 public function testAdd ()
4652 {
47- $ attached = $ this ->getMock ('Zend\Hydrator\HydratorInterface ' );
53+ $ hydrator = $ this ->prophesize (HydratorInterface::class)->reveal ();
54+
55+ $ events = $ this ->prophesize (EventManager::class);
56+
57+ $ events ->setIdentifiers (Argument::type ('array ' ))->shouldBeCalled ();
58+
59+ $ events ->attach (
60+ HydrateEvent::EVENT_HYDRATE ,
61+ Argument::that (function ($ argument ) {
62+ if (! is_callable ($ argument )) {
63+ return false ;
64+ }
65+ if (! is_array ($ argument )) {
66+ return false ;
67+ }
68+ return (
69+ $ argument [0 ] instanceof HydratorListener
70+ && $ argument [1 ] === 'onHydrate '
71+ );
72+ }),
73+ 123
74+ )->shouldBeCalled ();
75+
76+ $ events ->attach (
77+ ExtractEvent::EVENT_EXTRACT ,
78+ Argument::that (function ($ argument ) {
79+ if (! is_callable ($ argument )) {
80+ return false ;
81+ }
82+ if (! is_array ($ argument )) {
83+ return false ;
84+ }
85+ return (
86+ $ argument [0 ] instanceof HydratorListener
87+ && $ argument [1 ] === 'onExtract '
88+ );
89+ }),
90+ 123
91+ )->shouldBeCalled ();
92+
93+ $ this ->hydrator ->setEventManager ($ events ->reveal ());
94+ $ this ->hydrator ->add ($ hydrator , 123 );
95+ }
96+
97+ /**
98+ * @covers \Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator::hydrate
99+ */
100+ public function testHydrate ()
101+ {
102+ $ object = new stdClass ();
48103
49104 $ this
50105 ->eventManager
51106 ->expects ($ this ->once ())
52- ->method ('attachAggregate ' )
53- ->with ($ this ->isInstanceOf ('Zend\Hydrator\Aggregate\HydratorListener ' ), 123 );
107+ ->method ('triggerEvent ' )
108+ ->with ($ this ->isInstanceOf ('Zend\Hydrator\Aggregate\HydrateEvent ' ) );
54109
55- $ this ->hydrator ->add ( $ attached , 123 );
110+ $ this ->assertSame ( $ object , $ this -> hydrator ->hydrate ([ ' foo ' => ' bar ' ], $ object ) );
56111 }
57112
58113 /**
114+ * @covers \Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator::extract
115+ */
116+ public function testExtract ()
117+ {
118+ $ object = new stdClass ();
119+
120+ $ this
121+ ->eventManager
122+ ->expects ($ this ->once ())
123+ ->method ('triggerEvent ' )
124+ ->with ($ this ->isInstanceOf ('Zend\Hydrator\Aggregate\ExtractEvent ' ));
125+
126+ $ this ->assertSame ([], $ this ->hydrator ->extract ($ object ));
127+ }
128+
129+ /**
130+ * @group 55
59131 * @covers \Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator::hydrate
60132 */
61- public function testHydrate ()
133+ public function testHydrateUsesStdlibHydrateEvent ()
62134 {
63135 $ object = new stdClass ();
64136
65137 $ this
66138 ->eventManager
67139 ->expects ($ this ->once ())
68- ->method ('trigger ' )
69- ->with ($ this ->isInstanceOf ('Zend\Hydrator\Aggregate\HydrateEvent ' ));
140+ ->method ('triggerEvent ' )
141+ ->with ($ this ->isInstanceOf ('Zend\Stdlib\ Hydrator\Aggregate\HydrateEvent ' ));
70142
71143 $ this ->assertSame ($ object , $ this ->hydrator ->hydrate (['foo ' => 'bar ' ], $ object ));
72144 }
73145
74146 /**
147+ * @group 55
75148 * @covers \Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator::extract
76149 */
77- public function testExtract ()
150+ public function testExtractUsesStdlibExtractEvent ()
78151 {
79152 $ object = new stdClass ();
80153
81154 $ this
82155 ->eventManager
83156 ->expects ($ this ->once ())
84- ->method ('trigger ' )
85- ->with ($ this ->isInstanceOf ('Zend\Hydrator\Aggregate\ExtractEvent ' ));
157+ ->method ('triggerEvent ' )
158+ ->with ($ this ->isInstanceOf ('Zend\Stdlib\ Hydrator\Aggregate\ExtractEvent ' ));
86159
87160 $ this ->assertSame ([], $ this ->hydrator ->extract ($ object ));
88161 }
0 commit comments