Passed
Branch merging-leagues-tournaments (a75688)
by Benedikt
07:29
created

TeamTest::testInit()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 5
c 0
b 0
f 0
dl 0
loc 7
rs 10
cc 1
nc 1
nop 0
1
<?php
2
declare(strict_types=1);
3
/**
4
 * Created by PhpStorm.
5
 * User: benedikt
6
 * Date: 10/1/17
7
 * Time: 1:11 PM
8
 */
9
10
namespace Tfboe\FmLib\Tests\Unit\Entity\Traits;
11
12
use Doctrine\Common\Collections\ArrayCollection;
13
use Doctrine\Common\Collections\Collection;
14
use PHPUnit\Framework\MockObject\MockObject;
15
use Tfboe\FmLib\Entity\CompetitionInterface;
16
use Tfboe\FmLib\Entity\TeamInterface;
17
use Tfboe\FmLib\Entity\TeamMembershipInterface;
18
use Tfboe\FmLib\Tests\Helpers\UnitTestCase;
19
20
/**
21
 * Class TournamentTest
22
 * @package Tfboe\FmLib\Tests\Unit\Entity
23
 */
24
class TeamTest extends UnitTestCase
25
{
26
//<editor-fold desc="Public Methods">
27
  /**
28
   * @covers \Tfboe\FmLib\Entity\Traits\Team::setCompetition
29
   * @covers \Tfboe\FmLib\Entity\Traits\Team::getCompetition
30
   * @uses   \Tfboe\FmLib\Entity\Traits\Team::getStartNumber
31
   * @uses   \Tfboe\FmLib\Entity\Traits\Team::setStartNumber
32
   * @uses   \Tfboe\FmLib\Entity\Helpers\TournamentHierarchyEntity::__construct
33
   * @uses   \Tfboe\FmLib\Entity\Traits\Team::init
34
   */
35
  public function testCompetition()
36
  {
37
    $team = $this->team();
38
    $competition = $this->getStub(CompetitionInterface::class, ['getTeams' => new ArrayCollection()]);
39
    $team->setStartNumber(1);
40
    /** @var CompetitionInterface $competition */
41
    $team->setCompetition($competition);
42
    self::assertEquals($competition, $team->getCompetition());
43
    self::assertEquals(1, $team->getCompetition()->getTeams()->count());
44
    self::assertEquals($team, $team->getCompetition()->getTeams()[$team->getId()]);
45
46
    $competition2 = $this->getStub(CompetitionInterface::class, ['getTeams' => new ArrayCollection()]);
47
48
    /** @var CompetitionInterface $competition2 */
49
    $team->setCompetition($competition2);
50
    self::assertEquals($competition2, $team->getCompetition());
51
    self::assertEquals(1, $team->getCompetition()->getTeams()->count());
52
    self::assertEquals(0, $competition->getTeams()->count());
53
    self::assertEquals($team, $team->getCompetition()->getTeams()[$team->getId()]);
54
  }
55
56
  /**
57
   * @covers \Tfboe\FmLib\Entity\Traits\Team::init
58
   * @uses   \Tfboe\FmLib\Entity\Traits\Team::getMemberships
59
   * @uses   \Tfboe\FmLib\Entity\Helpers\NameEntity::getName
60
   */
61
  public function testInit()
62
  {
63
    $team = $this->team();
64
    self::assertInstanceOf(TeamInterface::class, $team);
65
    self::assertInstanceOf(Collection::class, $team->getMemberships());
66
    self::assertEquals(0, $team->getMemberships()->count());
67
    self::assertEquals("", $team->getName());
68
  }
69
70
  /**
71
   * @covers \Tfboe\FmLib\Entity\Traits\Team::getMemberships
72
   * @uses   \Tfboe\FmLib\Entity\Traits\Team::init
73
   */
74
  public function testPlayers()
75
  {
76
    $team = $this->team();
77
    /** @var TeamMembershipInterface $membership */
78
    $membership = $this->createStubWithId(TeamMembershipInterface::class, "id", 'getId');
79
    $team->getMemberships()->set($membership->getId(), $membership);
80
    self::assertEquals(1, $team->getMemberships()->count());
81
    self::assertEquals($membership, $team->getMemberships()[$membership->getId()]);
82
  }
83
84
  /**
85
   * @covers \Tfboe\FmLib\Entity\Traits\Team::setRank
86
   * @covers \Tfboe\FmLib\Entity\Traits\Team::getRank
87
   * @uses   \Tfboe\FmLib\Entity\Traits\Team::init
88
   */
89
  public function testRank()
90
  {
91
    $team = $this->team();
92
    $team->setRank(1);
93
    self::assertEquals(1, $team->getRank());
94
  }
95
96
  /**
97
   * @covers \Tfboe\FmLib\Entity\Traits\Team::setStartNumber
98
   * @covers \Tfboe\FmLib\Entity\Traits\Team::getStartNumber
99
   * @uses   \Tfboe\FmLib\Entity\Traits\Team::init
100
   */
101
  public function testStartNumber()
102
  {
103
    $team = $this->team();
104
    $team->setStartNumber(1);
105
    self::assertEquals(1, $team->getStartNumber());
106
  }
107
108
//</editor-fold desc="Public Methods">
109
110
//<editor-fold desc="Private Methods">
111
112
  /**
113
   * @return TeamInterface|MockObject
114
   */
115
  private function team(): MockObject
116
  {
117
    //will never throw
118
    return $this->getStubbedEntity("Team", ["getId" => "id"]);
119
  }
120
//</editor-fold desc="Private Methods">
121
}