diff --git a/src/ChangeSet.php b/src/ChangeSet.php index feeaef67..c405b5be 100644 --- a/src/ChangeSet.php +++ b/src/ChangeSet.php @@ -298,11 +298,6 @@ protected function calculateImplicit() */ public function sync() { - // Only sync open changesets - if ($this->State !== static::STATE_OPEN) { - return; - } - // Start a transaction (if we can) DB::get_conn()->withTransaction(function () { diff --git a/tests/php/ChangeSetTest.php b/tests/php/ChangeSetTest.php index 768e70b9..5ed3b1b5 100644 --- a/tests/php/ChangeSetTest.php +++ b/tests/php/ChangeSetTest.php @@ -735,4 +735,32 @@ public function testIsSyncedCanBeSkipped() $this->assertFalse($changeset->isSyncCalled, 'isSynced is skipped when providing truthy argument to publish'); } + + public function testRemoveObject() + { + $this->publishAllFixtures(); + + $mid1 = $this->objFromFixture(ChangeSetTest\MidObject::class, 'mid1'); + $mid2 = $this->objFromFixture(ChangeSetTest\MidObject::class, 'mid2'); + + $changeset = new ChangeSet(); + $changeset->write(); + $changeset->addObject($mid1); + $changeset->addObject($mid2); + $changeset->publish(); + + $changeset->removeObject($mid1); + + $this->assertChangeSetLooksLike( + $changeset, + [ + ChangeSetTest\MidObject::class . '.mid2' => ChangeSetItem::EXPLICITLY, + ChangeSetTest\EndObject::class . '.end2' => ChangeSetItem::IMPLICITLY, + ] + ); + + $changeset->removeObject($mid2); + + $this->assertChangeSetLooksLike($changeset, []); + } }