public function testAndMetaData() { $payload = new \stdClass(); $metaData = new MetaData(['key' => 'value']); $message = new GenericEventMessage($payload, $metaData); $message1 = $message->andMetaData(); $message2 = $message->andMetaData(['key' => 'otherValue']); $this->assertEquals(1, $message1->getMetaData()->count()); $this->assertEquals('value', $message1->getMetaData()->get('key')); $this->assertEquals(1, $message2->getMetaData()->count()); $this->assertEquals('otherValue', $message2->getMetaData()->get('key')); $this->assertEquals($message->getIdentifier(), $message1->getIdentifier()); $this->assertEquals($message->getIdentifier(), $message2->getIdentifier()); $this->assertInstanceOf(GenericEventMessage::class, $message1); $this->assertInstanceOf(GenericEventMessage::class, $message2); }
public function testSubscribe() { $listener = new AnnotatedListener(); AnnotatedEventListenerAdapter::subscribe($listener, $this->eventBus, new SimpleAnnotationReaderFactory()); $event1 = new MyEvent("a", "b"); $event2 = new MyOtherEvent(); $this->eventBus->publish(array(GenericEventMessage::asEventMessage($event1))); $this->assertCount(1, $this->publishedEvents); $this->assertSame($listener->event, $event1); $this->eventBus->publish(array(GenericEventMessage::asEventMessage($event2))); $this->assertCount(2, $this->publishedEvents); $this->assertSame($listener->event, $event2); }
/** * Use this method to indicate an application is published, <em>while recording the outcome</em>. * <p/> * Note that if you inject resources using {@link FixtureConfiguration#registerResource(Object)}, you may need to * reset them yourself if they are manipulated by the Saga in the "given" stage of the test. * * @param mixed $event the event to publish * @return FixtureExecutionResultInterface an object allowing you to verify the test results */ public function whenPublishingA($event) { try { $this->fixtureExecutionResult->startRecording(); $this->sagaManager->handle(GenericEventMessage::asEventMessage($event)); } finally { //FixtureResourceParameterResolverFactory.clear(); } return $this->fixtureExecutionResult; }
private function newEvent() { return [GenericEventMessage::asEventMessage(new StubEventMessage())]; }
public function testSendMessageWithPublisherAck_NoActiveUnitOfWork() { $this->testSubject->setTransactional(false); $this->testSubject->setWaitForPublisherAck(true); $channel = \Phake::mock(AMQPChannel::class); \Phake::when($channel)->wait_for_pending_acks()->thenReturn(null); \Phake::when($this->connection)->channel()->thenReturn($channel); $message = new GenericEventMessage(new Payload("Message")); \Phake::when($this->serializer)->serialize(\Phake::equalTo($message->getPayload()))->thenReturn(new SimpleSerializedObject(json_encode($message->getPayload()), new SimpleSerializedType(Payload::class))); \Phake::when($this->serializer)->serialize(\Phake::equalTo($message->getMetaData()))->thenReturn(new SimpleSerializedObject(json_encode(array('metadata' => array())), new SimpleSerializedType(MetaData::class))); $this->testSubject->publish(array($message)); \Phake::verify($channel)->confirm_select(); \Phake::verify($channel)->basic_publish(\Phake::anyParameters()); \Phake::verify($channel)->wait_for_pending_acks(\Phake::anyParameters()); }