Merge branch '3.6' of github.com:alchemy-fr/Phraseanet into 3.6

This commit is contained in:
Nicolas Le Goff
2012-01-13 13:11:03 +01:00
14 changed files with 636 additions and 70 deletions

View File

@@ -42,19 +42,286 @@ class ControllerUsrListsTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
$this->client = $this->createClient();
}
public function tearDown()
{
parent::tearDown();
}
/**
* Default route test
*/
public function testRouteSlash()
{
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
$entry1 = $this->insertOneUsrListEntry(self::$user,self::$user);
$entry2 = $this->insertOneUsrListEntry(self::$user,self::$user_alt1);
$entry3 = $this->insertOneUsrListEntry(self::$user, self::$user);
$entry4 = $this->insertOneUsrListEntry(self::$user,self::$user_alt1);
$entry5 = $this->insertOneUsrListEntry(self::$user_alt1,self::$user_alt1);
$entry6 = $this->insertOneUsrListEntry(self::$user_alt1,self::$user_alt2);
$route = '/lists/list/all/';
$this->client->request('GET', $route);
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertEquals(4, count($datas['lists']));
}
protected function checkList($list, $owners = true, $users = true)
{
$this->assertInstanceOf('stdClass', $list);
$this->assertObjectHasAttribute('name', $list);
$this->assertObjectHasAttribute('created', $list);
$this->assertObjectHasAttribute('updated', $list);
$this->assertObjectHasAttribute('owners', $list);
$this->assertObjectHasAttribute('users', $list);
if($owners)
$this->assertTrue(count($list->owners) > 0);
foreach($list->owners as $owner)
{
$this->checkOwner($owner);
}
if($users)
$this->assertTrue(count($list->users) > 0);
foreach($list->users as $user)
{
$this->checkUser($user);
}
}
public function testPostList()
{
$route = '/lists/list/';
$this->client->request('POST', $route);
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertArrayHasKey('success', $datas);
$this->assertArrayHasKey('message', $datas);
$this->assertFalse($datas['success']);
$this->client->request('POST', $route, array('name'=>'New List'));
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertArrayHasKey('success', $datas);
$this->assertArrayHasKey('message', $datas);
$this->assertTrue($datas['success']);
}
public function testGetList()
{
$entry = $this->insertOneUsrListEntry(self::$user,self::$user_alt1);
$list_id = $entry->getList()->getId();
$route = '/lists/list/' . $list_id . '/';
$this->client->request('GET', $route);
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertTrue(is_array($datas));
$this->assertArrayhasKey('list', $datas);
$this->checkList($datas['list']);
}
public function testPostUpdate()
{
$entry = $this->insertOneUsrListEntry(self::$user,self::$user_alt1);
$list_id = $entry->getList()->getId();
$route = '/lists/list/' . $list_id . '/update/';
$this->client->request('POST', $route);
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertArrayHasKey('success', $datas);
$this->assertArrayHasKey('message', $datas);
$this->assertFalse($datas['success']);
$this->client->request('POST', $route, array('name'=>'New NAME'));
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertArrayHasKey('success', $datas);
$this->assertArrayHasKey('message', $datas);
$this->assertTrue($datas['success']);
}
public function testPostDelete()
{
$entry = $this->insertOneUsrListEntry(self::$user,self::$user_alt1);
$list_id = $entry->getList()->getId();
$route = '/lists/list/' . $list_id . '/delete/';
$this->client->request('POST', $route);
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertArrayHasKey('success', $datas);
$this->assertArrayHasKey('message', $datas);
$this->assertTrue($datas['success']);
$repository = self::$core->getEntityManager()->getRepository('Entities\UsrList');
$this->assertNull($repository->find($list_id));
}
public function testPostRemoveEntry()
{
$entry = $this->insertOneUsrListEntry(self::$user,self::$user_alt1);
$list_id = $entry->getList()->getId();
$entry_id = $entry->getId();
$route = '/lists/list/' . $list_id . '/remove/' . $entry_id . '/';
$this->client->request('POST', $route);
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertArrayHasKey('success', $datas);
$this->assertArrayHasKey('message', $datas);
$this->assertTrue($datas['success']);
$repository = self::$core->getEntityManager()->getRepository('Entities\UsrListEntry');
$this->assertNull($repository->find($entry_id));
}
public function testPostAddEntry()
{
$list = $this->insertOneUsrList(self::$user);
$this->assertEquals(0, $list->getEntries()->count());
$route = '/lists/list/' . $list->getId() . '/add/' . self::$user->get_id() . '/';
$this->client->request('POST', $route);
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertArrayHasKey('success', $datas);
$this->assertArrayHasKey('message', $datas);
$this->assertTrue($datas['success']);
$repository = self::$core->getEntityManager()->getRepository('Entities\UsrList');
$list = $repository->find($list->getId());
$this->assertEquals(1, $list->getEntries()->count());
}
public function testPostShareList()
{
$list = $this->insertOneUsrList(self::$user);
$this->assertEquals(1, $list->getOwners()->count());
$route = '/lists/list/' . $list->getId() . '/share/' . self::$user_alt1->get_id() . '/';
$this->client->request('POST', $route);
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent());
$this->assertArrayHasKey('success', $datas);
$this->assertArrayHasKey('message', $datas);
$this->assertTrue($datas['success']);
$repository = self::$core->getEntityManager()->getRepository('Entities\UsrList');
$list = $repository->find($list->getId());
$this->assertEquals(2, $list->getOwners()->count());
}
protected function checkOwner($owner)
{
$this->assertInstanceOf('stdClass', $owner);
$this->assertObjectHasAttribute('usr_id', $owner);
$this->assertObjectHasAttribute('display_name', $owner);
$this->assertObjectHasAttribute('position', $owner);
$this->assertObjectHasAttribute('job', $owner);
$this->assertObjectHasAttribute('company', $owner);
$this->assertObjectHasAttribute('email', $owner);
$this->assertObjectHasAttribute('role', $owner);
$this->assertTrue(ctype_digit($owner->role));
}
protected function checkUser($user)
{
$this->assertInstanceOf('stdClass', $user);
$this->assertObjectHasAttribute('usr_id', $user);
$this->assertObjectHasAttribute('display_name', $user);
$this->assertObjectHasAttribute('position', $user);
$this->assertObjectHasAttribute('job', $user);
$this->assertObjectHasAttribute('company', $user);
$this->assertObjectHasAttribute('email', $user);
}
}

