public function testHandlePushesNewEvent()
 {
     $command = $this->makeCommand();
     $identity = rand();
     $event = Mockery::mock('C4tech\\RayEmitter\\Contracts\\Domain\\Event');
     $event->shouldReceive('getId')->withNoArgs()->once()->andReturn($identity);
     $this->subject->shouldReceive('getSequence')->withNoArgs()->once()->andReturn(30);
     $this->subject->shouldReceive('handle')->with($command)->once()->andReturn($event);
     $this->subject->shouldReceive('apply')->with($event)->once();
     EventStore::shouldReceive('saveEvent')->with($event)->once();
     expect(RepositoryStub::handle($command))->equals($identity);
 }
 public function testHandleCommits()
 {
     $subject = new Middleware();
     $parameter = 'request';
     $response = 'magic beans';
     $callback = function ($request) use($parameter, $response) {
         expect($request)->equals($parameter);
         return $response;
     };
     DB::shouldReceive('beginTransaction')->withNoArgs()->once();
     EventStore::shouldReceive('publishQueue')->withNoArgs()->once();
     DB::shouldReceive('rollBack')->withNoArgs()->never();
     DB::shouldReceive('commit')->withNoArgs()->once();
     expect($subject->handle('request', $callback))->equals($response);
 }