Kraken\_Module\Console\Server\ServerContainerTest::testApiDestroy_BehavesAsIntended PHP Method

testApiDestroy_BehavesAsIntended() public method

public testApiDestroy_BehavesAsIntended ( RuntimeContainer $container )
$container Kraken\Runtime\RuntimeContainer
    public function testApiDestroy_BehavesAsIntended($container)
    {
        $manager = $this->getMock(RuntimeManager::class, [], [], '', false);
        $manager->expects($this->once())->method('getRuntimes')->will($this->returnValue([]));
        $manager->expects($this->once())->method('destroyRuntimes')->with([], Runtime::DESTROY_FORCE)->will($this->returnValue(null));
        $core = $this->createCore();
        $loop = $this->createLoop();
        $model = $this->createModel($core, $container, ['getRuntimeManager']);
        $model->expects($this->atLeastOnce())->method('getRuntimeManager')->will($this->returnValue($manager));
        $model->setCore($core);
        $model->setLoop($loop);
        $this->setProtectedProperty($container, 'model', $model);
        $events = [];
        $addEvent = function ($name) use(&$events) {
            $events[] = $name;
        };
        $awaitEvent = function ($name) use($container, $addEvent) {
            $container->on($name, function () use($name, $addEvent) {
                $addEvent($name);
            });
        };
        $awaitEvent('beforeStop');
        $awaitEvent('stop');
        $awaitEvent('afterStop');
        $awaitEvent('beforeDestroy');
        $awaitEvent('destroy');
        $awaitEvent('afterDestroy');
        $container->once('start', function () use($container) {
            $container->destroy()->then($this->expectCallableOnce());
        });
        $container->create();
        $this->assertTrue($container->isDestroyed());
        $this->assertSame(['beforeStop', 'stop', 'afterStop', 'beforeDestroy', 'destroy', 'afterDestroy'], $events);
        unset($container);
        unset($model);
        unset($loop);
        unset($core);
    }