Fix tests

This commit is contained in:
Jeremy Benoist 2018-11-26 22:22:49 +01:00
parent 1b6b77f029
commit 8f2038e5b1
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
5 changed files with 86 additions and 71 deletions

View file

@ -44,15 +44,15 @@
"ext-tokenizer": "*",
"ext-pdo": "*",
"symfony/symfony": "3.4.*",
"doctrine/orm": "^2.5.12",
"doctrine/doctrine-bundle": "^1.8.0",
"doctrine/doctrine-cache-bundle": "^1.3.2",
"twig/extensions": "^1.5.1",
"symfony/swiftmailer-bundle": "^3.2.3",
"symfony/monolog-bundle": "^3.1.2",
"sensio/distribution-bundle": "^5.0.21",
"sensio/framework-extra-bundle": "^5.2.1",
"incenteev/composer-parameter-handler": "^2.1.2",
"doctrine/orm": "^2.6",
"doctrine/doctrine-bundle": "^1.9",
"doctrine/doctrine-cache-bundle": "^1.3",
"twig/extensions": "^1.5",
"symfony/swiftmailer-bundle": "^3.2",
"symfony/monolog-bundle": "^3.1",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^5.2",
"incenteev/composer-parameter-handler": "^2.1",
"nelmio/cors-bundle": "~1.5",
"friendsofsymfony/rest-bundle": "~2.1",
"jms/serializer-bundle": "~2.2",
@ -62,27 +62,26 @@
"simplepie/simplepie": "~1.5",
"willdurand/hateoas-bundle": "~1.3",
"liip/theme-bundle": "^1.4.6",
"lexik/form-filter-bundle": "^5.0.4",
"lexik/form-filter-bundle": "^5.0",
"j0k3r/graby": "^1.0",
"friendsofsymfony/user-bundle": "2.0.*",
"friendsofsymfony/oauth-server-bundle": "^1.5.2",
"friendsofsymfony/oauth-server-bundle": "^1.5",
"stof/doctrine-extensions-bundle": "^1.2",
"scheb/two-factor-bundle": "^2.14.0",
"scheb/two-factor-bundle": "^2.14",
"grandt/phpepub": "dev-master",
"wallabag/php-mobi": "~1.0.0",
"wallabag/php-mobi": "~1.0",
"kphoen/rulerz-bundle": "~0.13",
"guzzlehttp/guzzle": "^5.3.1",
"doctrine/doctrine-migrations-bundle": "^1.3",
"paragonie/random_compat": "^2.0.11",
"craue/config-bundle": "~2.0",
"mnapoli/piwik-twig-extension": "^1.0",
"ocramius/proxy-manager": "^1.0.2",
"white-october/pagerfanta-bundle": "^1.1.0",
"white-october/pagerfanta-bundle": "^1.1",
"php-amqplib/rabbitmq-bundle": "^1.14",
"predis/predis": "v1.1.x-dev",
"javibravo/simpleue": "^2.0",
"symfony/dom-crawler": "^3.3.13",
"friendsofsymfony/jsrouting-bundle": "^2.2.1",
"symfony/dom-crawler": "^3.4",
"friendsofsymfony/jsrouting-bundle": "^2.2",
"bdunogier/guzzle-site-authenticator": "^1.0.0@dev",
"defuse/php-encryption": "^2.1",
"html2text/html2text": "^4.1"
@ -90,10 +89,10 @@
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "~3.0",
"sensio/generator-bundle": "^3.0",
"symfony/phpunit-bridge": "3.4.x-dev",
"friendsofphp/php-cs-fixer": "~2.0",
"m6web/redis-mock": "^2.0",
"dama/doctrine-test-bundle": "^4.0"
"symfony/phpunit-bridge": "^3.4",
"friendsofphp/php-cs-fixer": "~2.13",
"m6web/redis-mock": "^4.1",
"dama/doctrine-test-bundle": "^5.0"
},
"scripts": {
"post-cmd": [

View file

@ -100,8 +100,7 @@ class AnnotationControllerTest extends WallabagAnnotationTestCase
$this->assertSame('my quote', $content['quote']);
/** @var Annotation $annotation */
$annotation = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
$annotation = $em
->getRepository('WallabagAnnotationBundle:Annotation')
->findLastAnnotationByPageId($entry->getId(), 1);

View file

@ -15,7 +15,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneBy(['user' => 1, 'isArchived' => false]);
->findOneBy(['user' => $this->getUserId(), 'isArchived' => false]);
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -41,7 +41,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneBy(['user' => 1, 'url' => 'http://0.0.0.0/entry2']);
->findOneBy(['user' => $this->getUserId(), 'url' => 'http://0.0.0.0/entry2']);
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -60,7 +60,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneBy(['user' => 1, 'isArchived' => false]);
->findOneBy(['user' => $this->getUserId(), 'isArchived' => false]);
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -108,7 +108,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneBy(['user' => 2, 'isArchived' => false]);
->findOneBy(['user' => $this->getUserId('bob'), 'isArchived' => false]);
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -185,7 +185,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneByUser(1);
->findOneByUser($this->getUserId());
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -394,7 +394,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneByUser(1, ['id' => 'asc']);
->findOneByUser($this->getUserId(), ['id' => 'asc']);
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -440,7 +440,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$this->assertNull($content['starred_at']);
$this->assertNull($content['archived_at']);
$this->assertSame('New title for my article', $content['title']);
$this->assertSame(1, $content['user_id']);
$this->assertSame($this->getUserId(), $content['user_id']);
$this->assertCount(2, $content['tags']);
$this->assertNull($content['origin_url']);
$this->assertSame('my content', $content['content']);
@ -455,7 +455,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
public function testPostSameEntry()
{
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
$entry = new Entry($em->getReference(User::class, 1));
$entry = new Entry($em->getReference(User::class, $this->getUserId()));
$entry->setUrl('https://www.lemonde.fr/pixels/article/2015/03/28/plongee-dans-l-univers-d-ingress-le-jeu-de-google-aux-frontieres-du-reel_4601155_4408996.html');
$entry->setArchived(true);
$entry->addTag((new Tag())->setLabel('google'));
@ -535,7 +535,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$this->assertSame(1, $content['is_starred']);
$this->assertGreaterThanOrEqual($now->getTimestamp(), (new \DateTime($content['starred_at']))->getTimestamp());
$this->assertGreaterThanOrEqual($now->getTimestamp(), (new \DateTime($content['archived_at']))->getTimestamp());
$this->assertSame(1, $content['user_id']);
$this->assertSame($this->getUserId(), $content['user_id']);
}
public function testPostArchivedAndStarredEntryWithoutQuotes()
@ -584,7 +584,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneByUser(1);
->findOneByUser($this->getUserId());
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -611,7 +611,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$this->assertSame($entry->getUrl(), $content['url']);
$this->assertSame('New awesome title', $content['title']);
$this->assertGreaterThanOrEqual(1, \count($content['tags']), 'We force only one tag');
$this->assertSame(1, $content['user_id']);
$this->assertSame($this->getUserId(), $content['user_id']);
$this->assertSame('de_AT', $content['language']);
$this->assertSame('http://preview.io/picture.jpg', $content['preview_picture']);
$this->assertContains('sponge', $content['published_by']);
@ -626,7 +626,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneByUser(1);
->findOneByUser($this->getUserId());
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -660,7 +660,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneByUser(1);
->findOneByUser($this->getUserId());
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -691,7 +691,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneByUser(1);
->findOneByUser($this->getUserId());
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -723,7 +723,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneByUser(1);
->findOneByUser($this->getUserId());
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -768,7 +768,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneByUser(1);
->findOneByUser($this->getUserId());
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -833,7 +833,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneBy(['user' => 1, 'isArchived' => true]);
->findOneBy(['user' => $this->getUserId(), 'isArchived' => true]);
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -855,7 +855,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneBy(['user' => 1, 'isStarred' => true]);
->findOneBy(['user' => $this->getUserId(), 'isStarred' => true]);
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -877,7 +877,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneBy(['user' => 1, 'isArchived' => true]);
->findOneBy(['user' => $this->getUserId(), 'isArchived' => true]);
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -903,7 +903,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneBy(['user' => 1, 'isStarred' => true]);
->findOneBy(['user' => $this->getUserId(), 'isStarred' => true]);
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -920,32 +920,27 @@ class EntryRestControllerTest extends WallabagApiTestCase
$this->assertGreaterThanOrEqual($now->getTimestamp(), (new \DateTime($content['starred_at']))->getTimestamp());
}
public function dataForEntriesExistWithUrl()
public function testGetEntriesExistsWithReturnId()
{
return [
'with_id' => [
'url' => '/api/entries/exists?url=http://0.0.0.0/entry2&return_id=1',
'expectedValue' => 2,
],
'without_id' => [
'url' => '/api/entries/exists?url=http://0.0.0.0/entry2',
'expectedValue' => true,
],
];
}
/**
* @dataProvider dataForEntriesExistWithUrl
*/
public function testGetEntriesExists($url, $expectedValue)
{
$this->client->request('GET', $url);
$this->client->request('GET', '/api/entries/exists?url=http://0.0.0.0/entry2&return_id=1');
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
$content = json_decode($this->client->getResponse()->getContent(), true);
$this->assertSame($expectedValue, $content['exists']);
// it returns a database id, we don't know it, so we only check it's greater than the lowest possible value
$this->assertGreaterThan(1, $content['exists']);
}
public function testGetEntriesExistsWithoutReturnId()
{
$this->client->request('GET', '/api/entries/exists?url=http://0.0.0.0/entry2');
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
$content = json_decode($this->client->getResponse()->getContent(), true);
$this->assertSame(true, $content['exists']);
}
public function testGetEntriesExistsWithManyUrls()
@ -960,7 +955,8 @@ class EntryRestControllerTest extends WallabagApiTestCase
$this->assertArrayHasKey($url1, $content);
$this->assertArrayHasKey($url2, $content);
$this->assertSame(2, $content[$url1]);
// it returns a database id, we don't know it, so we only check it's greater than the lowest possible value
$this->assertGreaterThan(1, $content[$url1]);
$this->assertNull($content[$url2]);
}
@ -1002,7 +998,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
{
$entry = $this->client->getContainer()->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findByUrlAndUserId('http://0.0.0.0/entry4', 1);
->findByUrlAndUserId('http://0.0.0.0/entry4', $this->getUserId());
if (!$entry) {
$this->markTestSkipped('No content found in db.');
@ -1038,7 +1034,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
{
$entry = $this->client->getContainer()->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findByUrlAndUserId('http://0.0.0.0/entry4', 1);
->findByUrlAndUserId('http://0.0.0.0/entry4', $this->getUserId());
$tags = $entry->getTags();
@ -1062,7 +1058,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
$entry = $this->client->getContainer()->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findByUrlAndUserId('http://0.0.0.0/entry4', 1);
->findByUrlAndUserId('http://0.0.0.0/entry4', $this->getUserId());
$tags = $entry->getTags();
$this->assertCount(4, $tags);
@ -1082,7 +1078,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
public function testDeleteEntriesTagsListAction()
{
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
$entry = new Entry($em->getReference(User::class, 1));
$entry = new Entry($em->getReference(User::class, $this->getUserId()));
$entry->setUrl('http://0.0.0.0/test-entry');
$entry->addTag((new Tag())->setLabel('foo-tag'));
$entry->addTag((new Tag())->setLabel('bar-tag'));
@ -1150,7 +1146,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
public function testDeleteEntriesListAction()
{
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
$em->persist((new Entry($em->getReference(User::class, 1)))->setUrl('http://0.0.0.0/test-entry1'));
$em->persist((new Entry($em->getReference(User::class, $this->getUserId())))->setUrl('http://0.0.0.0/test-entry1'));
$em->flush();
$em->clear();
@ -1208,7 +1204,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
public function testRePostEntryAndReUsePublishedAt()
{
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
$entry = new Entry($em->getReference(User::class, 1));
$entry = new Entry($em->getReference(User::class, $this->getUserId()));
$entry->setTitle('Antoine de Caunes : « Je veux avoir le droit de tâtonner »');
$entry->setContent('hihi');
$entry->setUrl('https://www.lemonde.fr/m-perso/article/2017/06/25/antoine-de-caunes-je-veux-avoir-le-droit-de-tatonner_5150728_4497916.html');

View file

@ -48,4 +48,23 @@ abstract class WallabagApiTestCase extends WebTestCase
return $client;
}
/**
* Return the ID for the user admin.
* Used because on heavy testing we don't want to re-create the database on each run.
* Which means "admin" user won't have id 1 all the time.
*
* @param string $username
*
* @return int
*/
public function getUserId($username = 'admin')
{
return $this->client
->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagUserBundle:User')
->findOneByUserName($username)
->getId();
}
}

View file

@ -84,6 +84,8 @@ class ImportCommandTest extends WallabagCoreTestCase
public function testRunImportCommandWithUserId()
{
$this->logInAs('admin');
$application = new Application($this->getClient()->getKernel());
$application->add(new ImportCommand());
@ -92,7 +94,7 @@ class ImportCommandTest extends WallabagCoreTestCase
$tester = new CommandTester($command);
$tester->execute([
'command' => $command->getName(),
'username' => 1,
'username' => $this->getLoggedInUserId(),
'filepath' => $application->getKernel()->getContainer()->getParameter('kernel.project_dir') . '/tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json',
'--useUserId' => true,
'--importer' => 'v2',