From 06d9d8eefe5905fae8403d1f79cbd7d11c3cdada Mon Sep 17 00:00:00 2001 From: zhil Date: Tue, 30 May 2017 18:24:51 +0300 Subject: [PATCH] #10 - add ability to skip not initialized collections --- .../FixtureGenerationContext.php | 22 +++++++++++++++++++ .../ObjectHandler/CollectionHandler.php | 7 +++++- src/Trappar/AliceGenerator/ValueVisitor.php | 18 +++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/Trappar/AliceGenerator/FixtureGenerationContext.php b/src/Trappar/AliceGenerator/FixtureGenerationContext.php index ef2e863..5ef2280 100644 --- a/src/Trappar/AliceGenerator/FixtureGenerationContext.php +++ b/src/Trappar/AliceGenerator/FixtureGenerationContext.php @@ -10,6 +10,10 @@ class FixtureGenerationContext { + /** + * @var int + */ + private $skipNotInitializedCollections = false; /** * @var int */ @@ -143,4 +147,22 @@ public function setSortResults($sortResults) return $this; } + + /** + * @return int + */ + public function getSkipNotInitializedCollections() + { + return $this->skipNotInitializedCollections; + } + + /** + * @param int $skipNotInitializedCollections + * @return self + */ + public function setSkipNotInitializedCollections($skipNotInitializedCollections) + { + $this->skipNotInitializedCollections = $skipNotInitializedCollections; + return $this; + } } \ No newline at end of file diff --git a/src/Trappar/AliceGenerator/ObjectHandler/CollectionHandler.php b/src/Trappar/AliceGenerator/ObjectHandler/CollectionHandler.php index 7580c3e..708508a 100644 --- a/src/Trappar/AliceGenerator/ObjectHandler/CollectionHandler.php +++ b/src/Trappar/AliceGenerator/ObjectHandler/CollectionHandler.php @@ -16,7 +16,12 @@ public function handle(ValueContext $valueContext) return false; } - $valueContext->setValue($collection->toArray()); + $fixturesGenerationContext = $valueContext->getValueVisitor()->getFixtureGenerationContext(); + if($fixturesGenerationContext->getSkipNotInitializedCollections() && !$collection->isInitialized()) { + $valueContext->setValue([]); + } else { + $valueContext->setValue($collection->toArray()); + } $valueContext->getValueVisitor()->visitArray($valueContext); return true; diff --git a/src/Trappar/AliceGenerator/ValueVisitor.php b/src/Trappar/AliceGenerator/ValueVisitor.php index 8e8f0db..f228dad 100644 --- a/src/Trappar/AliceGenerator/ValueVisitor.php +++ b/src/Trappar/AliceGenerator/ValueVisitor.php @@ -243,4 +243,22 @@ private function handlePersistedObject($object, $reference) return true; } } + + /** + * @return FixtureGenerationContext + */ + public function getFixtureGenerationContext() + { + return $this->fixtureGenerationContext; + } + + /** + * @param FixtureGenerationContext $fixtureGenerationContext + * @return self + */ + public function setFixtureGenerationContext(FixtureGenerationContext $fixtureGenerationContext) + { + $this->fixtureGenerationContext = $fixtureGenerationContext; + return $this; + } }