public function handleOrderPlaced(OrderPlaced $event, State $state) { // keep the order id, for reference in `handleReservationAccepted()` and `handleReservationRejected()` $state->set('orderId', $event->orderId()); // generate an id for the reservation $reservationId = $this->uuidGenerator->generate(); $state->set('reservationId', $reservationId); // make the reservation $command = new MakeSeatReservation($reservationId, $event->numberOfSeats()); $this->commandBus->dispatch($command); return $state; }
/** * @test */ public function it_returns_an_existing_state_instance_matching_the_returned_criteria() { $state = new State(1337); $state->set('appId', 1337); $this->repository->save($state, 'sagaId'); $criteria = new Criteria(array('appId' => 1337)); $resolvedState = $this->manager->findOneBy($criteria, 'sagaId'); self::assertEquals($state, $resolvedState); }
/** * @test */ public function saving_a_state_object_with_the_same_id_only_keeps_the_last_one() { $s1 = new State(31415); $s1->set('appId', 42); $this->repository->save($s1, 'sagaId'); $s2 = new State(31415); $s2->set('appId', 1337); $this->repository->save($s2, 'sagaId'); $found = $this->repository->findOneBy(new Criteria(array('appId' => 1337)), 'sagaId'); $this->assertEquals(31415, $found->getId()); }
public function handle($event, State $state = null) { $this->isCalled = true; if ($event instanceof TestEvent1) { $state->set('event', 'testevent1'); } elseif ($event instanceof TestEvent2) { $state->set('event', 'testevent2'); } elseif ($event instanceof TestEventDone) { $state->setDone(); } return $state; }