public function testApiStart_ResolvesPromise_WhenInvokedFromStateCreatedOrStopped()
{
$states = [Runtime::STATE_CREATED, Runtime::STATE_STOPPED];
foreach ($states as $state) {
$events = [];
$emitter = $this->getMock(EventEmitter::class, [], [], '', false);
$emitter->expects($this->exactly(3))->method('emit')->will($this->returnCallback(function ($event) use(&$events) {
$events[] = $event;
}));
$runtime = $this->createModel([], ['getEventEmitter']);
$runtime->expects($this->once())->method('getEventEmitter')->will($this->returnValue($emitter));
$runtime->setState($state);
$callable = $this->createCallableMock();
$callable->expects($this->once())->method('__invoke')->with($this->isType('string'));
$runtime->start()->then($callable, $this->expectCallableNever());
$this->assertSame(['beforeStart', 'start', 'afterStart'], $events);
}
}