Your IP : 216.73.216.52


Current Path : /proc/thread-self/root/var/www/surf/TYPO3/src/surf/Tests/Unit/Domain/Model/
Upload File :
Current File : //proc/thread-self/root/var/www/surf/TYPO3/src/surf/Tests/Unit/Domain/Model/OrderTest.php

<?php

declare(strict_types=1);

namespace Torresani\Surf\Tests\Unit\Domain\Model;

use PHPUnit\Framework\MockObject\MockObject;
use TYPO3\TestingFramework\Core\AccessibleObjectInterface;
use TYPO3\TestingFramework\Core\Unit\UnitTestCase;

/**
 * Test case
 *
 * @author Roberto Torresani <roberto@torresani.eu>
 */
class OrderTest extends UnitTestCase
{
    /**
     * @var \Torresani\Surf\Domain\Model\Order|MockObject|AccessibleObjectInterface
     */
    protected $subject;

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

        $this->subject = $this->getAccessibleMock(
            \Torresani\Surf\Domain\Model\Order::class,
            ['dummy']
        );
    }

    protected function tearDown(): void
    {
        parent::tearDown();
    }

    /**
     * @test
     */
    public function getCodeReturnsInitialValueForString(): void
    {
        self::assertSame(
            '',
            $this->subject->getCode()
        );
    }

    /**
     * @test
     */
    public function setCodeForStringSetsCode(): void
    {
        $this->subject->setCode('Conceived at T3CON10');

        self::assertEquals('Conceived at T3CON10', $this->subject->_get('code'));
    }

    /**
     * @test
     */
    public function getNameReturnsInitialValueForString(): void
    {
        self::assertSame(
            '',
            $this->subject->getName()
        );
    }

    /**
     * @test
     */
    public function setNameForStringSetsName(): void
    {
        $this->subject->setName('Conceived at T3CON10');

        self::assertEquals('Conceived at T3CON10', $this->subject->_get('name'));
    }

    /**
     * @test
     */
    public function getStatusReturnsInitialValueForInt(): void
    {
        self::assertSame(
            0,
            $this->subject->getStatus()
        );
    }

    /**
     * @test
     */
    public function setStatusForIntSetsStatus(): void
    {
        $this->subject->setStatus(12);

        self::assertEquals(12, $this->subject->_get('status'));
    }

    /**
     * @test
     */
    public function getDeliveryReturnsInitialValueForDelivery(): void
    {
        self::assertEquals(
            null,
            $this->subject->getDelivery()
        );
    }

    /**
     * @test
     */
    public function setDeliveryForDeliverySetsDelivery(): void
    {
        $deliveryFixture = new \Torresani\Surf\Domain\Model\Delivery();
        $this->subject->setDelivery($deliveryFixture);

        self::assertEquals($deliveryFixture, $this->subject->_get('delivery'));
    }

    /**
     * @test
     */
    public function getOrderitemReturnsInitialValueForOrderItem(): void
    {
        $newObjectStorage = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
        self::assertEquals(
            $newObjectStorage,
            $this->subject->getOrderitem()
        );
    }

    /**
     * @test
     */
    public function setOrderitemForObjectStorageContainingOrderItemSetsOrderitem(): void
    {
        $orderitem = new \Torresani\Surf\Domain\Model\OrderItem();
        $objectStorageHoldingExactlyOneOrderitem = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
        $objectStorageHoldingExactlyOneOrderitem->attach($orderitem);
        $this->subject->setOrderitem($objectStorageHoldingExactlyOneOrderitem);

        self::assertEquals($objectStorageHoldingExactlyOneOrderitem, $this->subject->_get('orderitem'));
    }

    /**
     * @test
     */
    public function addOrderitemToObjectStorageHoldingOrderitem(): void
    {
        $orderitem = new \Torresani\Surf\Domain\Model\OrderItem();
        $orderitemObjectStorageMock = $this->getMockBuilder(\TYPO3\CMS\Extbase\Persistence\ObjectStorage::class)
            ->onlyMethods(['attach'])
            ->disableOriginalConstructor()
            ->getMock();

        $orderitemObjectStorageMock->expects(self::once())->method('attach')->with(self::equalTo($orderitem));
        $this->subject->_set('orderitem', $orderitemObjectStorageMock);

        $this->subject->addOrderitem($orderitem);
    }

    /**
     * @test
     */
    public function removeOrderitemFromObjectStorageHoldingOrderitem(): void
    {
        $orderitem = new \Torresani\Surf\Domain\Model\OrderItem();
        $orderitemObjectStorageMock = $this->getMockBuilder(\TYPO3\CMS\Extbase\Persistence\ObjectStorage::class)
            ->onlyMethods(['detach'])
            ->disableOriginalConstructor()
            ->getMock();

        $orderitemObjectStorageMock->expects(self::once())->method('detach')->with(self::equalTo($orderitem));
        $this->subject->_set('orderitem', $orderitemObjectStorageMock);

        $this->subject->removeOrderitem($orderitem);
    }
}