From fadc0200f240fb344dcad3e0ed1bf49fc9f4ef0a Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Tue, 20 Dec 2011 13:35:15 +0100 Subject: [PATCH] enhance basket tests --- lib/unitTest/basketTest.php | 223 ++++++++++++++++++++++++++++++++---- 1 file changed, 203 insertions(+), 20 deletions(-) diff --git a/lib/unitTest/basketTest.php b/lib/unitTest/basketTest.php index f6b5884a01..e9941dab2c 100644 --- a/lib/unitTest/basketTest.php +++ b/lib/unitTest/basketTest.php @@ -27,6 +27,7 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract protected $client; protected $loader; + protected static $need_records = 2; public function setUp() { @@ -44,7 +45,11 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract { $route = '/baskets/'; - $this->client->request('POST', $route, array('name' => 'panier', 'desc' => 'mon beau panier')); + $this->client->request( + 'POST', $route, array( + 'name' => 'panier', + 'desc' => 'mon beau panier') + ); $response = $this->client->getResponse(); @@ -59,6 +64,32 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $this->assertEquals(302, $response->getStatusCode()); } + public function testRootPostJSON() + { + $route = '/baskets/'; + + $this->client->request( + 'POST', $route, array( + 'name' => 'panier', + 'desc' => 'mon beau panier') + , array(), array( + "HTTP_ACCEPT" => "application/json" + ) + ); + + $response = $this->client->getResponse(); + + $query = self::$core->getEntityManager()->createQuery( + 'SELECT COUNT(b.id) FROM \Entities\Basket b' + ); + + $count = $query->getSingleScalarResult(); + + $this->assertEquals(1, $count); + + $this->assertEquals(200, $response->getStatusCode()); + } + public function testCreateGet() { $route = '/baskets/create/'; @@ -69,9 +100,14 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $this->assertEquals(200, $response->getStatusCode()); - $this->assertEquals($crawler->filter("form[action='/prod/baskets/']")->count(), 1); - $this->assertEquals($crawler->filter("form[action='/prod/baskets/'] input[name='name']")->count(), 1); - $this->assertEquals($crawler->filter("form[action='/prod/baskets/'] textarea[name='description']")->count(), 1); + $filter = "form[action='/prod/baskets/']"; + $this->assertEquals(1, $crawler->filter($filter)->count()); + + $filter = "form[action='/prod/baskets/'] input[name='name']"; + $this->assertEquals(1, $crawler->filter($filter)->count()); + + $filter = "form[action='/prod/baskets/'] textarea[name='description']"; + $this->assertEquals(1, $crawler->filter($filter)->count()); } public function testBasketGet() @@ -87,6 +123,82 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $this->assertEquals(200, $response->getStatusCode()); } + public function testBasketDeleteElementPost() + { + /* @var $em \Doctrine\ORM\EntityManager */ + $em = self::$core->getEntityManager(); + + $basket = $this->insertOneBasket(); + + $record = self::$record_1; + + $basket_element = new \Entities\BasketElement(); + $basket_element->setBasket($basket); + $basket_element->setRecord($record); + $basket_element->setLastInBasket(); + + $basket->addBasketElement($basket_element); + + $em->persist($basket); + + $em->flush(); + + $route = sprintf( + "/baskets/%s/%s/delete/", $basket->getId(), $basket_element->getId() + ); + + $crawler = $this->client->request('POST', $route); + + $response = $this->client->getResponse(); + + $em = self::$core->getEntityManager(); + /* @var $em \Doctrine\ORM\EntityManager */ + + $em->refresh($basket); + + $this->assertEquals(302, $response->getStatusCode()); + + $this->assertEquals(0, $basket->getElements()->count()); + } + + public function testBasketDeleteElementPostJSON() + { + /* @var $em \Doctrine\ORM\EntityManager */ + $em = self::$core->getEntityManager(); + + $basket = $this->insertOneBasket(); + + $record = self::$record_1; + + $basket_element = new \Entities\BasketElement(); + $basket_element->setBasket($basket); + $basket_element->setRecord($record); + $basket_element->setLastInBasket(); + + $basket->addBasketElement($basket_element); + + $em->persist($basket); + + $em->flush(); + + $route = sprintf( + "/baskets/%s/%s/delete/", $basket->getId(), $basket_element->getId() + ); + + $crawler = $this->client->request( + 'POST', $route, array(), array(), array( + "HTTP_ACCEPT" => "application/json") + ); + + $response = $this->client->getResponse(); + + $em->refresh($basket); + + $this->assertEquals(200, $response->getStatusCode()); + + $this->assertEquals(0, $basket->getElements()->count()); + } + public function testBasketDeletePost() { $basket = $this->insertOneBasket(); @@ -114,7 +226,10 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $route = sprintf('/baskets/%s/delete/', $basket->getId()); - $crawler = $this->client->request('POST', $route, array(), array(), array("HTTP_ACCEPT" => "application/json")); + $crawler = $this->client->request( + 'POST', $route, array(), array(), array( + "HTTP_ACCEPT" => "application/json") + ); $this->client->getRequest()->setRequestFormat('json'); @@ -137,7 +252,11 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $route = sprintf('/baskets/%s/update/', $basket->getId()); - $crawler = $this->client->request('POST', $route, array('name' => 'new_name', 'description' => 'new_desc')); + $crawler = $this->client->request( + 'POST', $route, array( + 'name' => 'new_name', + 'description' => 'new_desc') + ); $response = $this->client->getResponse(); @@ -157,7 +276,13 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $route = sprintf('/baskets/%s/update/', $basket->getId()); - $crawler = $this->client->request('POST', $route, array('name' => 'new_name', 'description' => 'new_desc'), array(), array("HTTP_ACCEPT" => "application/json")); + $crawler = $this->client->request( + 'POST', $route, array( + 'name' => 'new_name', + 'description' => 'new_desc' + ), array(), array( + "HTTP_ACCEPT" => "application/json") + ); $response = $this->client->getResponse(); @@ -177,13 +302,18 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $route = sprintf('/baskets/%s/update/', $basket->getId()); - $crawler = $this->client->request('GET', $route, array('name' => 'new_name', 'description' => 'new_desc')); + $crawler = $this->client->request( + 'GET', $route, array( + 'name' => 'new_name', + 'description' => 'new_desc') + ); $response = $this->client->getResponse(); $this->assertEquals(200, $response->getStatusCode()); - $this->assertEquals($crawler->filter("form[action='/prod/baskets/" . $basket->getId() . "/update/']")->count(), 1); + $filter = "form[action='/prod/baskets/" . $basket->getId() . "/update/']"; + $this->assertEquals($crawler->filter($filter)->count(), 1); $node = $crawler ->filter('input[name=name]'); @@ -231,7 +361,13 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $route = sprintf('/baskets/%s/archive/', $basket->getId()); - $crawler = $this->client->request('POST', $route, array('archive' => '1'), array(), array("HTTP_ACCEPT" => "application/json")); + $crawler = $this->client->request( + 'POST', $route, array( + 'archive' => '1' + ), array(), array( + "HTTP_ACCEPT" => "application/json" + ) + ); $response = $this->client->getResponse(); @@ -241,7 +377,13 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $this->assertTrue($basket->getArchived()); - $crawler = $this->client->request('POST', $route, array('archive' => '0'), array(), array("HTTP_ACCEPT" => "application/json")); + $crawler = $this->client->request( + 'POST', $route, array( + 'archive' => '0' + ), array(), array( + "HTTP_ACCEPT" => "application/json" + ) + ); $response = $this->client->getResponse(); @@ -253,24 +395,63 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract $this->assertEquals(200, $response->getStatusCode()); } - + public function testAddElementPost() { $basket = $this->insertOneBasket(); $route = sprintf('/baskets/%s/addElements/', $basket->getId()); - $records = array(self::$record_1->get_serialize_key(), self::$record_2->get_serialize_key()); - + $records = array( + self::$record_1->get_serialize_key(), + self::$record_2->get_serialize_key() + ); + $lst = implode(';', $records); - - $crawler = $this->client->request('POST', $route, array('lst' => $lst), array(), array("HTTP_ACCEPT" => "application/json")); + + $crawler = $this->client->request('POST', $route, array('lst' => $lst)); $response = $this->client->getResponse(); - + $this->assertEquals(302, $response->getStatusCode()); - - $basket->getElements(); + + $em = self::$core->getEntityManager(); + /* @var $em \Doctrine\ORM\EntityManager */ + $basket = $em->getRepository('Entities\Basket')->find($basket->getId()); + + $this->assertEquals(2, $basket->getElements()->count()); + } + + public function testAddElementPostJSON() + { + $basket = $this->insertOneBasket(); + + $route = sprintf('/baskets/%s/addElements/', $basket->getId()); + + $records = array( + self::$record_1->get_serialize_key(), + self::$record_2->get_serialize_key() + ); + + $lst = implode(';', $records); + + $crawler = $this->client->request( + 'POST', $route, array( + 'lst' => $lst + ), array(), array( + "HTTP_ACCEPT" => "application/json" + ) + ); + + $response = $this->client->getResponse(); + + $em = self::$core->getEntityManager(); + /* @var $em \Doctrine\ORM\EntityManager */ + $basket = $em->getRepository('Entities\Basket')->find($basket->getId()); + + $this->assertEquals(200, $response->getStatusCode()); + + $this->assertEquals(2, $basket->getElements()->count()); } /** @@ -279,7 +460,9 @@ class basketTest extends PhraseanetWebTestCaseAuthenticatedAbstract */ protected function insertOneBasket() { - $basketFixture = new MyFixture\Root(self::$user); + $basketFixture = new MyFixture\LoadOneBasket(); + + $basketFixture->setUser(self::$user); $this->loader->addFixture($basketFixture);