diff --git a/lib/Doctrine/ODM/PHPCR/UnitOfWork.php b/lib/Doctrine/ODM/PHPCR/UnitOfWork.php index ab9a8fde2..785c03f0c 100644 --- a/lib/Doctrine/ODM/PHPCR/UnitOfWork.php +++ b/lib/Doctrine/ODM/PHPCR/UnitOfWork.php @@ -1090,7 +1090,8 @@ public function isScheduledForInsert($document) public function computeSingleDocumentChangeSet($document) { $state = $this->getDocumentState($document); - if ($state !== self::STATE_MANAGED) { + + if ($state !== self::STATE_MANAGED && $state !== self::STATE_REMOVED) { throw new InvalidArgumentException('Document has to be managed for single computation '.self::objToStr($document, $this->dm)); } diff --git a/tests/Doctrine/Tests/ODM/PHPCR/UnitOfWorkTest.php b/tests/Doctrine/Tests/ODM/PHPCR/UnitOfWorkTest.php index cba2e966b..c7353c9e4 100644 --- a/tests/Doctrine/Tests/ODM/PHPCR/UnitOfWorkTest.php +++ b/tests/Doctrine/Tests/ODM/PHPCR/UnitOfWorkTest.php @@ -161,6 +161,22 @@ public function testUuid() $uow = new UnitOfWork($dm); $this->assertEquals('like-a-uuid', $method->invoke($uow)); } + + /** + * @see https://github.com/doctrine/phpcr-odm/issues/637 + * @covers Doctrine\ODM\PHPCR\UnitOfWork::computeSingleDocumentChangeSet + */ + public function testComputeSingleDocumentChangeSetForRemovedDocument() + { + $object = new UoWUser(); + $object->username = "bar"; + $object->id = '/somepath'; + + $this->uow->scheduleRemove($object); + + // Should not throw "InvalidArgumentException: Document has to be managed for single computation" + $this->uow->computeSingleDocumentChangeSet($object); + } } class UoWUser diff --git a/tests/travis_doctrine_dbal.sh b/tests/travis_doctrine_dbal.sh index 20d7c7952..b7596c6f2 100755 --- a/tests/travis_doctrine_dbal.sh +++ b/tests/travis_doctrine_dbal.sh @@ -19,5 +19,5 @@ fi mysql -e 'create database IF NOT EXISTS phpcr_odm_tests;' -u root cp ${SCRIPT_DIR}/../cli-config.doctrine_dbal.php.dist ${SCRIPT_DIR}/../cli-config.php -${SCRIPT_DIR}/../bin/phpcrodm jackalope:init:dbal +${SCRIPT_DIR}/../bin/phpcrodm jackalope:init:dbal --force ${SCRIPT_DIR}/../bin/phpcrodm doctrine:phpcr:register-system-node-types