mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-07-28 10:40:17 +02:00
35 lines
1010 B
PHP
35 lines
1010 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace DesignPatterns\Behavioral\Memento\Tests;
|
|
|
|
use DesignPatterns\Behavioral\Memento\State;
|
|
use DesignPatterns\Behavioral\Memento\Ticket;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class MementoTest extends TestCase
|
|
{
|
|
public function testOpenTicketAssignAndSetBackToOpen()
|
|
{
|
|
$ticket = new Ticket();
|
|
|
|
// open the ticket
|
|
$ticket->open();
|
|
$openedState = $ticket->getState();
|
|
$this->assertSame(State::STATE_OPENED, (string) $ticket->getState());
|
|
|
|
$memento = $ticket->saveToMemento();
|
|
|
|
// assign the ticket
|
|
$ticket->assign();
|
|
$this->assertSame(State::STATE_ASSIGNED, (string) $ticket->getState());
|
|
|
|
// now restore to the opened state, but verify that the state object has been cloned for the memento
|
|
$ticket->restoreFromMemento($memento);
|
|
|
|
$this->assertSame(State::STATE_OPENED, (string) $ticket->getState());
|
|
$this->assertNotSame($openedState, $ticket->getState());
|
|
}
|
|
}
|