ControllerProviderTest::testDelete PHP Method

testDelete() public method

public testDelete ( )
    public function testDelete()
    {
        $client = $this->createClient();
        $library = $this->dataLibrary->createEmpty();
        $library->set('name', 'lib a');
        $this->dataLibrary->create($library);
        $entityBook = $this->dataBook->createEmpty();
        $entityBook->set('title', 'titleA');
        $entityBook->set('author', 'authorA');
        $entityBook->set('pages', 111);
        $entityBook->set('release', "2014-08-31");
        $entityBook->set('library', $library->get('id'));
        $this->dataBook->create($entityBook);
        $crawler = $client->request('POST', '/crud/foo/' . $entityBook->get('id') . '/delete');
        $this->assertTrue($client->getResponse()->isNotFound());
        $this->assertCount(1, $crawler->filter('html:contains("Entity not found")'));
        $crawler = $client->request('POST', '/crud/book/666/delete');
        $this->assertTrue($client->getResponse()->isNotFound());
        $this->assertCount(1, $crawler->filter('html:contains("Instance not found")'));
        $this->dataLibrary->getDefinition()->setDeleteCascade(false);
        $crawler = $client->request('POST', '/crud/library/' . $library->get('id') . '/delete');
        $this->assertTrue($client->getResponse()->isRedirect('/crud/library/' . $library->get('id')));
        $crawler = $client->followRedirect();
        $this->assertTrue($client->getResponse()->isOk());
        $this->assertCount(1, $crawler->filter('html:contains("Could not delete Library as it is still referenced by another entity.")'));
        $client->request('POST', '/crud/book/' . $entityBook->get('id') . '/delete');
        $this->assertTrue($client->getResponse()->isRedirect('/crud/book'));
        $crawler = $client->followRedirect();
        $this->assertTrue($client->getResponse()->isOk());
        $this->assertCount(1, $crawler->filter('html:contains("Book deleted.")'));
        $bookDeleted = $this->dataBook->get($entityBook->get('id'));
        $this->assertNull($bookDeleted);
        // Test customizable redirection
        $entityBook = $this->dataBook->createEmpty();
        $entityBook->set('title', 'titleA');
        $entityBook->set('author', 'authorA');
        $entityBook->set('pages', 111);
        $entityBook->set('release', "2014-08-31");
        $entityBook->set('library', $library->get('id'));
        $this->dataBook->create($entityBook);
        $client->request('POST', '/crud/book/' . $entityBook->get('id') . '/delete', ['redirectEntity' => 'library', 'redirectId' => $library->get('id')]);
        $this->assertTrue($client->getResponse()->isRedirect('/crud/library/' . $library->get('id')));
        $crawler = $client->followRedirect();
        $this->assertTrue($client->getResponse()->isOk());
        $this->assertCount(1, $crawler->filter('html:contains("Book deleted.")'));
        $bookDeleted = $this->dataBook->get($entityBook->get('id'));
        $this->assertNull($bookDeleted);
        // Canceling events
        $before = function (Entity $entity) {
            return false;
        };
        $this->dataBook->pushEvent('before', 'delete', $before);
        $entityBook = $this->dataBook->createEmpty();
        $entityBook->set('title', 'titleB');
        $entityBook->set('author', 'authorB');
        $entityBook->set('pages', 111);
        $entityBook->set('release', "2014-08-31");
        $entityBook->set('library', $library->get('id'));
        $this->dataBook->create($entityBook);
        $client->request('POST', '/crud/book/' . $entityBook->get('id') . '/delete');
        $this->assertTrue($client->getResponse()->isRedirect('/crud/book/' . $entityBook->get('id')));
        $client->followRedirect();
        $this->assertRegExp('/Could not delete\\./', $client->getResponse()->getContent());
        $this->dataBook->popEvent('before', 'delete');
        $this->dataBook->pushEvent('before', 'deleteFiles', $before);
        $client->request('POST', '/crud/book/' . $entityBook->get('id') . '/delete');
        $this->assertTrue($client->getResponse()->isRedirect('/crud/book/' . $entityBook->get('id')));
        $client->followRedirect();
        $this->assertRegExp('/Could not delete\\./', $client->getResponse()->getContent());
        $this->dataBook->popEvent('before', 'deleteFiles');
    }