diff --git a/src/SilverStripe/BehatExtension/Context/FixtureContext.php b/src/SilverStripe/BehatExtension/Context/FixtureContext.php index 36d574e..3584e44 100644 --- a/src/SilverStripe/BehatExtension/Context/FixtureContext.php +++ b/src/SilverStripe/BehatExtension/Context/FixtureContext.php @@ -139,7 +139,16 @@ class FixtureContext extends BehatContext $class, array($field => $value) ); - $this->fixtureFactory->createObject($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)) { + // Merge existing data with new data, and create new object to replace existing object + foreach($fields as $k => $v) { + $existingFixture->$k = $v; + } + $existingFixture->write(); + } else { + $this->fixtureFactory->createObject($class, $id, $fields); + } } /** @@ -160,7 +169,16 @@ class FixtureContext extends BehatContext array_combine($matches['key'], $matches['value']) ); $fields = $this->prepareFixture($class, $id, $fields); - $this->fixtureFactory->createObject($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)) { + // Merge existing data with new data, and create new object to replace existing object + foreach($fields as $k => $v) { + $existingFixture->$k = $v; + } + $existingFixture->write(); + } else { + $this->fixtureFactory->createObject($class, $id, $fields); + } } /**