2020-09-21 15:48:04 +02:00
< ? php
2020-10-05 08:51:59 +02:00
declare ( strict_types = 1 );
2020-09-21 15:48:04 +02:00
namespace SkillDisplay\PHPToolKit\Tests\Unit\Entity ;
/*
* Copyright ( C ) 2020 Daniel Siepmann < coding @ daniel - siepmann . de >
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA
* 02110 - 1301 , USA .
*/
use PHPUnit\Framework\TestCase ;
2020-11-04 15:03:27 +01:00
use Prophecy\PhpUnit\ProphecyTrait ;
use SkillDisplay\PHPToolKit\Configuration\Settings ;
use SkillDisplay\PHPToolKit\Entity\Brand ;
2020-09-21 15:48:04 +02:00
use SkillDisplay\PHPToolKit\Entity\Skill ;
/**
* @ covers SkillDisplay\PHPToolKit\Entity\Skill
*/
class SkillTest extends TestCase
{
2020-11-04 15:03:27 +01:00
use ProphecyTrait ;
2020-09-21 15:48:04 +02:00
/**
* @ test
*/
public function instanceCanNotBeCreatedViaConstructor ()
{
2023-07-06 12:47:42 +02:00
$this -> expectExceptionMessage ( 'Call to private SkillDisplay\PHPToolKit\Entity\Skill::__construct() from scope SkillDisplay\PHPToolKit\Tests\Unit\Entity\SkillTest' );
2020-09-21 15:48:04 +02:00
new Skill ();
}
/**
* @ test
*/
public function instanceCanBeCreatedFromJson ()
{
2020-11-04 15:03:27 +01:00
$settings = $this -> prophesize ( Settings :: class );
$subject = Skill :: createFromJson ( '{}' , $settings -> reveal ());
2020-09-21 15:48:04 +02:00
static :: assertInstanceOf ( Skill :: class , $subject );
}
/**
* @ test
*/
public function instanceReturnsId ()
{
2020-11-04 15:03:27 +01:00
$settings = $this -> prophesize ( Settings :: class );
$subject = Skill :: createFromJson ( '{"uid":90}' , $settings -> reveal ());
2020-09-21 15:48:04 +02:00
static :: assertSame ( 90 , $subject -> getId ());
}
/**
* @ test
*/
public function instanceReturnsTitle ()
{
2020-11-04 15:03:27 +01:00
$settings = $this -> prophesize ( Settings :: class );
$subject = Skill :: createFromJson ( '{"title":"Example title"}' , $settings -> reveal ());
2020-09-21 15:48:04 +02:00
static :: assertSame ( 'Example title' , $subject -> getTitle ());
}
/**
* @ test
*/
public function instanceReturnsDescription ()
{
2020-11-04 15:03:27 +01:00
$settings = $this -> prophesize ( Settings :: class );
$subject = Skill :: createFromJson ( '{"description":"<p>Example description</p>"}' , $settings -> reveal ());
2020-09-21 15:48:04 +02:00
static :: assertSame ( '<p>Example description</p>' , $subject -> getDescription ());
}
/**
* @ test
*/
public function instanceReturnsGoals ()
{
2020-11-04 15:03:27 +01:00
$settings = $this -> prophesize ( Settings :: class );
$subject = Skill :: createFromJson ( '{"goals":"<p>Example goals</p>"}' , $settings -> reveal ());
2020-09-21 15:48:04 +02:00
static :: assertSame ( '<p>Example goals</p>' , $subject -> getGoals ());
}
2020-11-04 15:03:27 +01:00
/**
* @ test
*/
public function instanceReturnsBrands ()
{
$settings = $this -> prophesize ( Settings :: class );
$subject = Skill :: createFromJson ( '{"brands":[{"uid":10}]}' , $settings -> reveal ());
static :: assertCount ( 1 , $subject -> getBrands ());
static :: assertInstanceOf ( Brand :: class , $subject -> getBrands ()[ 0 ]);
}
/**
* @ test
*/
public function canReturnAsArray ()
{
$settings = $this -> prophesize ( Settings :: class );
$subject = Skill :: createFromJson ( '{"goals":"<p>Example goals</p>","uid":90,"title":"Example title"}' , $settings -> reveal ());
static :: assertSame ([
'goals' => '<p>Example goals</p>' ,
'uid' => 90 ,
'title' => 'Example title' ,
], $subject -> getAsArray ());
}
2020-09-21 15:48:04 +02:00
/**
* @ test
*/
public function canBeConvertedToArray ()
{
2020-11-04 15:03:27 +01:00
$settings = $this -> prophesize ( Settings :: class );
$subject = Skill :: createFromJson ( '{"goals":"<p>Example goals</p>","uid":90,"title":"Example title"}' , $settings -> reveal ());
2020-09-21 15:48:04 +02:00
static :: assertSame ([
'goals' => '<p>Example goals</p>' ,
'uid' => 90 ,
'title' => 'Example title' ,
], $subject -> toArray ());
}
}