<?php

namespace tests\unit\Entity\Source;

use PHPUnit\Framework\TestCase;
use App\Entity\Source\SourceInterface;
use App\Entity\Meta\LawInterface;
use App\Entity\Meta\RelationInterface;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use App\Entity\Source\AbstractSource;

/**
 * @author kevinfrantz
 */
class AbstractSourceTest extends TestCase
{
    const ID = 123;
    /**
     * @var SourceInterface
     */
    protected $source;

    public function setUp()
    {
        $this->source = new class() extends \App\Entity\Source\AbstractSource {
        };
        $this->source->setId(self::ID);
    }

    public function testId()
    {
        $this->assertEquals($this->source->getId(), self::ID);
    }

    public function testLaw()
    {
        $this->assertInstanceOf(LawInterface::class, $this->source->getLaw());
    }

    public function testRelation()
    {
        $this->assertInstanceOf(RelationInterface::class, $this->source->getRelation());
    }

    public function testGroups()
    {
        $this->assertInstanceOf(Collection::class, $this->source->getGroupSources());
        $group = new class() extends AbstractSource {
        };
        $groups = new ArrayCollection([$group]);
        $this->source->setGroupSources($groups);
        $this->assertEquals($group, $this->source->getGroupSources()->get(0));
    }
}