createApplication(); $em = $app->getContainer()->get('entityManager'); $tm = $em->getTransactionManager(); $tm->start(); $account = $em->createEntity('Account', [ 'name' => 'test', ]); $this->assertNotNull($account); $id = $account->id; $tm->commit(); $account = $em->getEntity('Account', $id); $this->assertNotNull($account); } public function testRollbackOne() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $tm = $em->getTransactionManager(); $tm->start(); $account = $em->createEntity('Account', [ 'name' => 'test', ]); $this->assertNotNull($account); $id = $account->id; $tm->rollback(); $account = $em->getEntity('Account', $id); $this->assertNull($account); } public function testRollbackNested() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $tm = $em->getTransactionManager(); $tm->start(); $account1 = $em->createEntity('Account', [ 'name' => 'test1', ]); $id1 = $account1->id; $tm->start(); $account2 = $em->createEntity('Account', [ 'name' => 'test2', ]); $id2 = $account2->id; $tm->rollback(); $tm->commit(); $account1 = $em->getEntity('Account', $id1); $account2 = $em->getEntity('Account', $id2); $this->assertNotNull($account1); $this->assertNull($account2); } public function testRunCommit() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $tm = $em->getTransactionManager(); $account = $em->createEntity('Account', [ 'name' => 'test', ]); $id = $account->id; $tm->run( function () use ($em, $id){ $account = $em->getEntity('Account', $id); $account->set('name', 'test-1'); $em->saveEntity($account); } ); $account = $em->getEntity('Account', $id); $this->assertNotNull($account); $this->assertEquals('test-1', $account->get('name')); } public function testRunRollback() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $tm = $em->getTransactionManager(); $account = $em->createEntity('Account', [ 'name' => 'test', ]); $id = $account->id; try { $tm->run( function () use ($em, $id){ $account = $em->getEntity('Account', $id); $account->set('name', 'test-1'); $em->saveEntity($account); throw new \Exception(); } ); } catch (\Exception $e) {} $account = $em->getEntity('Account', $id); $this->assertNotNull($account); $this->assertEquals('test', $account->get('name')); } }