Files
core/tests/Models/ModuleTest.php
T
2016-09-16 05:26:19 +00:00

82 lines
2.5 KiB
PHP

<?php
declare(strict_types=1);
namespace LotGD\Core\Tests\Models;
use LotGD\Core\Models\Module;
use LotGD\Core\Models\ModuleProperty;
use LotGD\Core\Tests\CoreModelTestCase;
/**
* Tests for module management.
*/
class ModuleTest extends CoreModelTestCase
{
/** @var string default data set */
protected $dataset = "module";
/**
* Test getter methods
*/
public function testGetters()
{
$em = $this->getEntityManager();
$scene = $em->getRepository(Module::class)->find('lotgd/tests');
$this->assertEquals("lotgd/tests", $scene->getLibrary());
$this->assertEquals(new \DateTime('2016-05-01'), $scene->getCreatedAt());
$em->flush();
}
public function testProperties()
{
$em = $this->getEntityManager();
// test default values
$module = $em->getRepository(Module::class)->find('lotgd/tests');
$this->assertSame(5, $module->getProperty("dragonkills", 5));
$this->assertNotSame(5, $module->getProperty("dragonkills", "5"));
$this->assertSame("hanniball", $module->getProperty("petname", "hanniball"));
// test setting variables, then getting
$module->setProperty("dragonkills", 5);
$this->assertSame(5, $module->getProperty("dragonkills"));
$this->assertNotSame("5", $module->getProperty("dragonkills"));
$module->setProperty("dragonkills", "20");
$this->assertNotSame(20, $module->getProperty("dragonkills"));
$this->assertSame("20", $module->getProperty("dragonkills"));
// save some other variables
$module->setProperty("testvar1", 5);
$module->setProperty("testvar2", [5 => 18]);
$module->setProperty("testvar3 9 8", "spam and eggs");
$module->setProperty("testvar4", true);
// test precreated property
$this->assertSame("hallo", $module->getProperty("test"));
// test flushing
$em->flush();
// revisit database and retrieve properties, check if the correct number is saved
$total = intval($em->createQueryBuilder()
->from(ModuleProperty::class, "u")
->select("COUNT(u.propertyName)")
->getQuery()->getSingleScalarResult());
$this->assertSame(6, $total);
// test cascading removes
$module->delete($em);
$total = intval($em->createQueryBuilder()
->from(ModuleProperty::class, "u")
->select("COUNT(u.propertyName)")
->getQuery()->getSingleScalarResult());
$this->assertSame(0, $total);
}
}