<?php
/**
 * PhpUnderControl_TaskRunner_Test
 *
 * 针对 ../Runner.php Task_Runner 类的PHPUnit单元测试
 *
 * @author: dogstar 20150515
 */

require_once dirname(__FILE__) . '/test_env.php';

if (!class_exists('Task_Runner')) {
    require dirname(__FILE__) . '/../Runner.php';
}

class PhpUnderControl_TaskRunner_Test extends PHPUnit_Framework_TestCase
{
    protected $fileMq;

    public $taskRunner;

    protected function setUp()
    {
        parent::setUp();

        $this->fileMq = new Task_MQ_File();
        $this->taskRunner = new Task_Runner_Mock($this->fileMq);
    }

    protected function tearDown()
    {
    }


    /**
     * @group testGo
     */ 
    public function testGo()
    {
        $service = 'Demo.TestGo';

        $this->fileMq->add($service, array());
        $this->fileMq->add($service, array('id' => 123));
        $this->fileMq->add($service, array('id' => 888, 'name' => 'phalapi'));

        $rs = $this->taskRunner->go($service);
        //var_dump($rs);

        $this->assertNotEmpty($rs);
        $this->assertArrayHasKey('total', $rs);
        $this->assertArrayHasKey('fail', $rs);

        $this->assertEquals(3, $rs['total']);
        $this->assertEquals(0, $rs['fail']);
    }

}

class Task_Runner_Mock extends Task_Runner {

    protected function youGo($service, $params) {
        echo "Task_Runner_Mock::youGo(", $service , ", ", json_encode($params), ") ... \n";
        return true;
    }
}