public function testDelete()
{
$entity = $this->dataLibrary->createEmpty();
$entity->set('name', 'nameDelete');
$this->dataLibrary->create($entity);
$deleted = $this->dataLibrary->delete($entity);
$read = $this->dataLibrary->get($entity->get('id'));
$expected = AbstractData::DELETION_SUCCESS;
$this->assertSame($deleted, $expected);
$this->assertNull($read);
$entityLibrary = $this->dataLibrary->createEmpty();
$entityLibrary->set('name', 'nameParentTestDelete');
$this->dataLibrary->create($entityLibrary);
$entityBook = $this->dataBook->createEmpty();
$entityBook->set('title', 'title');
$entityBook->set('author', 'author');
$entityBook->set('pages', 111);
$entityBook->set('library', $entityLibrary->get('id'));
$this->dataBook->create($entityBook);
$this->dataLibrary->getDefinition()->setDeleteCascade(false);
$deleted = $this->dataLibrary->delete($entityLibrary);
$expected = AbstractData::DELETION_FAILED_STILL_REFERENCED;
$this->assertSame($deleted, $expected);
$deleted = $this->dataBook->delete($entityBook);
$expected = AbstractData::DELETION_SUCCESS;
$this->assertSame($deleted, $expected);
$deleted = $this->dataLibrary->delete($entityLibrary);
$expected = AbstractData::DELETION_SUCCESS;
$this->assertSame($deleted, $expected);
$this->dataLibrary->getDefinition()->setDeleteCascade(true);
$entityLibrary = $this->dataLibrary->createEmpty();
$entityLibrary->set('name', 'nameParentTestDelete');
$this->dataLibrary->create($entityLibrary);
$entityBook = $this->dataBook->createEmpty();
$entityBook->set('title', 'title');
$entityBook->set('author', 'author');
$entityBook->set('pages', 111);
$entityBook->set('library', $entityLibrary->get('id'));
$this->dataBook->create($entityBook);
$deleted = $this->dataLibrary->delete($entityLibrary);
$expected = AbstractData::DELETION_SUCCESS;
$this->assertSame($deleted, $expected);
$entityBook2 = $this->dataBook->get($entityBook->get('id'));
$this->assertNull($entityBook2);
}