From 15b9fc24b063bcbb615c52dff37c5364a8c0d863 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Sun, 3 Mar 2019 17:49:09 +0100 Subject: [PATCH] Fixes --- src/Engine.php | 52 ++++++++++++++++++++----- tests/Article/SimpleXmlTest.php | 2 +- tests/Legacy/papierDbWithFormelTest.php | 2 +- tests/SampleArticle/Article1Test.php | 27 ------------- 4 files changed, 44 insertions(+), 39 deletions(-) delete mode 100644 tests/SampleArticle/Article1Test.php diff --git a/src/Engine.php b/src/Engine.php index b5f7264..5b1e771 100644 --- a/src/Engine.php +++ b/src/Engine.php @@ -5,6 +5,7 @@ use Doctrine\Common\Persistence\ObjectRepository; use PSC\Library\Calc\Calc\Calc; use PSC\Library\Calc\Calc\Valid; use PSC\Library\Calc\Option\Type\Base; +use PSC\Library\Calc\Option\Type\Select\Opt; use PSC\Library\Calc\Option\Type\Text; class Engine @@ -46,6 +47,9 @@ class Engine /** @var Article */ protected $article = null; + /** @var string */ + protected $activeArticle = false; + /** * Load XML From String @@ -93,8 +97,15 @@ class Engine */ private function getArticleByName($name = false) { - if($name === false) { + if($name === false && $this->activeArticle === false) { + $this->activeArticle = $this->articles[0]->getName(); return $this->articles[0]; + + } + + if($name === false && $this->activeArticle !== false) { + $name = $this->activeArticle; + } /** @var Article $article */ @@ -191,14 +202,11 @@ class Engine $this->variables = $variables; } - public function calc($name = false) { + public function calc() { $this->price = 0; - if($name) { - $this->article = $this->getArticleByName($name); - }else{ - $this->article = $this->articles[0]; - } + + $this->article = $this->getArticleByName($this->activeArticle); // Prefill with defaults /** @var Base $option */ @@ -310,12 +318,36 @@ class Engine /** * @return Article */ - public function getArticle($name = false) + public function getArticle() { - if($this->dirty || $this->article == null || ($name != false && $this->article->getName() != $name)) { - $this->calc($name); + if($this->dirty) { + $this->calc(); } 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; + } + } \ No newline at end of file diff --git a/tests/Article/SimpleXmlTest.php b/tests/Article/SimpleXmlTest.php index cdb08c4..9f902f1 100644 --- a/tests/Article/SimpleXmlTest.php +++ b/tests/Article/SimpleXmlTest.php @@ -27,7 +27,7 @@ class SimpleXmlTest extends \PHPUnit_Framework_TestCase $parser = new Engine(new Container()); $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(); $this->assertInstanceOf('PSC\Library\Calc\Article', $article); $this->assertEquals('Blocks A5 25blatt geleimt', $article->getName()); diff --git a/tests/Legacy/papierDbWithFormelTest.php b/tests/Legacy/papierDbWithFormelTest.php index c99332f..3c4f4a1 100644 --- a/tests/Legacy/papierDbWithFormelTest.php +++ b/tests/Legacy/papierDbWithFormelTest.php @@ -8,7 +8,7 @@ use PSC\Library\Calc\Engine; use PSC\Library\Calc\PaperContainer; use PSC\Library\Calc\Tests\Mock\PaperRepostory; -class selectWithGrenzenTest extends \PHPUnit_Framework_TestCase +class papierDbWithFormelTest extends \PHPUnit_Framework_TestCase { /** @var Engine */ diff --git a/tests/SampleArticle/Article1Test.php b/tests/SampleArticle/Article1Test.php deleted file mode 100644 index a9b927c..0000000 --- a/tests/SampleArticle/Article1Test.php +++ /dev/null @@ -1,27 +0,0 @@ -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()); - } -} \ No newline at end of file