From 2520cb1bbf57db74368d2d9a4e6413a689a42fd3 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Tue, 15 Apr 2014 09:25:32 +1200 Subject: [PATCH] API Allow usage of assets with modified / created date specification --- .../BehatExtension/Context/FixtureContext.php | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/SilverStripe/BehatExtension/Context/FixtureContext.php b/src/SilverStripe/BehatExtension/Context/FixtureContext.php index 279b8a1..a55b70b 100644 --- a/src/SilverStripe/BehatExtension/Context/FixtureContext.php +++ b/src/SilverStripe/BehatExtension/Context/FixtureContext.php @@ -124,11 +124,7 @@ class FixtureContext extends BehatContext */ public function stepCreateRecord($type, $id) { $class = $this->convertTypeToClass($type); - if($class == 'File' || is_subclass_of($class, 'File')) { - $fields = $this->prepareAsset($class, $id); - } else { - $fields = array(); - } + $fields = $this->prepareFixture($class, $id); $this->fixtureFactory->createObject($class, $id, $fields); } @@ -162,9 +158,7 @@ class FixtureContext extends BehatContext $class, array_combine($matches['key'], $matches['value']) ); - if($class == 'File' || is_subclass_of($class, 'File')) { - $fields = $this->prepareAsset($class, $id, $fields); - } + $fields = $this->prepareFixture($class, $id, $fields); $this->fixtureFactory->createObject($class, $id, $fields); } @@ -180,9 +174,7 @@ class FixtureContext extends BehatContext $class = $this->convertTypeToClass($type); // TODO Support more than one record $fields = $this->convertFields($class, $fieldsTable->getRowsHash()); - if($class == 'File' || is_subclass_of($class, 'File')) { - $fields = $this->prepareAsset($class, $id, $fields); - } + $fields = $this->prepareFixture($class, $id, $fields); // We should check if this fixture object already exists - if it does, we update it. If not, we create it if($existingFixture = $this->fixtureFactory->get($class, $id)) { @@ -418,7 +410,7 @@ class FixtureContext extends BehatContext */ public function aRecordWasLastEditedRelative($type, $id, $mod, $time) { $class = $this->convertTypeToClass($type); - $fields = array(); + $fields = $this->prepareFixture($class, $id); $record = $this->fixtureFactory->createObject($class, $id, $fields); $date = date("Y-m-d H:i:s",strtotime($time)); $table = \ClassInfo::baseDataClass(get_class($record)); @@ -441,6 +433,21 @@ class FixtureContext extends BehatContext )); } } + + /** + * Prepares a fixture for use + * + * @param string $class + * @param string $identifier + * @param array $data + * @return array Prepared $data with additional injected fields + */ + protected function prepareFixture($class, $identifier, $data = array()) { + if($class == 'File' || is_subclass_of($class, 'File')) { + $data = $this->prepareAsset($class, $identifier, $data); + } + return $data; + } protected function prepareAsset($class, $identifier, $data = null) { if(!$data) $data = array();