public function testApiStop_ResolvesPromiseAndEmitsEvents_WhenInvokedFromStateStarted()
{
$states = [Runtime::STATE_STARTED];
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->stop()->then($callable, $this->expectCallableNever());
$this->assertSame(['beforeStop', 'stop', 'afterStop'], $events);
}
}