mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-08-10 08:54:03 +02:00
refactored State pattern example
This commit is contained in:
@@ -2,30 +2,42 @@
|
||||
|
||||
namespace DesignPatterns\Behavioral\State\Tests;
|
||||
|
||||
use DesignPatterns\Behavioral\State\ContextOrder;
|
||||
use DesignPatterns\Behavioral\State\CreateOrder;
|
||||
use DesignPatterns\Behavioral\State\OrderContext;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class StateTest extends TestCase
|
||||
{
|
||||
public function testCanShipCreatedOrder()
|
||||
public function testIsCreatedWithStateCreated()
|
||||
{
|
||||
$order = new CreateOrder();
|
||||
$contextOrder = new ContextOrder();
|
||||
$contextOrder->setState($order);
|
||||
$contextOrder->done();
|
||||
$orderContext = OrderContext::create();
|
||||
|
||||
$this->assertEquals('shipping', $contextOrder->getStatus());
|
||||
$this->assertEquals('created', $orderContext->toString());
|
||||
}
|
||||
|
||||
public function testCanCompleteShippedOrder()
|
||||
public function testCanProceedToStateShipped()
|
||||
{
|
||||
$order = new CreateOrder();
|
||||
$contextOrder = new ContextOrder();
|
||||
$contextOrder->setState($order);
|
||||
$contextOrder->done();
|
||||
$contextOrder->done();
|
||||
$contextOrder = OrderContext::create();
|
||||
$contextOrder->proceedToNext();
|
||||
|
||||
$this->assertEquals('completed', $contextOrder->getStatus());
|
||||
$this->assertEquals('shipped', $contextOrder->toString());
|
||||
}
|
||||
|
||||
public function testCanProceedToStateDone()
|
||||
{
|
||||
$contextOrder = OrderContext::create();
|
||||
$contextOrder->proceedToNext();
|
||||
$contextOrder->proceedToNext();
|
||||
|
||||
$this->assertEquals('done', $contextOrder->toString());
|
||||
}
|
||||
|
||||
public function testStateDoneIsTheLastPossibleState()
|
||||
{
|
||||
$contextOrder = OrderContext::create();
|
||||
$contextOrder->proceedToNext();
|
||||
$contextOrder->proceedToNext();
|
||||
$contextOrder->proceedToNext();
|
||||
|
||||
$this->assertEquals('done', $contextOrder->toString());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user