Procházet zdrojové kódy

Adds combination test.

Benjamin Michalski před 10 roky
rodič
revize
6a17d43a9e

+ 72 - 0
src/Packagist/WebBundle/Tests/Controller/WebControllerTest.php

@@ -161,6 +161,78 @@ class WebControllerTest extends WebTestCase
         );
     }
 
+    /**
+     * @covers ::nothing
+     */
+    public function testSearchOrderBysCombinationAction()
+    {
+        $userMock = $this->getMock('Packagist\WebBundle\Entity\User');
+        $userMock1 = $this->getMock('Packagist\WebBundle\Entity\User');
+        $userMock2 = $this->getMock('Packagist\WebBundle\Entity\User');
+
+        $userMock->method('getId')->will($this->returnValue(1));
+        $userMock1->method('getId')->will($this->returnValue(2));
+        $userMock2->method('getId')->will($this->returnValue(3));
+
+        $json = $this->commonTestSearchActionOrderBysAction(
+            function (
+                ContainerInterface $container,
+                Package $twigPackage,
+                Package $packagistPackage,
+                Package $symfonyPackage
+            ) use (
+                $userMock,
+                $userMock1,
+                $userMock2
+            ) {
+                $downloadManager = $container->get('packagist.download_manager');
+
+                /* @var $downloadManager DownloadManager */
+
+                for ($i = 0; $i < 25; $i += 1) {
+                    $downloadManager->addDownload($twigPackage->getId(), 25);
+                }
+                for ($i = 0; $i < 12; $i += 1) {
+                    $downloadManager->addDownload($packagistPackage->getId(), 12);
+                }
+                for ($i = 0; $i < 25; $i += 1) {
+                    $downloadManager->addDownload($symfonyPackage->getId(), 42);
+                }
+
+                $favoriteManager = $container->get('packagist.favorite_manager');
+
+                /* @var $favoriteManager FavoriteManager */
+
+                $favoriteManager->markFavorite($userMock, $packagistPackage);
+
+                $favoriteManager->markFavorite($userMock, $symfonyPackage);
+                $favoriteManager->markFavorite($userMock1, $symfonyPackage);
+                $favoriteManager->markFavorite($userMock2, $symfonyPackage);
+            },
+            array(
+                array(
+                    'sort' => 'downloads',
+                    'order' => 'desc',
+                ),
+                array(
+                    'sort' => 'favers',
+                    'order' => 'desc',
+                ),
+            )
+        );
+
+        $this->assertSame(
+            $this->getJsonResults(
+                array(
+                    $this->getJsonResult('symfony/symfony', 25, 3),
+                    $this->getJsonResult('twig/twig', 25, 0),
+                    $this->getJsonResult('composer/packagist', 12, 1),
+                )
+            ),
+            $json
+        );
+    }
+
     /**
      * @param callable $onBeforeIndex TODO Add typehint when migrating to 5.4+
      * @param array $orderBys