use Emris\Cli\Scaler\Domain\ServerBuilder;
use Emris\Cli\Scaler\Domain\ServerCollection;
use Emris\Cli\Scaler\Domain\Services\LoadBalancerManager;
describe('Emris\\Cli\\Scaler\\Domain\\Services\\LoadBalancerManager', function () {
    beforeEach(function () {
        $this->adapterMock = $this->getProphet()->prophesize('Emris\\Cli\\Scaler\\Domain\\Services\\LoadBalancerAdapter');
        $this->srvrMgr = new LoadBalancerManager($this->adapterMock->reveal());
    });
    describe('->__construct()', function () {
        it('should return a LoadBalancerManager object', function () {
            expect($this->srvrMgr)->to->be->instanceof('Emris\\Cli\\Scaler\\Domain\\Services\\LoadBalancerManager');
        });
    });
    describe('->servers()', function () {
        beforeEach(function () {
            $srvrBldr = new ServerBuilder();
            $servers = new ServerCollection();
            $servers->add($srvrBldr->build());
            $servers->add($srvrBldr->build());
            $servers->add($srvrBldr->build());
            $this->adapterMock->servers()->willReturn($servers);
        });
        it('should return a ServerCollection of 3 objects', function () {
            /** @var \Emris\Cli\Scaler\Domain\ServerCollection $actual */
            $actual = $this->srvrMgr->servers();
            expect($actual)->to->be->instanceof('Emris\\Cli\\Scaler\\Domain\\ServerCollection');
            expect($actual->count())->to->equal(3);
        });
    });
    describe('->add($servers)', function () {
        beforeEach(function () {
use Emris\Cli\Scaler\Domain\ContainerBuilder;
use Emris\Cli\Scaler\Domain\ServerBuilder;
describe('Emris\\Cli\\Scaler\\Domain\\ContainerBuilder', function () {
    beforeEach(function () {
        $this->builder = new ContainerBuilder();
    });
    describe('->__construct()', function () {
        it('should return a Container and ContainerBuilder object', function () {
            expect($this->builder)->to->be->instanceof('Emris\\Cli\\Scaler\\Domain\\ContainerBuilder');
            $container = $this->builder->build();
            expect($container)->to->be->instanceof('Emris\\Cli\\Scaler\\Domain\\Container');
        });
    });
    describe('->buildFrom($server)', function () {
        it('should return a Container object', function () {
            $svrBldr = new ServerBuilder();
            $svrBldr->setId('0');
            $svrBldr->setName('/emrisalarmwebservice_eaws_php_1');
            $svrBldr->setIp('127.0.0.1');
            $svrBldr->setPort(9000);
            $server = $svrBldr->build();
            $container = $this->builder->buildFrom($server);
            expect($container)->to->be->instanceof('Emris\\Cli\\Scaler\\Domain\\Container');
        });
    });
    describe('->setJson($json)', function () {
        it('should return take json can convert it to metadata', function () {
            require 'container.data.php';
            /** @var string $containerData01 */
            $this->builder->setJson($containerData01);
            /** @var \Emris\Cli\Scaler\Domain\Container $container */
 * PHP version 5
 * @category  PHP
 * @author    donbstringham <*****@*****.**>
 * @copyright 2016 © donbstringham
 * @license   http://opensource.org/licenses/MIT MIT
 * @version   GIT: <git_id>
 * @link      http://donbstringham.us
 * $LastChangedDate$
 * $LastChangedBy$
 */
use Emris\Cli\Scaler\Domain\ServerBuilder;
use Emris\Cli\Scaler\Domain\ServerCollection;
describe('Emris\\Cli\\Scaler\\Domain\\ServerCollection', function () {
    beforeEach(function () {
        require 'container.data.php';
        $builder = new ServerBuilder();
        /** @var string $serverData01 */
        $builder->setIp('127.0.0.1');
        $builder->setPort('8080');
        $this->server01 = $builder->build();
        /** @var string $serverData02 */
        $builder->setIp('127.0.0.2');
        $builder->setPort('8081');
        $this->server02 = $builder->build();
        /** @var string $serverData03 */
        $builder->setIp('127.0.0.3');
        $builder->setPort('8081');
        $this->server03 = $builder->build();
        $this->collection = new ServerCollection([$this->server01, $this->server02, $this->server03]);
    });
    describe('->__construct()', function () {
 /**
  * @param int $nodeCnt
  * @return bool
  */
 protected function addNodes($nodeCnt = 0)
 {
     if ($nodeCnt === 0) {
         return true;
     }
     $containers = $this->containerMgr->scaleUp($nodeCnt);
     if ($containers->count() === 0) {
         return false;
     }
     $bldr = new ServerBuilder();
     $servers = $bldr->buildFromCollection($containers);
     if ($servers->count() === 0) {
         return false;
     }
     $this->loadBalancerMgr->add($servers);
     return true;
 }