getTableLocator()->clear(); } /** * Tests that an exception is thrown if the transaction is aborted * in the afterSave callback * * @see https://github.com/cakephp/cakephp/issues/9079 * @return void */ public function testAfterSaveRollbackTransaction() { $this->expectException(\Cake\ORM\Exception\RolledbackTransactionException::class); $table = $this->getTableLocator()->get('Authors'); $table->getEventManager()->on( 'Model.afterSave', function () use ($table) { $table->getConnection()->rollback(); } ); $entity = $table->newEntity(['name' => 'Jon']); $table->save($entity); } /** * Ensure that saving to a table with no primary key fails. * * @return void */ public function testSaveNoPrimaryKeyException() { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('primary key'); $table = $this->getTableLocator()->get('Authors'); $table->getSchema()->dropConstraint('primary'); $entity = $table->find()->first(); $entity->name = 'new name'; $table->save($entity); } }