This commit is contained in:
Thomas Peterson 2019-03-03 17:49:09 +01:00
parent 062a1a7297
commit 15b9fc24b0
4 changed files with 44 additions and 39 deletions

View File

@ -5,6 +5,7 @@ use Doctrine\Common\Persistence\ObjectRepository;
use PSC\Library\Calc\Calc\Calc; use PSC\Library\Calc\Calc\Calc;
use PSC\Library\Calc\Calc\Valid; use PSC\Library\Calc\Calc\Valid;
use PSC\Library\Calc\Option\Type\Base; use PSC\Library\Calc\Option\Type\Base;
use PSC\Library\Calc\Option\Type\Select\Opt;
use PSC\Library\Calc\Option\Type\Text; use PSC\Library\Calc\Option\Type\Text;
class Engine class Engine
@ -46,6 +47,9 @@ class Engine
/** @var Article */ /** @var Article */
protected $article = null; protected $article = null;
/** @var string */
protected $activeArticle = false;
/** /**
* Load XML From String * Load XML From String
@ -93,8 +97,15 @@ class Engine
*/ */
private function getArticleByName($name = false) private function getArticleByName($name = false)
{ {
if($name === false) { if($name === false && $this->activeArticle === false) {
$this->activeArticle = $this->articles[0]->getName();
return $this->articles[0]; return $this->articles[0];
}
if($name === false && $this->activeArticle !== false) {
$name = $this->activeArticle;
} }
/** @var Article $article */ /** @var Article $article */
@ -191,14 +202,11 @@ class Engine
$this->variables = $variables; $this->variables = $variables;
} }
public function calc($name = false) { public function calc() {
$this->price = 0; $this->price = 0;
if($name) {
$this->article = $this->getArticleByName($name); $this->article = $this->getArticleByName($this->activeArticle);
}else{
$this->article = $this->articles[0];
}
// Prefill with defaults // Prefill with defaults
/** @var Base $option */ /** @var Base $option */
@ -310,12 +318,36 @@ class Engine
/** /**
* @return Article * @return Article
*/ */
public function getArticle($name = false) public function getArticle()
{ {
if($this->dirty || $this->article == null || ($name != false && $this->article->getName() != $name)) { if($this->dirty) {
$this->calc($name); $this->calc();
} }
return $this->article; return $this->article;
} }
/**
* @param string $activeArticle
*/
public function setActiveArticle($activeArticle)
{
$this->activeArticle = $activeArticle;
$this->dirty = true;
}
public function setSymfonyFormVariables($data)
{
$tmp = [];
foreach($data as $key => $value) {
if($value instanceof Opt) {
$tmp[$key] = $value->getId();
}else{
$tmp[$key] = $value;
}
}
return $tmp;
}
} }

View File

@ -27,7 +27,7 @@ class SimpleXmlTest extends \PHPUnit_Framework_TestCase
$parser = new Engine(new Container()); $parser = new Engine(new Container());
$parser->loadString(file_get_contents(__DIR__ .'/../TestFiles/General/simple2articles.xml')); $parser->loadString(file_get_contents(__DIR__ .'/../TestFiles/General/simple2articles.xml'));
$parser->calc("Blocks A5 25blatt geleimt"); $parser->setActiveArticle("Blocks A5 25blatt geleimt");
$article = $parser->getArticle(); $article = $parser->getArticle();
$this->assertInstanceOf('PSC\Library\Calc\Article', $article); $this->assertInstanceOf('PSC\Library\Calc\Article', $article);
$this->assertEquals('Blocks A5 25blatt geleimt', $article->getName()); $this->assertEquals('Blocks A5 25blatt geleimt', $article->getName());

View File

@ -8,7 +8,7 @@ use PSC\Library\Calc\Engine;
use PSC\Library\Calc\PaperContainer; use PSC\Library\Calc\PaperContainer;
use PSC\Library\Calc\Tests\Mock\PaperRepostory; use PSC\Library\Calc\Tests\Mock\PaperRepostory;
class selectWithGrenzenTest extends \PHPUnit_Framework_TestCase class papierDbWithFormelTest extends \PHPUnit_Framework_TestCase
{ {
/** @var Engine */ /** @var Engine */

View File

@ -1,27 +0,0 @@
<?php
namespace PSC\Library\Calc\Tests\Article;
use PSC\Library\Calc\Engine;
use PSC\Library\Calc\PaperContainer\Container;
class Complete1Test extends \PHPUnit_Framework_TestCase
{
/** @var Engine */
protected $engine = null;
public function setUp()
{
$this->engine = new Engine(new Container());
$this->engine->loadString(file_get_contents(__DIR__ . '/../TestFiles/SampleArticle/article1.xml'));
}
public function tearDown()
{
$this->engine = null;
}
public function testIfArticleCountIsCorrect()
{
$this->assertEquals(1, $this->engine->getArticles()->Count());
}
}