Successfully tested create, update and delete of trivial elements

This commit is contained in:
Christian Wolf 2019-05-23 17:52:11 +02:00
parent 23941f32d3
commit 8b25925ec4
5 changed files with 40 additions and 5 deletions

View File

@ -6,6 +6,9 @@ use Joomla\CMS\Factory;
// No direct access.
defined('_JEXEC') or die;
class AssociatedObjectUnsavedException extends Exception
{}
abstract class AbstractCommonClubsModel
{
// TODO Adddata validator
@ -27,9 +30,9 @@ abstract class AbstractCommonClubsModel
private $values = null;
protected function getValues()
protected function getValues($force = false)
{
if(is_null($this->values))
if(is_null($this->values) || $force)
$this->loadDataFromDatabase();
return $this->values;
@ -128,7 +131,14 @@ abstract class AbstractCommonClubsModel
if(is_null($vals[$k]))
continue;
$vals[$k] = $vals[$k]->getId();
$id = $vals[$k]->getId();
if($id === 'new')
{
throw new AssociatedObjectUnsavedException();
}
$vals[$k] = $id;
}
return $vals;

View File

@ -36,9 +36,9 @@ abstract class AbstractCommonClubsModelFactory
public abstract function getAttributes();
private $attributes = null;
private function fetchAttributes()
private function fetchAttributes($force = False)
{
if($this->attributes === null)
if($this->attributes === null || $force)
$this->attributes = $this->getAttributes();
return $this->attributes;

View File

@ -34,4 +34,10 @@ class CommonClubsModelPlace extends AbstractCommonClubsModel
{
$this->setValue('area', $area);
}
public function setClub($club)
{
$this->setValue('club', $club);
}
}

View File

@ -17,3 +17,6 @@ ClubName: <?php echo $this->club->getPresident()->getName(); ?> <br />
<?php foreach($this->club->getPlaces() as $place): ?>
Place: <?php echo $place->getName(); ?><br>
<?php endforeach; ?>
<h1>Output</h1>
<pre><?php print_r($this->log); ?></pre>

View File

@ -14,6 +14,8 @@ class ClubsViewTest extends HtmlView
{
ToolbarHelper::title('Test');
$this->log = '';
$factory = new CommonClubsModelFactoryClub();
$this->clubs = $factory->loadElements();
@ -27,6 +29,20 @@ class ClubsViewTest extends HtmlView
// $places[0]->setName("abc");
// $places[0]->save();
$pfactory = new CommonClubsModelFactoryPlace();
$np = $pfactory->createNew();
$np->setName('MyName');
$np->setClub($c);
//$np->save();
$np->getId();
$np = $c->getPlaces()[1];
$np->getName();
$np->setName('foo2 with new Name');
// $np->save();
// $np->delete();
$this->log = $np;
parent::display($tpl);
}