View File

@@ -15,7 +15,6 @@ use Silex\WebTestCase;
use Symfony\Component\HttpKernel\Client;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\DataFixtures\Loader;
use PhraseaFixture\Basket as MyFixture;
/**
*
@@ -504,11 +503,11 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
*
* @param Doctrine\Common\DataFixtures\Loader $fixtureLoader
*/
public function insertFixtureInDatabase(Doctrine\Common\DataFixtures\Loader $fixtureLoader)
public function insertFixtureInDatabase(Doctrine\Common\DataFixtures\Loader $fixtureLoader, $append = true)
{
$purger = new Doctrine\Common\DataFixtures\Purger\ORMPurger();
$executor = new Doctrine\Common\DataFixtures\Executor\ORMExecutor(self::$core->getEntityManager(), $purger);
$executor->execute($fixtureLoader->getFixtures(), true);
$executor->execute($fixtureLoader->getFixtures(), $append);
}
/**
@@ -543,7 +542,7 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
{
try
{
$basketFixture = new MyFixture\LoadOneBasket();
$basketFixture = new PhraseaFixture\Basket\LoadOneBasket();
$basketFixture->setUser(self::$user);
@@ -559,6 +558,70 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
$this->fail('Fail load one Basket : ' . $e->getMessage());
}
}
protected function insertOneUsrList(\User_Adapter $user)
{
try
{
$loader = new Loader();
$UsrOwner = new PhraseaFixture\UsrLists\UsrListOwner();
$UsrOwner->setUser($user);
$loader->addFixture($UsrOwner);
$UsrList = new PhraseaFixture\UsrLists\UsrList();
$loader->addFixture($UsrList);
$this->insertFixtureInDatabase($loader);
return $UsrList->list;
}
catch (\Exception $e)
{
$this->fail('Fail load one UsrList : ' . $e->getMessage());
}
}
/**
*
* @param \Entities\UsrList $UsrList
* @return \Entities\UsrListEntry
*/
protected function insertOneUsrListEntry(\User_adapter $owner, \User_adapter $user)
{
try
{
$loader = new Loader();
$UsrOwner = new PhraseaFixture\UsrLists\UsrListOwner();
$UsrOwner->setUser($owner);
$loader->addFixture($UsrOwner);
$UsrList = new PhraseaFixture\UsrLists\UsrList();
$loader->addFixture($UsrList);
$UsrEntry = new PhraseaFixture\UsrLists\UsrListEntry();
// $UsrEntry->setList($UsrList);
$UsrEntry->setUser($user);
$loader->addFixture($UsrEntry);
$this->insertFixtureInDatabase($loader);
return $UsrEntry->entry;
}
catch (\Exception $e)
{
$this->fail('Fail load one UsrListEntry : ' . $e->getMessage());
}
}
/**
* Insert five baskets and set current authenticated user as owner
@@ -569,7 +632,7 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
{
try
{
$basketFixture = new MyFixture\LoadFiveBaskets();
$basketFixture = new PhraseaFixture\Basket\LoadFiveBaskets();
$basketFixture->setUser(self::$user);
@@ -671,7 +734,7 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
$em = self::$core->getEntityManager();
/* @var $em \Doctrine\ORM\EntityManager */
$basketFixture = new MyFixture\LoadOneBasketEnv();
$basketFixture = new PhraseaFixture\Basket\LoadOneBasketEnv();
$basketFixture->setUser(self::$user);