Passed
Branch merging-leagues-tournaments (1beee1)
by Benedikt
03:50
created

TermsServiceTest::testGetLatestTermsNotExisting()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 6
dl 0
loc 8
rs 10
c 1
b 1
f 0
cc 1
nc 1
nop 0
1
<?php
2
declare(strict_types=1);
3
/**
4
 * Created by PhpStorm.
5
 * User: benedikt
6
 * Date: 1/3/18
7
 * Time: 3:53 PM
8
 */
9
10
namespace Tfboe\FmLib\Tests\Unit\Service;
11
12
use Doctrine\ORM\EntityManagerInterface;
13
use PHPUnit\Framework\Error\Error;
14
use PHPUnit\Framework\MockObject\MockObject;
15
use ReflectionException;
16
use Tfboe\FmLib\Entity\TermsInterface;
17
use Tfboe\FmLib\Service\TermsService;
18
use Tfboe\FmLib\Tests\Helpers\UnitTestCase;
19
20
21
/**
22
 * Class PlayerServiceTest
23
 * @package Tfboe\FmLib\Tests\Unit\Service
24
 * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
25
 */
26
class TermsServiceTest extends UnitTestCase
27
{
28
//<editor-fold desc="Public Methods">
29
  /**
30
   * @covers \Tfboe\FmLib\Service\TermsService::__construct
31
   */
32
  public function testConstructor()
33
  {
34
    $service = $this->service($this->createStub(EntityManagerInterface::class));
35
    self::assertInstanceOf(TermsService::class, $service);
36
  }
37
38
  /**
39
   * @covers \Tfboe\FmLib\Service\TermsService::getLatestTerms
40
   * @throws ReflectionException
41
   * @uses   \Tfboe\FmLib\Service\TermsService::__construct
42
   */
43
  public function testGetLatestTerms()
44
  {
45
    $terms = $this->createStub(TermsInterface::class);
46
    $em = $this->getEntityManagerMockForQuery([$terms], /** @lang DQL */
47
      'SELECT e FROM Tfboe\FmLib\Entity\TermsInterface e ORDER BY e.majorVersion DESC, e.minorVersion DESC');
48
    $service = $this->service($em);
49
    self::assertTrue($terms === $service->getLatestTerms());
50
  }
51
52
  /**
53
   * @covers \Tfboe\FmLib\Service\TermsService::getLatestTerms
54
   * @throws ReflectionException
55
   * @uses   \Tfboe\FmLib\Service\TermsService::__construct
56
   * @uses   \Tfboe\FmLib\Exceptions\Internal::error
57
   */
58
  public function testGetLatestTermsNotExisting()
59
  {
60
    $em = $this->getEntityManagerMockForQuery([], /** @lang DQL */
61
      'SELECT e FROM Tfboe\FmLib\Entity\TermsInterface e ORDER BY e.majorVersion DESC, e.minorVersion DESC');
62
    $this->expectException(Error::class);
63
    $this->expectExceptionMessage("The terms table is empty!");
64
    $service = $this->service($em);
65
    $service->getLatestTerms();
66
  }
67
//</editor-fold desc="Public Methods">
68
69
//<editor-fold desc="Private Methods">
70
  /**
71
   * @param EntityManagerInterface|MockObject $em
72
   * @return TermsService
73
   */
74
  private function service($em)
75
  {
76
    return new TermsService($em);
77
  }
78
//</editor-fold desc="Private Methods">
79
}
80