Add fixtures to sqlite db

This commit is contained in:
Romain Neutron
2013-12-10 10:19:48 +01:00
parent a74ad06ad1
commit 89dc1c5129
97 changed files with 1047 additions and 1908 deletions

View File

@@ -61,5 +61,7 @@ script:
bin/setup system:install --email=test@phraseanet.com --password=test --db-user=root --db-template=fr --db-password= --databox=db_test --appbox=ab_test --server-name=http://127.0.0.1 -y; bin/setup system:install --email=test@phraseanet.com --password=test --db-user=root --db-template=fr --db-password= --databox=db_test --appbox=ab_test --server-name=http://127.0.0.1 -y;
fi" fi"
- php hudson/cleanupSubdefs.php - php hudson/cleanupSubdefs.php
#sqlite db generation should occur once Phraseanet is up to date :
- bin/developer phraseanet:regenerate-sqlite
- grunt test - grunt test
- bin/phpunit - bin/phpunit

View File

@@ -639,7 +639,7 @@ class Application extends SilexApplication
})); }));
$twig->addFilter(new \Twig_SimpleFilter('thesaurus', function (\Twig_Environment $twig, $value) { $twig->addFilter(new \Twig_SimpleFilter('thesaurus', function (\Twig_Environment $twig, $value) {
if (!$value instanceof \ThesaurusValue) { if (!$value instanceof \ThesaurusValue) {
return twig_escape_filter($twig, str_replace(array('[[em]]', '[[/em]]'), array('<em>', '</em>'), $value)); return twig_escape_filter($twig, str_replace(['[[em]]', '[[/em]]'], ['<em>', '</em>'], $value));
} }
return "<a class=\"bounce\" onclick=\"bounce('" . $value->getField()->get_databox()->get_sbas_id() . "','" return "<a class=\"bounce\" onclick=\"bounce('" . $value->getField()->get_databox()->get_sbas_id() . "','"
@@ -647,9 +647,9 @@ class Application extends SilexApplication
. "', '" . "', '"
. str_replace("'", "\\'", $value->getField()->get_name()) . str_replace("'", "\\'", $value->getField()->get_name())
. "');return(false);\">" . "');return(false);\">"
. twig_escape_filter($twig, str_replace(array('[[em]]', '[[/em]]'), array('<em>', '</em>'), $value->getValue())) . twig_escape_filter($twig, str_replace(['[[em]]', '[[/em]]'], ['<em>', '</em>'], $value->getValue()))
. "</a>"; . "</a>";
}, array('needs_environment' => true, 'is_safe' => array('html')))); }, ['needs_environment' => true, 'is_safe' => ['html']]));
$twig->addFilter(new \Twig_SimpleFilter('escapeDoubleQuote', function ($value) { $twig->addFilter(new \Twig_SimpleFilter('escapeDoubleQuote', function ($value) {
return str_replace('"', '\"', $value); return str_replace('"', '\"', $value);

View File

@@ -11,12 +11,35 @@
namespace Alchemy\Phrasea\Command\Developer; namespace Alchemy\Phrasea\Command\Developer;
use Alchemy\Phrasea\Border\Manager;
use Alchemy\Phrasea\Command\Command; use Alchemy\Phrasea\Command\Command;
use Alchemy\Phrasea\Model\Entities\AuthFailure;
use Alchemy\Phrasea\Model\Entities\AggregateToken;
use Alchemy\Phrasea\Model\Entities\Basket;
use Alchemy\Phrasea\Model\Entities\BasketElement;
use Alchemy\Phrasea\Model\Entities\Feed;
use Alchemy\Phrasea\Model\Entities\FeedEntry;
use Alchemy\Phrasea\Model\Entities\FeedItem;
use Alchemy\Phrasea\Model\Entities\FeedPublisher;
use Alchemy\Phrasea\Model\Entities\FeedToken;
use Alchemy\Phrasea\Model\Entities\LazaretSession;
use Alchemy\Phrasea\Model\Entities\Session;
use Alchemy\Phrasea\Model\Entities\Task;
use Alchemy\Phrasea\Model\Entities\User;
use Alchemy\Phrasea\Model\Entities\ValidationData;
use Alchemy\Phrasea\Model\Entities\ValidationSession;
use Alchemy\Phrasea\Model\Entities\ValidationParticipant;
use Alchemy\Phrasea\Model\Entities\UsrListOwner;
use Alchemy\Phrasea\Model\Entities\UsrList;
use Alchemy\Phrasea\Model\Entities\UsrListEntry;
use Alchemy\Phrasea\Model\Entities\StoryWZ;
use Alchemy\Phrasea\Core\Provider\ORMServiceProvider; use Alchemy\Phrasea\Core\Provider\ORMServiceProvider;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\SchemaTool; use Doctrine\ORM\Tools\SchemaTool;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Filesystem;
use Alchemy\Phrasea\Border\File;
class RegenerateSqliteDb extends Command class RegenerateSqliteDb extends Command
{ {
@@ -33,6 +56,7 @@ class RegenerateSqliteDb extends Command
$source = __DIR__ . '/../../../../../tests/db-ref.sqlite'; $source = __DIR__ . '/../../../../../tests/db-ref.sqlite';
$target = __DIR__ . '/../../../../../tests/db-ref.sqlite.bkp'; $target = __DIR__ . '/../../../../../tests/db-ref.sqlite.bkp';
$json = __DIR__ . '/../../../../../tests/fixtures.json';
$renamed = false; $renamed = false;
if (is_file($source)) { if (is_file($source)) {
@@ -50,15 +74,534 @@ class RegenerateSqliteDb extends Command
$metadatas = $this->container['EM']->getMetadataFactory()->getAllMetadata(); $metadatas = $this->container['EM']->getMetadataFactory()->getAllMetadata();
$schemaTool = new SchemaTool($this->container['EM']); $schemaTool = new SchemaTool($this->container['EM']);
$schemaTool->createSchema($metadatas); $schemaTool->createSchema($metadatas);
$fixtures = [];
$DI = new \Pimple();
$this->generateUsers($this->container['EM'], $DI);
$this->generateCollection($DI);
$this->generateRecord($DI);
$this->insertOneStoryInWz($this->container['EM'], $DI);
$this->insertUsrLists($this->container['EM'], $DI);
$this->insertOnePrivateFeed($this->container['EM'], $DI);
$this->insertOnePublicFeed($this->container['EM'], $DI);
$this->insertOneExtraFeed($this->container['EM'], $DI);
$this->insertOneAggregateToken($this->container['EM'], $DI);
$this->insertLazaretFiles($this->container['EM'], $DI);
$this->insertAuthFailures($this->container['EM'], $DI);
$fixtures['user']['test_phpunit'] = $DI['user']->get_id();
$fixtures['user']['test_phpunit_not_admin'] = $DI['user_notAdmin']->get_id();
$fixtures['user']['test_phpunit_alt1'] = $DI['user_alt1']->get_id();
$fixtures['user']['test_phpunit_alt2'] = $DI['user_alt2']->get_id();
$fixtures['databox']['records'] = $DI['databox']->get_sbas_id();
$fixtures['collection']['coll'] = $DI['coll']->get_base_id();
$fixtures['collection']['coll_no_access'] = $DI['coll_no_access']->get_base_id();
$fixtures['collection']['coll_no_status'] = $DI['coll_no_status']->get_base_id();
$fixtures['record']['record_story_1'] = $DI['record_story_1']->get_record_id();
$fixtures['record']['record_story_2'] = $DI['record_story_2']->get_record_id();
$fixtures['record']['record_1'] = $DI['record_1']->get_record_id();
$fixtures['record']['record_2'] = $DI['record_2']->get_record_id();
$fixtures['record']['record_3'] = $DI['record_3']->get_record_id();
$fixtures['record']['record_4'] = $DI['record_4']->get_record_id();
$fixtures['record']['record_5'] = $DI['record_5']->get_record_id();
$fixtures['record']['record_6'] = $DI['record_6']->get_record_id();
$fixtures['record']['record_7'] = $DI['record_7']->get_record_id();
$fixtures['lazaret']['lazaret_1'] = $DI['lazaret_1']->getId();
$fixtures['user']['user_1'] = $DI['user_1']->getId();
$fixtures['user']['user_2'] = $DI['user_1']->getId();
$fixtures['user']['user_3'] = $DI['user_1']->getId();
$fixtures['user']['user_1_deleted'] = $DI['user_1_deleted']->getId();
$fixtures['user']['user_2_deleted'] = $DI['user_2_deleted']->getId();
$fixtures['user']['user_3_deleted'] = $DI['user_3_deleted']->getId();
$fixtures['user']['user_template'] = $DI['user_template']->getId();
$this->insertTwoTasks($this->container['EM']);
$this->insertTwoBasket($this->container['EM'], $DI);
$this->container['EM']->flush();
} catch (\Exception $e) { } catch (\Exception $e) {
$output->writeln("<error>".$e->getMessage()."</error>");
if ($renamed) { if ($renamed) {
if (is_file($source)) {
unlink($source);
}
$fs->rename($target, $source); $fs->rename($target, $source);
} }
throw $e; throw $e;
} }
$fs->remove($target); $fs->remove($target);
$fs->dumpFile($json, json_encode($fixtures, defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 0));
return 0; return 0;
} }
private function insertAuthFailures(EntityManager $em, \Pimple $DI)
{
$ip = '192.168.16.178';
$username = 'romainneutron';
for ($i = 0; $i < 10; $i++) {
$failure = new AuthFailure();
$failure->setIp($ip);
$failure->setUsername($username);
$failure->setLocked(false);
$failure->setCreated(new \DateTime('-3 months'));
$em->persist($failure);
}
for ($i = 0; $i < 2; $i++) {
$failure = new AuthFailure();
$failure->setIp($ip);
$failure->setUsername($username);
$failure->setLocked(false);
$failure->setCreated(new \DateTime('-1 months'));
$em->persist($failure);
}
}
private function insertLazaretFiles(EntityManager $em, \Pimple $DI)
{
$session = new LazaretSession();
$em->persist($session);
$em->flush();
$file = File::buildFromPathfile($this->container['root.path'] . '/tests/files/cestlafete.jpg', $DI['coll'], $this->container);
$callback = function ($element) use ($DI) {
$DI['lazaret_1'] = $element;
};
$this->container['border-manager']->process($session, $file, $callback, Manager::FORCE_LAZARET);
}
private function generateUsers(EntityManager $em, \Pimple $DI)
{
$DI['user'] = $this->getUser();
$DI['user_alt1'] = $this->getUserAlt1();
$DI['user_alt2'] = $this->getUserAlt2();
$DI['user_notAdmin'] = $this->getUserNotAdmin();
$user1 = $this->insertOneUser('user1');
$user2 = $this->insertOneUser('user2', 'user2@phraseanet.com');
$user3 = $this->insertOneUser('user3', null, true);
$user1Deleted = $this->insertOneUser('user1-deleted');
$user1Deleted->setDeleted(true);
$user2Deleted = $this->insertOneUser('user2-deleted', 'user2-deleted@phraseanet.com');
$user2Deleted->setDeleted(true);
$user3Deleted = $this->insertOneUser('user3-deleted', null, true);
$user3Deleted->setDeleted(true);
$template = $this->insertOneUser('template', null, true);
$template->setModelOf($user1);
$DI['user_1'] = $user1;
$DI['user_2'] = $user2;
$DI['user_3'] = $user3;
$DI['user_1_deleted'] = $user1Deleted;
$DI['user_2_deleted'] = $user2Deleted;
$DI['user_3_deleted'] = $user3Deleted;
$DI['user_template'] = $template;
$em->persist($user1);
$em->persist($user2);
$em->persist($user3);
$em->persist($user1Deleted);
$em->persist($user2Deleted);
$em->persist($user3Deleted);
$em->persist($template);
$em->flush();
}
protected function insertOneUser($login, $email = null, $admin = false)
{
return $this->container['manipulator.user']->createUser($login, uniqid('pass'), $email, $admin);
}
private function generateCollection(\Pimple $DI)
{
$coll = $collection_no_acces = $collection_no_acces_by_status = $db = null;
foreach ($this->container['phraseanet.appbox']->get_databoxes() as $databox) {
foreach ($databox->get_collections() as $collection) {
if ($collection_no_acces instanceof \collection && !$collection_no_acces_by_status) {
$collection_no_acces_by_status = $collection;
}
if ($coll instanceof \collection && !$collection_no_acces) {
$collection_no_acces = $collection;
}
if (!$coll) {
$coll = $collection;
}
if ($coll instanceof \collection
&& $collection_no_acces instanceof \collection
&& $collection_no_acces_by_status instanceof \collection) {
break 2;
}
}
}
$DI['databox'] = $coll->get_databox();
$DI['coll'] = $coll;
if (!$collection_no_acces instanceof collection) {
$collection_no_acces = \collection::create($this->container, $databox, $this->container['phraseanet.appbox'], 'BIBOO', $DI['user']);
}
$DI['coll_no_access'] = $collection_no_acces;
if (!$collection_no_acces_by_status instanceof collection) {
$collection_no_acces_by_status = \collection::create($this->container, $databox, $this->container['phraseanet.appbox'], 'BIBOONOACCESBYSTATUS', $DI['user']);
}
$DI['coll_no_status'] = $collection_no_acces_by_status;
}
private function generateRecord(\Pimple $DI)
{
foreach (range(1, 7) as $i) {
$file = new File($this->container, $this->container['mediavorus']->guess(__DIR__ . '/../../../../../tests/files/test001.jpg'), $DI['coll']);
$record = \record_adapter::createFromFile($file, $this->container);
$record->generate_subdefs($record->get_databox(), $this->container);
$DI['record_' . $i] = $record;
}
$media = $this->container['mediavorus']->guess($this->container['root.path'] . '/tests/files/cestlafete.jpg');
foreach (range(1, 2) as $i) {
$story = \record_adapter::createStory($this->container, $DI['coll']);
$story->substitute_subdef('preview', $media, $this->container);
$story->substitute_subdef('thumbnail', $media, $this->container);
$DI['record_story_' . $i] = $story;
}
}
private function insertTwoTasks(EntityManager $em)
{
$task1 = new Task();
$task1
->setName('task 1')
->setJobId('Null');
$task2 = new Task();
$task2
->setName('task 2')
->setJobId('Null');
$em->persist($task1);
$em->persist($task2);
}
private function getUser()
{
if (false === $usr_id = \User_Adapter::get_usr_id_from_login($this->container, 'test_phpunit')) {
return \User_Adapter::create($this->container, 'test_phpunit', \random::generatePassword(), 'noone@example.com', false);
}
return \User_Adapter::getInstance($usr_id, $this->container);
}
private function getUserAlt1()
{
if (false === $usr_id = \User_Adapter::get_usr_id_from_login($this->container, 'test_phpunit_alt1')) {
return \User_Adapter::create($this->container, 'test_phpunit_alt1', \random::generatePassword(), 'noonealt1@example.com', false);
}
return \User_Adapter::getInstance($usr_id, $this->container);
}
private function getUserAlt2()
{
if (false === $usr_id = \User_Adapter::get_usr_id_from_login($this->container, 'test_phpunit_alt2')) {
return \User_Adapter::create($this->container, 'test_phpunit_alt2', \random::generatePassword(), 'noonealt2@example.com', false);
}
return \User_Adapter::getInstance($usr_id, $this->container);
}
public function getUserNotAdmin()
{
if (false === $usr_id = \User_Adapter::get_usr_id_from_login($this->container, 'test_phpunit_not_admin')) {
return \User_Adapter::create($this->container, 'test_phpunit_not_admin', \random::generatePassword(), 'noone_not_admin@example.com', false);
}
return \User_Adapter::getInstance($usr_id, $this->container);
}
private function insertTwoBasket(EntityManager $em, \Pimple $DI)
{
$basket1 = new Basket();
$basket1->setOwner($this->getUser());
$basket1->setName('test');
$basket1->setDescription('description test');
$element = new BasketElement();
$element->setRecord($DI['record_1']);
$basket1->addElement($element);
$element->setBasket($basket1);
$basket2 = new Basket();
$basket2->setOwner($this->getUser());
$basket2->setName('test');
$basket2->setDescription('description test');
$basket3 = new Basket();
$basket3->setOwner($this->getUserAlt1());
$basket3->setName('test');
$basket3->setDescription('description test');
$em->persist($basket1);
$em->persist($element);
$em->persist($basket2);
$em->persist($basket3);
$basket4 = new Basket();
$basket4->setName('test');
$basket4->setDescription('description');
$basket4->setOwner($this->getUser());
foreach ([$DI['record_1'], $DI['record_2']] as $record) {
$basketElement = new BasketElement();
$basketElement->setRecord($record);
$basketElement->setBasket($basket4);
$basket4->addElement($basketElement);
$em->persist($basketElement);
}
$validationSession = new ValidationSession();
$validationSession->setBasket($basket4);
$basket4->setValidation($validationSession);
$expires = new \DateTime();
$expires->modify('+1 week');
$validationSession->setExpires($expires);
$validationSession->setInitiator($this->getUser());
foreach ([$this->getUser(), $DI['user_alt1'], $DI['user_alt2']] as $user) {
$validationParticipant = new ValidationParticipant();
$validationParticipant->setUser($user);
$validationParticipant->setSession($validationSession);
$validationParticipant->setCanAgree(true);
$validationSession->addParticipant($validationParticipant);
foreach ($basket4->getElements() as $basketElement) {
$data = new ValidationData();
$data->setParticipant($validationParticipant);
$validationParticipant->addData($data);
$data->setBasketElement($basketElement);
$em->persist($data);
}
$em->persist($validationParticipant);
}
$em->persist($basket4);
}
private function insertOneStoryInWz(EntityManager $em, \Pimple $DI)
{
$story = new StoryWZ();
$story->setRecord($DI['record_story_1']);
$story->setUser($DI['user']);
$em->persist($story);
}
private function insertUsrLists(EntityManager $em, \Pimple $DI)
{
$owner1 = new UsrListOwner();
$owner1->setRole(UsrListOwner::ROLE_ADMIN);
$owner1->setUser($DI['user']);
$owner2 = new UsrListOwner();
$owner2->setRole(UsrListOwner::ROLE_ADMIN);
$owner2->setUser($DI['user_alt1']);
$list1 = new UsrList();
$list1->setName('new list');
$list1->addOwner($owner1);
$owner1->setList($list1);
$entry1 = new UsrListEntry();
$entry1->setUser($DI['user']);
$entry1->setList($list1);
$list1->addEntrie($entry1);
$entry2 = new UsrListEntry();
$entry2->setUser($DI['user_alt1']);
$entry2->setList($list1);
$list1->addEntrie($entry2);
$list2 = new UsrList();
$list2->setName('new list');
$list2->addOwner($owner2);
$owner2->setList($list2);
$entry3 = new UsrListEntry();
$entry3->setUser($DI['user_alt1']);
$entry3->setList($list2);
$list2->addEntrie($entry3);
$entry4 = new UsrListEntry();
$entry4->setUser($DI['user_alt2']);
$entry4->setList($list2);
$list2->addEntrie($entry4);
$em->persist($owner1);
$em->persist($owner2);
$em->persist($list1);
$em->persist($list2);
$em->persist($entry1);
$em->persist($entry2);
$em->persist($entry3);
$em->persist($entry4);
}
private function insertOnePublicFeed(EntityManager $em, \Pimple $DI)
{
$feed = new Feed();
$publisher = new FeedPublisher();
$user = $DI['user'];
$publisher->setUsrId($user->get_id());
$publisher->setIsOwner(true);
$publisher->setFeed($feed);
$feed->addPublisher($publisher);
$feed->setTitle("Feed test, Public!");
$feed->setIsPublic(true);
$feed->setSubtitle("description");
$em->persist($feed);
$em->persist($publisher);
$this->insertOneFeedEntry($em, $DI, $feed, true);
$this->insertOneFeedToken($em, $DI, $feed);
}
private function insertOnePrivateFeed(EntityManager $em, \Pimple $DI)
{
$feed = new Feed();
$publisher = new FeedPublisher();
$user = $DI['user'];
$publisher->setUsrId($user->get_id());
$publisher->setIsOwner(true);
$publisher->setFeed($feed);
$feed->addPublisher($publisher);
$feed->setTitle("Feed test, YOLO!");
$feed->setIsPublic(false);
$feed->setSubtitle("description");
$em->persist($feed);
$em->persist($publisher);
$this->insertOneFeedEntry($em, $DI, $feed, false);
$this->insertOneFeedToken($em, $DI, $feed);
}
private function insertOneExtraFeed(EntityManager $em, \Pimple $DI)
{
$feed = new Feed();
$publisher = new FeedPublisher();
$user = $DI['user_alt1'];
$publisher->setUsrId($user->get_id());
$publisher->setIsOwner(true);
$publisher->setFeed($feed);
$feed->addPublisher($publisher);
$feed->setTitle("Feed test, Private for user_alt1!");
$feed->setIsPublic(false);
$feed->setSubtitle("description");
$em->persist($feed);
$em->persist($publisher);
$this->insertOneFeedEntry($em, $DI, $feed, true);
$this->insertOneFeedToken($em, $DI, $feed);
}
private function insertOneFeedEntry(EntityManager $em, \Pimple $DI, Feed $feed, $public)
{
$entry = new FeedEntry();
$entry->setFeed($feed);
$entry->setTitle("test");
$entry->setSubtitle("description");
$entry->setAuthorName('user');
$entry->setAuthorEmail('user@email.com');
$publisher = $feed->getPublisher($DI['user']);
if ($publisher !== null) {
$entry->setPublisher($publisher);
}
$feed->addEntry($entry);
$em->persist($entry);
$em->persist($feed);
$this->insertOneFeedItem($em, $DI, $entry, $public);
}
private function insertOneFeedToken(EntityManager $em, \Pimple $DI, Feed $feed)
{
$token = new FeedToken();
$token->setValue($this->container['tokens']->generatePassword(12));
$token->setFeed($feed);
$token->setUsrId($DI['user']->get_id());
$feed->addToken($token);
$em->persist($token);
$em->persist($feed);
}
private function insertOneAggregateToken(EntityManager $em, \Pimple $DI)
{
$user = $DI['user'];
$token = new AggregateToken();
$token->setValue($this->container['tokens']->generatePassword(12));
$token->setUsrId($user->get_id());
$em->persist($token);
}
private function insertOneFeedItem(EntityManager $em, \Pimple $DI, FeedEntry $entry, $public)
{
if ($public) {
$start = 5;
} else {
$start = 1;
}
$limit = ($start + 3);
for ($start; $start < $limit; $start++) {
$item = new FeedItem();
$item->setEntry($entry);
$actual = $DI['record_'.($start)];
$item->setRecordId($actual->get_record_id());
$item->setSbasId($actual->get_sbas_id());
$item->setEntry($entry);
$entry->addItem($item);
$em->persist($item);
}
$em->persist($entry);
}
} }

View File

@@ -40,7 +40,7 @@ class RSSFeeds implements ControllerProviderInterface
$page = (int) $request->query->get('page'); $page = (int) $request->query->get('page');
$page = $page < 1 ? 1 : $page; $page = $page < 1 ? 1 : $page;
return $app['feed.formatter-strategy']($format)->createResponse($feed, $page); return $app['feed.formatter-strategy']($format)->createResponse($app, $feed, $page);
}) })
->bind('feed_public') ->bind('feed_public')
->assert('id', '\d+') ->assert('id', '\d+')
@@ -55,7 +55,7 @@ class RSSFeeds implements ControllerProviderInterface
$page = $page < 1 ? 1 : $page; $page = $page < 1 ? 1 : $page;
return $app['feed.formatter-strategy']($format) return $app['feed.formatter-strategy']($format)
->createResponse($token->getFeed(), $page, \User_Adapter::getInstance($token->getUsrId(), $app)); ->createResponse($app, $token->getFeed(), $page, \User_Adapter::getInstance($token->getUsrId(), $app));
}) })
->bind('feed_user') ->bind('feed_user')
->assert('id', '\d+') ->assert('id', '\d+')
@@ -63,7 +63,6 @@ class RSSFeeds implements ControllerProviderInterface
$controllers->get('/userfeed/aggregated/{token}/{format}/', function (Application $app, $token, $format) { $controllers->get('/userfeed/aggregated/{token}/{format}/', function (Application $app, $token, $format) {
$token = $app['EM']->getRepository('Alchemy\Phrasea\Model\Entities\AggregateToken')->findOneBy(["value" => $token]); $token = $app['EM']->getRepository('Alchemy\Phrasea\Model\Entities\AggregateToken')->findOneBy(["value" => $token]);
$user = \User_Adapter::getInstance($token->getUsrId(), $app); $user = \User_Adapter::getInstance($token->getUsrId(), $app);
$feeds = $app['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser($app['acl']->get($user)); $feeds = $app['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser($app['acl']->get($user));
@@ -75,7 +74,7 @@ class RSSFeeds implements ControllerProviderInterface
$page = (int) $request->query->get('page'); $page = (int) $request->query->get('page');
$page = $page < 1 ? 1 : $page; $page = $page < 1 ? 1 : $page;
return $app['feed.formatter-strategy']($format)->createResponse($aggregate, $page, $user); return $app['feed.formatter-strategy']($format)->createResponse($app, $aggregate, $page, $user);
}) })
->bind('feed_user_aggregated') ->bind('feed_user_aggregated')
->assert('format', '(rss|atom)'); ->assert('format', '(rss|atom)');
@@ -87,7 +86,7 @@ class RSSFeeds implements ControllerProviderInterface
$page = (int) $request->query->get('page'); $page = (int) $request->query->get('page');
$page = $page < 1 ? 1 : $page; $page = $page < 1 ? 1 : $page;
return $app['feed.formatter-strategy']($format)->createResponse($feed, $page); return $app['feed.formatter-strategy']($format)->createResponse($app, $feed, $page);
}) })
->bind('feed_public_aggregated') ->bind('feed_public_aggregated')
->assert('format', '(rss|atom)'); ->assert('format', '(rss|atom)');
@@ -99,7 +98,7 @@ class RSSFeeds implements ControllerProviderInterface
$page = (int) $request->query->get('page'); $page = (int) $request->query->get('page');
$page = $page < 1 ? 1 : $page; $page = $page < 1 ? 1 : $page;
return $app['feed.formatter-strategy']('cooliris')->createResponse($feed, $page, null, 'Phraseanet', $app); return $app['feed.formatter-strategy']('cooliris')->createResponse($app, $feed, $page, null, 'Phraseanet', $app);
}) })
->bind('feed_public_cooliris'); ->bind('feed_public_cooliris');

View File

@@ -12,6 +12,7 @@
namespace Alchemy\Phrasea\Feed\Formatter; namespace Alchemy\Phrasea\Feed\Formatter;
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Model\Entities\FeedEntry;
use Alchemy\Phrasea\Feed\FeedInterface; use Alchemy\Phrasea\Feed\FeedInterface;
use Alchemy\Phrasea\Feed\Link\FeedLink; use Alchemy\Phrasea\Feed\Link\FeedLink;
use Alchemy\Phrasea\Feed\Link\LinkGeneratorCollection; use Alchemy\Phrasea\Feed\Link\LinkGeneratorCollection;
@@ -33,7 +34,7 @@ class AtomFormatter extends FeedFormatterAbstract implements FeedFormatterInterf
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function createResponse(FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet', Application $app = null) public function createResponse(Application $app, FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet')
{ {
$content = $this->format($feed, $page, $user, $generator, $app); $content = $this->format($feed, $page, $user, $generator, $app);
$response = new Response($content, 200, ['Content-Type' => 'application/atom+xml']); $response = new Response($content, 200, ['Content-Type' => 'application/atom+xml']);
@@ -125,13 +126,13 @@ class AtomFormatter extends FeedFormatterAbstract implements FeedFormatterInterf
} }
foreach ($feed->getEntries() as $item) { foreach ($feed->getEntries() as $item) {
$this->addItem($document, $root, $item, $feedlink); $this->addItem($app, $document, $root, $item, $feedlink);
} }
return $document->saveXML(); return $document->saveXML();
} }
protected function addItem(DOMDocument $document, DOMNode $feed, FeedEntry $entry, FeedLink $link) protected function addItem(Application $app, \DOMDocument $document, \DOMNode $feed, FeedEntry $entry, FeedLink $link)
{ {
$entry_node = $this->addTag($document, $feed, 'entry'); $entry_node = $this->addTag($document, $feed, 'entry');
@@ -160,7 +161,7 @@ class AtomFormatter extends FeedFormatterAbstract implements FeedFormatterInterf
$this->addTag($document, $entry_node, 'content', $entry->getSubtitle()); $this->addTag($document, $entry_node, 'content', $entry->getSubtitle());
foreach ($entry->getItems() as $content) { foreach ($entry->getItems() as $content) {
$this->addContent($document, $entry_node, $entry, $content); $this->addContent($app, $document, $entry_node, $content);
} }
return $entry_node; return $entry_node;

View File

@@ -13,6 +13,8 @@ namespace Alchemy\Phrasea\Feed\Formatter;
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Feed\FeedInterface; use Alchemy\Phrasea\Feed\FeedInterface;
use Alchemy\Phrasea\Model\Entities\FeedEntry;
use Alchemy\Phrasea\Model\Entities\FeedItem;
use Alchemy\Phrasea\Feed\Link\LinkGeneratorCollection; use Alchemy\Phrasea\Feed\Link\LinkGeneratorCollection;
use Alchemy\Phrasea\Feed\RSS\FeedRSSImage; use Alchemy\Phrasea\Feed\RSS\FeedRSSImage;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
@@ -34,7 +36,7 @@ class CoolirisFormatter extends FeedFormatterAbstract implements FeedFormatterIn
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function createResponse(FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet', Application $app = null) public function createResponse(Application $app, FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet')
{ {
$content = $this->format($feed, $page, $user, $generator, $app); $content = $this->format($feed, $page, $user, $generator, $app);
$response = new Response($content, 200, ['Content-Type' => 'application/rss+xml']); $response = new Response($content, 200, ['Content-Type' => 'application/rss+xml']);
@@ -174,8 +176,8 @@ class CoolirisFormatter extends FeedFormatterAbstract implements FeedFormatterIn
protected function addItem(Application $app, \DOMDocument $document, \DOMNode $feed, FeedEntry $entry) protected function addItem(Application $app, \DOMDocument $document, \DOMNode $feed, FeedEntry $entry)
{ {
foreach ($entry->get_content() as $content) { foreach ($entry->getItems() as $content) {
$this->addContent($app, $document, $feed, $entry, $content); $this->addContent($app, $document, $feed, $content);
} }
} }
@@ -201,7 +203,7 @@ class CoolirisFormatter extends FeedFormatterAbstract implements FeedFormatterIn
$caption = $content->getRecord($app)->get_caption(); $caption = $content->getRecord($app)->get_caption();
$title_field = $caption->get_dc_field(databox_Field_DCESAbstract::Title); $title_field = $caption->get_dc_field(\databox_Field_DCESAbstract::Title);
if (null !== $title_field) { if (null !== $title_field) {
$str_title = $title_field->get_serialized_values(' '); $str_title = $title_field->get_serialized_values(' ');
} else { } else {
@@ -211,7 +213,7 @@ class CoolirisFormatter extends FeedFormatterAbstract implements FeedFormatterIn
//attach tile node to item node //attach tile node to item node
$title = $this->addTag($document, $item, 'title', $str_title); $title = $this->addTag($document, $item, 'title', $str_title);
$desc_field = $caption->get_dc_field(databox_Field_DCESAbstract::Description); $desc_field = $caption->get_dc_field(\databox_Field_DCESAbstract::Description);
if (null !== $desc_field) { if (null !== $desc_field) {
$str_desc = $desc_field->get_serialized_values(' '); $str_desc = $desc_field->get_serialized_values(' ');
} else { } else {

View File

@@ -12,6 +12,7 @@
namespace Alchemy\Phrasea\Feed\Formatter; namespace Alchemy\Phrasea\Feed\Formatter;
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Model\Entities\FeedItem;
abstract class FeedFormatterAbstract abstract class FeedFormatterAbstract
{ {
@@ -65,21 +66,21 @@ abstract class FeedFormatterAbstract
$caption = $content->getRecord($app)->get_caption(); $caption = $content->getRecord($app)->get_caption();
$title_field = $caption->get_dc_field(databox_Field_DCESAbstract::Title); $title_field = $caption->get_dc_field(\databox_Field_DCESAbstract::Title);
if (null !== $title_field) { if (null !== $title_field) {
$str_title = $title_field->get_serialized_values(' '); $str_title = $title_field->get_serialized_values(' ');
$title = $this->addTag($document, $group, 'media:title', $str_title); $title = $this->addTag($document, $group, 'media:title', $str_title);
$title->setAttribute('type', 'plain'); $title->setAttribute('type', 'plain');
} }
$desc_field = $caption->get_dc_field(databox_Field_DCESAbstract::Description); $desc_field = $caption->get_dc_field(\databox_Field_DCESAbstract::Description);
if (null !== $desc_field) { if (null !== $desc_field) {
$str_desc = $desc_field->get_serialized_values(' '); $str_desc = $desc_field->get_serialized_values(' ');
$desc = $this->addTag($document, $group, 'media:description', $str_desc); $desc = $this->addTag($document, $group, 'media:description', $str_desc);
$desc->setAttribute('type', 'plain'); $desc->setAttribute('type', 'plain');
} }
$contrib_field = $caption->get_dc_field(databox_Field_DCESAbstract::Contributor); $contrib_field = $caption->get_dc_field(\databox_Field_DCESAbstract::Contributor);
if (null !== $contrib_field) { if (null !== $contrib_field) {
$str_contrib = $contrib_field->get_serialized_values(' '); $str_contrib = $contrib_field->get_serialized_values(' ');
$contrib = $this->addTag($document, $group, 'media:credit', $str_contrib); $contrib = $this->addTag($document, $group, 'media:credit', $str_contrib);
@@ -87,7 +88,7 @@ abstract class FeedFormatterAbstract
$contrib->setAttribute('scheme', 'urn:ebu'); $contrib->setAttribute('scheme', 'urn:ebu');
} }
$director_field = $caption->get_dc_field(databox_Field_DCESAbstract::Creator); $director_field = $caption->get_dc_field(\databox_Field_DCESAbstract::Creator);
if (null !== $director_field) { if (null !== $director_field) {
$str_director = $director_field->get_serialized_values(' '); $str_director = $director_field->get_serialized_values(' ');
$director = $this->addTag($document, $group, 'media:credit', $str_director); $director = $this->addTag($document, $group, 'media:credit', $str_director);
@@ -95,7 +96,7 @@ abstract class FeedFormatterAbstract
$director->setAttribute('scheme', 'urn:ebu'); $director->setAttribute('scheme', 'urn:ebu');
} }
$publisher_field = $caption->get_dc_field(databox_Field_DCESAbstract::Publisher); $publisher_field = $caption->get_dc_field(\databox_Field_DCESAbstract::Publisher);
if (null !== $publisher_field) { if (null !== $publisher_field) {
$str_publisher = $publisher_field->get_serialized_values(' '); $str_publisher = $publisher_field->get_serialized_values(' ');
$publisher = $this->addTag($document, $group, 'media:credit', $str_publisher); $publisher = $this->addTag($document, $group, 'media:credit', $str_publisher);
@@ -103,19 +104,19 @@ abstract class FeedFormatterAbstract
$publisher->setAttribute('scheme', 'urn:ebu'); $publisher->setAttribute('scheme', 'urn:ebu');
} }
$rights_field = $caption->get_dc_field(databox_Field_DCESAbstract::Rights); $rights_field = $caption->get_dc_field(\databox_Field_DCESAbstract::Rights);
if (null !== $rights_field) { if (null !== $rights_field) {
$str_rights = $rights_field->get_serialized_values(' '); $str_rights = $rights_field->get_serialized_values(' ');
$rights = $this->addTag($document, $group, 'media:copyright', $str_rights); $rights = $this->addTag($document, $group, 'media:copyright', $str_rights);
} }
$keyword_field = $caption->get_dc_field(databox_Field_DCESAbstract::Subject); $keyword_field = $caption->get_dc_field(\databox_Field_DCESAbstract::Subject);
if (null !== $keyword_field) { if (null !== $keyword_field) {
$str_keywords = $keyword_field->get_serialized_values(', '); $str_keywords = $keyword_field->get_serialized_values(', ');
$keywords = $this->addTag($document, $group, 'media:keywords', $str_keywords); $keywords = $this->addTag($document, $group, 'media:keywords', $str_keywords);
} }
$duration = $content->get_record()->get_duration(); $duration = $content->getRecord($app)->get_duration();
if (null !== $preview_permalink) { if (null !== $preview_permalink) {
$preview = $this->addTag($document, $group, 'media:content'); $preview = $this->addTag($document, $group, 'media:content');

View File

@@ -27,7 +27,7 @@ interface FeedFormatterInterface
* *
* @return string * @return string
*/ */
public function format(FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet', Application $app = null); public function format(FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet', Application $app);
/** /**
* Returns an HTTP Response containing a string representation of the feed. * Returns an HTTP Response containing a string representation of the feed.
@@ -40,5 +40,5 @@ interface FeedFormatterInterface
* *
* @return string * @return string
*/ */
public function createResponse(FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet', Application $app = null); public function createResponse(Application $app, FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet');
} }

View File

@@ -17,6 +17,8 @@ use Alchemy\Phrasea\Feed\Link\FeedLink;
use Alchemy\Phrasea\Feed\Link\LinkGeneratorCollection; use Alchemy\Phrasea\Feed\Link\LinkGeneratorCollection;
use Alchemy\Phrasea\Feed\RSS\FeedRSSImage; use Alchemy\Phrasea\Feed\RSS\FeedRSSImage;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Alchemy\Phrasea\Model\Entities\FeedEntry;
use Alchemy\Phrasea\Feed\Link\FeedLinkGenerator;
class RssFormatter extends FeedFormatterAbstract implements FeedFormatterInterface class RssFormatter extends FeedFormatterAbstract implements FeedFormatterInterface
{ {
@@ -35,7 +37,7 @@ class RssFormatter extends FeedFormatterAbstract implements FeedFormatterInterfa
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function createResponse(FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet', Application $app = null) public function createResponse(Application $app, FeedInterface $feed, $page, \User_Adapter $user = null, $generator = 'Phraseanet')
{ {
$content = $this->format($feed, $page, $user, $generator, $app); $content = $this->format($feed, $page, $user, $generator, $app);
$response = new Response($content, 200, ['Content-Type' => 'application/rss+xml']); $response = new Response($content, 200, ['Content-Type' => 'application/rss+xml']);
@@ -165,17 +167,22 @@ class RssFormatter extends FeedFormatterAbstract implements FeedFormatterInterfa
} }
foreach ($feed->getEntries() as $item) { foreach ($feed->getEntries() as $item) {
$this->addItem($doc, $channel, $item); $this->addItem($app, $doc, $channel, $item);
} }
return $doc->saveXML(); return $doc->saveXML();
} }
protected function addItem(\DOMDocument $document, \DOMNode $node, FeedEntry $entry) protected function addItem(Application $app, \DOMDocument $document, \DOMNode $node, FeedEntry $entry)
{ {
$item = $this->addTag($document, $node, 'item'); $item = $this->addTag($document, $node, 'item');
$feed = $entry->getFeed();
$link = $entry->getLink(); if ($feed->isPublic()) {
$link = $app['feed.link-generator-collection']->generatePublic($feed, FeedLinkGenerator::FORMAT_RSS);
} else {
$link = $app['feed.link-generator-collection']->generate($feed, $app['authentication']->getUser(), FeedLinkGenerator::FORMAT_RSS);
}
$this->addTag($document, $item, 'title', $entry->getTitle()); $this->addTag($document, $item, 'title', $entry->getTitle());
$this->addTag($document, $item, 'description', $entry->getSubtitle()); $this->addTag($document, $item, 'description', $entry->getSubtitle());
@@ -202,7 +209,7 @@ class RssFormatter extends FeedFormatterAbstract implements FeedFormatterInterfa
* *
*/ */
foreach ($entry->getItems() as $content) { foreach ($entry->getItems() as $content) {
$this->addContent($document, $item, $entry, $content); $this->addContent($app, $document, $item, $content);
} }
return $item; return $item;

View File

@@ -290,6 +290,6 @@ class ValidationSession
} }
} }
throw new NotFoundHttpException('Particpant not found' . $user->get_email()); throw new NotFoundHttpException('Participant not found ' . $user->get_email());
} }
} }

View File

@@ -1035,7 +1035,9 @@ class API_V1_adapter extends API_V1_Abstract
$mimes = $request->get('mimes', []); $mimes = $request->get('mimes', []);
foreach ($record->get_embedable_medias($devices, $mimes) as $name => $media) { foreach ($record->get_embedable_medias($devices, $mimes) as $name => $media) {
$ret[] = $this->list_embedable_media($media, $this->app['phraseanet.registry']); if (null !== $embed = $this->list_embedable_media($media, $this->app['phraseanet.registry'])) {
$ret[] = $embed;
}
} }
$result->set_datas(["embed" => $ret]); $result->set_datas(["embed" => $ret]);
@@ -1067,7 +1069,9 @@ class API_V1_adapter extends API_V1_Abstract
$mimes = $request->get('mimes', []); $mimes = $request->get('mimes', []);
foreach ($record->get_embedable_medias($devices, $mimes) as $name => $media) { foreach ($record->get_embedable_medias($devices, $mimes) as $name => $media) {
$ret[] = $this->list_embedable_media($media, $this->app['phraseanet.registry']); if (null !== $embed = $this->list_embedable_media($media, $this->app['phraseanet.registry'])) {
$ret[] = $embed;
}
} }
$result->set_datas(["embed" => $ret]); $result->set_datas(["embed" => $ret]);

View File

@@ -347,7 +347,7 @@ class caption_Field_Value implements cache_cacheableInterface
} }
// ---------------- new code ---------------------- // ---------------- new code ----------------------
$cleanvalue = str_replace(array("[[em]]", "[[/em]]", "'"), array("", "", "&apos;"), $value); $cleanvalue = str_replace(["[[em]]", "[[/em]]", "'"], ["", "", "&apos;"], $value);
list($term_noacc, $context_noacc) = $this->splitTermAndContext($cleanvalue); list($term_noacc, $context_noacc) = $this->splitTermAndContext($cleanvalue);
$term_noacc = $this->app['unicode']->remove_indexer_chars($term_noacc); $term_noacc = $this->app['unicode']->remove_indexer_chars($term_noacc);
@@ -379,7 +379,7 @@ class caption_Field_Value implements cache_cacheableInterface
} }
} }
if ($bestnode) { if ($bestnode) {
list($term, $context) = $this->splitTermAndContext(str_replace(array("[[em]]", "[[/em]]"), array("", ""), $value)); list($term, $context) = $this->splitTermAndContext(str_replace(["[[em]]", "[[/em]]"], ["", ""], $value));
$qjs = $term . ($context ? '['.$context.']' : ''); $qjs = $term . ($context ? '['.$context.']' : '');
$value = new ThesaurusValue($bestnode->getAttribute('v'), $this->databox_field, $qjs); $value = new ThesaurusValue($bestnode->getAttribute('v'), $this->databox_field, $qjs);

View File

@@ -562,7 +562,7 @@ class collection implements cache_cacheableInterface
$sql = "SELECT GREATEST(0, MAX(ord)) + 1 AS ord FROM bas WHERE sbas_id = :sbas_id"; $sql = "SELECT GREATEST(0, MAX(ord)) + 1 AS ord FROM bas WHERE sbas_id = :sbas_id";
$stmt = $conn->prepare($sql); $stmt = $conn->prepare($sql);
$stmt->execute(array(':sbas_id' => $sbas_id)); $stmt->execute([':sbas_id' => $sbas_id]);
$ord = $stmt->fetch(\PDO::FETCH_ASSOC); $ord = $stmt->fetch(\PDO::FETCH_ASSOC);
$stmt->closeCursor(); $stmt->closeCursor();

View File

@@ -79,9 +79,9 @@
{{ app['date-formatter'].getDate(feed.getCreatedOn()) }} {{ app['date-formatter'].getDate(feed.getCreatedOn()) }}
</td> </td>
<td valign="center" align="center"> <td valign="center" align="center">
{% if feed.getCollection() != null %} {% if feed.getCollection(app) != null %}
{{ feed.getCollection().get_databox().get_label(app['locale']) }} / {{ feed.getCollection(app).get_databox().get_label(app['locale']) }} /
{{ feed.getCollection().get_name() }} {{ feed.getCollection(app).get_name() }}
{% endif %} {% endif %}
</td> </td>
<td valign="center" align="center"> <td valign="center" align="center">

View File

@@ -10,9 +10,9 @@
{% block header_rss %} {% block header_rss %}
{% for feed in feeds %} {% for feed in feeds %}
{% set link = app['feed.user-link-generator'].generatePublic(feed, 'rss') %} {% set link = app['feed.user-link-generator'].generatePublic(feed, 'rss') %}
<link rel="alternate" type="{{ link.get_mimetype() }}" title="{{ link.get_title() }}" href="{{ link.get_href() }}" /> <link rel="alternate" type="{{ link.getMimetype() }}" title="{{ link.getTitle() }}" href="{{ link.getURI() }}" />
{% set link = app['feed.user-link-generator'].generatePublic(feed, 'atom') %} {% set link = app['feed.user-link-generator'].generatePublic(feed, 'atom') %}
<link rel="alternate" type="{{ link.get_mimetype() }}" title="{{ link.get_title() }}" href="{{ link.get_href() }}" /> <link rel="alternate" type="{{ link.getMimetype() }}" title="{{ link.getTitle() }}" href="{{ link.getURI() }}" />
{% endfor %} {% endfor %}
{% endblock %} {% endblock %}

View File

@@ -8,7 +8,7 @@ class BasketACLTest extends \PhraseanetTestCase
{ {
public function testOwnerIsOwner() public function testOwnerIsOwner()
{ {
$basket = $this->insertOneBasketEnv(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$acl = new BasketACL(); $acl = new BasketACL();
$this->assertTrue($acl->isOwner($basket, self::$DI['user'])); $this->assertTrue($acl->isOwner($basket, self::$DI['user']));
@@ -16,7 +16,7 @@ class BasketACLTest extends \PhraseanetTestCase
public function testParticipantIsNotAnOwner() public function testParticipantIsNotAnOwner()
{ {
$basket = $this->insertOneBasketEnv(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$acl = new BasketACL(); $acl = new BasketACL();
$this->assertFalse($acl->isOwner($basket, self::$DI['user_alt1'])); $this->assertFalse($acl->isOwner($basket, self::$DI['user_alt1']));
@@ -24,15 +24,14 @@ class BasketACLTest extends \PhraseanetTestCase
public function testUserIsNotTheOwner() public function testUserIsNotTheOwner()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$acl = new BasketACL(); $acl = new BasketACL();
$this->assertFalse($acl->isOwner($basket, self::$DI['user_alt1'])); $this->assertFalse($acl->isOwner($basket, self::$DI['user_alt1']));
} }
public function testOwnerHasAccessInValidationEnv() public function testOwnerHasAccessInValidationEnv()
{ {
$basket = $this->insertOneBasketEnv(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$acl = new BasketACL(); $acl = new BasketACL();
$this->assertTrue($acl->hasAccess($basket, self::$DI['user'])); $this->assertTrue($acl->hasAccess($basket, self::$DI['user']));
@@ -40,15 +39,14 @@ class BasketACLTest extends \PhraseanetTestCase
public function testOwnerHasAccess() public function testOwnerHasAccess()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$acl = new BasketACL(); $acl = new BasketACL();
$this->assertTrue($acl->hasAccess($basket, self::$DI['user'])); $this->assertTrue($acl->hasAccess($basket, self::$DI['user']));
} }
public function testParticipantHasAccess() public function testParticipantHasAccess()
{ {
$basket = $this->insertOneBasketEnv(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$acl = new BasketACL(); $acl = new BasketACL();
$this->assertTrue($acl->hasAccess($basket, self::$DI['user_alt1'])); $this->assertTrue($acl->hasAccess($basket, self::$DI['user_alt1']));
@@ -56,8 +54,7 @@ class BasketACLTest extends \PhraseanetTestCase
public function testUserHasNotAccess() public function testUserHasNotAccess()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$acl = new BasketACL(); $acl = new BasketACL();
$this->assertFalse($acl->hasAccess($basket, self::$DI['user_alt1'])); $this->assertFalse($acl->hasAccess($basket, self::$DI['user_alt1']));
} }

View File

@@ -4,7 +4,6 @@ namespace Alchemy\Tests\Phrasea\Application;
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Border\File; use Alchemy\Phrasea\Border\File;
use Alchemy\Phrasea\Border\Manager;
use Alchemy\Phrasea\Core\PhraseaEvents; use Alchemy\Phrasea\Core\PhraseaEvents;
use Alchemy\Phrasea\Authentication\Context; use Alchemy\Phrasea\Authentication\Context;
use Alchemy\Phrasea\Model\Entities\Task; use Alchemy\Phrasea\Model\Entities\Task;
@@ -358,7 +357,6 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
*/ */
public function testGetMonitorTaskById() public function testGetMonitorTaskById()
{ {
$this->insertTwoTasks();
$tasks = self::$DI['app']['manipulator.task']->getRepository()->findAll(); $tasks = self::$DI['app']['manipulator.task']->getRepository()->findAll();
if (null === self::$adminToken) { if (null === self::$adminToken) {
@@ -390,7 +388,6 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
*/ */
public function testPostMonitorTaskById() public function testPostMonitorTaskById()
{ {
$this->insertTwoTasks();
$tasks = self::$DI['app']['manipulator.task']->getRepository()->findAll(); $tasks = self::$DI['app']['manipulator.task']->getRepository()->findAll();
if (null === self::$adminToken) { if (null === self::$adminToken) {
@@ -445,7 +442,6 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
$this->markTestSkipped('there is no user with admin rights'); $this->markTestSkipped('there is no user with admin rights');
} }
$this->insertTwoTasks();
$tasks = self::$DI['app']['manipulator.task']->getRepository()->findAll(); $tasks = self::$DI['app']['manipulator.task']->getRepository()->findAll();
if (!count($tasks)) { if (!count($tasks)) {
@@ -476,7 +472,6 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
*/ */
public function testPostMonitorStopTask() public function testPostMonitorStopTask()
{ {
$this->insertTwoTasks();
$tasks = self::$DI['app']['manipulator.task']->getRepository()->findAll(); $tasks = self::$DI['app']['manipulator.task']->getRepository()->findAll();
if (null === self::$adminToken) { if (null === self::$adminToken) {
@@ -567,12 +562,8 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
public function testStoryRoute() public function testStoryRoute()
{ {
$this->setToken(self::$token); $this->setToken(self::$token);
self::$DI['app']['session']->set('usr_id', self::$DI['user']->get_id()); self::$DI['app']['session']->set('usr_id', self::$DI['user']->get_id());
self::$DI['record_story_1']->appendChild(self::$DI['record_1']);
if (!self::$DI['record_story_1']->hasChild(self::$DI['record_1'])) {
self::$DI['record_story_1']->appendChild(self::$DI['record_1']);
}
self::$DI['app']['session']->remove('usr_id'); self::$DI['app']['session']->remove('usr_id');
@@ -593,6 +584,8 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
$route = '/api/v1/stories/kjslkz84spm/sfsd5qfsd5/'; $route = '/api/v1/stories/kjslkz84spm/sfsd5qfsd5/';
$this->evaluateBadRequestRoute($route, ['GET']); $this->evaluateBadRequestRoute($route, ['GET']);
$this->evaluateMethodNotAllowedRoute($route, ['POST', 'PUT', 'DELETE']); $this->evaluateMethodNotAllowedRoute($route, ['POST', 'PUT', 'DELETE']);
self::$DI['record_story_1']->removeChild(self::$DI['record_1']);
} }
/** /**
@@ -840,6 +833,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
foreach ($response['results']['records'] as $record) { foreach ($response['results']['records'] as $record) {
$this->evaluateGoodRecord($record); $this->evaluateGoodRecord($record);
$found = true; $found = true;
break;
} }
if (!$found) { if (!$found) {
@@ -876,6 +870,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
foreach ($response['results']['stories'] as $story) { foreach ($response['results']['stories'] as $story) {
$this->evaluateGoodStory($story); $this->evaluateGoodStory($story);
$found = true; $found = true;
break;
} }
if (!$found) { if (!$found) {
@@ -1050,9 +1045,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
public function testStoriesEmbedRoute() public function testStoriesEmbedRoute()
{ {
$this->setToken(self::$token); $this->setToken(self::$token);
$story = self::$DI['record_story_1']; $story = self::$DI['record_story_1'];
$keys = array_keys($story->get_subdefs());
$route = '/api/v1/stories/' . $story->get_sbas_id() . '/' . $story->get_record_id() . '/embed/'; $route = '/api/v1/stories/' . $story->get_sbas_id() . '/' . $story->get_record_id() . '/embed/';
$this->evaluateMethodNotAllowedRoute($route, ['POST', 'PUT', 'DELETE']); $this->evaluateMethodNotAllowedRoute($route, ['POST', 'PUT', 'DELETE']);
@@ -1304,8 +1297,6 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
*/ */
public function testSearchBaskets() public function testSearchBaskets()
{ {
$this->insertFiveBasket();
$this->insertOneValidationBasket();
self::$DI['client'] = new Client(self::$DI['app'], []); self::$DI['client'] = new Client(self::$DI['app'], []);
$this->setToken(self::$adminToken); $this->setToken(self::$adminToken);
@@ -1357,7 +1348,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
{ {
$this->setToken(self::$adminToken); $this->setToken(self::$adminToken);
$basketElement = $this->insertOneBasketElement(); $basketElement = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\BasketElement', 1);
$basket = $basketElement->getBasket(); $basket = $basketElement->getBasket();
$route = '/api/v1/baskets/' . $basket->getId() . '/content/'; $route = '/api/v1/baskets/' . $basket->getId() . '/content/';
@@ -1397,7 +1388,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
{ {
$this->setToken(self::$adminToken); $this->setToken(self::$adminToken);
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$route = '/api/v1/baskets/' . $basket->getId() . '/setname/'; $route = '/api/v1/baskets/' . $basket->getId() . '/setname/';
@@ -1450,7 +1441,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
{ {
$this->setToken(self::$adminToken); $this->setToken(self::$adminToken);
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$route = '/api/v1/baskets/' . $basket->getId() . '/setdescription/'; $route = '/api/v1/baskets/' . $basket->getId() . '/setdescription/';
@@ -1475,11 +1466,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
public function testDeleteBasket() public function testDeleteBasket()
{ {
$this->setToken(self::$adminToken); $this->setToken(self::$adminToken);
$route = '/api/v1/baskets/1/delete/';
$baskets = $this->insertFiveBasket();
$route = '/api/v1/baskets/' . $baskets[0]->getId() . '/delete/';
$this->evaluateMethodNotAllowedRoute($route, ['GET', 'PUT', 'DELETE']); $this->evaluateMethodNotAllowedRoute($route, ['GET', 'PUT', 'DELETE']);
self::$DI['client']->request('POST', $route, $this->getParameters(), [], ['HTTP_Accept' => $this->getAcceptMimeType()]); self::$DI['client']->request('POST', $route, $this->getParameters(), [], ['HTTP_Accept' => $this->getAcceptMimeType()]);
@@ -1494,6 +1481,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
foreach ($content['response']['baskets'] as $basket) { foreach ($content['response']['baskets'] as $basket) {
$this->evaluateGoodBasket($basket); $this->evaluateGoodBasket($basket);
$found = true; $found = true;
break;
} }
if (!$found) { if (!$found) {
$this->fail('There should be four baskets left'); $this->fail('There should be four baskets left');
@@ -1674,7 +1662,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
{ {
$title = 'Yellow title'; $title = 'Yellow title';
$created_feed = $this->insertOneFeed(self::$DI['user'], $title); $created_feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$this->setToken(self::$token); $this->setToken(self::$token);
$route = '/api/v1/feeds/list/'; $route = '/api/v1/feeds/list/';
@@ -1696,7 +1684,8 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
if ($feed['id'] == $created_feed->getId()) { if ($feed['id'] == $created_feed->getId()) {
$found = true; $found = true;
$this->assertEquals($title, $feed['title']); $this->assertEquals('Feed test, YOLO!', $feed['title']);
break;
} }
} }
@@ -1718,15 +1707,14 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
$title = 'Yellow title';
$subtitle = 'Trololololo !';
$entry_title = 'Superman'; $entry_title = 'Superman';
$entry_subtitle = 'Wonder Woman'; $entry_subtitle = 'Wonder Woman';
$author = "W. Shakespeare"; $author = "W. Shakespeare";
$author_email = "gontran.bonheur@gmail.com"; $author_email = "gontran.bonheur@gmail.com";
$created_item = $this->insertOneFeedItem(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$created_entry = $created_item->getEntry(); $created_entry = $feed->getEntries()->first();
$created_entry->setAuthorEmail($author_email); $created_entry->setAuthorEmail($author_email);
$created_entry->setAuthorName($author); $created_entry->setAuthorName($author);
$created_entry->setTitle($entry_title); $created_entry->setTitle($entry_title);
@@ -1761,6 +1749,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
$this->assertEquals($author, $entry['author_name']); $this->assertEquals($author, $entry['author_name']);
$this->assertEquals($entry_title, $entry['title']); $this->assertEquals($entry_title, $entry['title']);
$this->assertEquals($entry_subtitle, $entry['subtitle']); $this->assertEquals($entry_subtitle, $entry['subtitle']);
break;
} }
} }
@@ -1779,15 +1768,8 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
$title = 'Yellow title'; $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$subtitle = 'Trololololo !'; $created_entry = $feed->getEntries()->first();
$entry_title = 'Superman';
$entry_subtitle = 'Wonder Woman';
$author = "W. Shakespeare";
$author_email = "gontran.bonheur@gmail.com";
$created_item = $this->insertOneFeedItem(self::$DI['user']);
$created_entry = $created_item->getEntry();
$this->setToken(self::$token); $this->setToken(self::$token);
$route = '/api/v1/feeds/entry/' . $created_entry->getId() . '/'; $route = '/api/v1/feeds/entry/' . $created_entry->getId() . '/';
@@ -1817,16 +1799,8 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
$title = 'Yellow title'; $created_feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$subtitle = 'Trololololo !'; $created_entry = $created_feed->getEntries()->first();
$entry_title = 'Superman';
$entry_subtitle = 'Wonder Woman';
$author = "W. Shakespeare";
$author_email = "gontran.bonheur@gmail.com";
$created_item = $this->insertOneFeedItem(self::$DI['user']);
$created_entry = $created_item->getEntry();
$created_feed = $created_entry->getFeed();
$created_feed->setCollection(self::$DI['collection_no_access']); $created_feed->setCollection(self::$DI['collection_no_access']);
@@ -1858,9 +1832,8 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
$entry_title = 'Superman'; $entry_title = 'Superman';
$entry_subtitle = 'Wonder Woman'; $entry_subtitle = 'Wonder Woman';
$created_item = $this->insertOneFeedItem(self::$DI['user']); $created_feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$created_entry = $created_item->getEntry(); $created_entry = $created_feed->getEntries()->first();
$created_feed = $created_entry->getFeed();
$created_entry->setTitle($entry_title); $created_entry->setTitle($entry_title);
$created_entry->setSubtitle($entry_subtitle); $created_entry->setSubtitle($entry_subtitle);
self::$DI['app']['EM']->persist($created_entry); self::$DI['app']['EM']->persist($created_entry);
@@ -1889,6 +1862,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
$this->assertEquals($entry_title, $entry['title']); $this->assertEquals($entry_title, $entry['title']);
$this->assertEquals($entry_subtitle, $entry['subtitle']); $this->assertEquals($entry_subtitle, $entry['subtitle']);
$found = true; $found = true;
break;
} }
} }
@@ -1908,7 +1882,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
$this->setToken(self::$token); $this->setToken(self::$token);
$route = '/api/v1/quarantine/list/'; $route = '/api/v1/quarantine/list/';
$quarantineItemId = $this->getQuarantineItem()->getId(); $quarantineItemId = self::$DI['lazaret_1']->getId();
$this->evaluateMethodNotAllowedRoute($route, ['POST', 'PUT', 'DELETE']); $this->evaluateMethodNotAllowedRoute($route, ['POST', 'PUT', 'DELETE']);
@@ -1925,6 +1899,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
$this->evaluateGoodQuarantineItem($item); $this->evaluateGoodQuarantineItem($item);
if ($item['id'] == $quarantineItemId) { if ($item['id'] == $quarantineItemId) {
$found = true; $found = true;
break;
} }
} }
@@ -1940,7 +1915,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
{ {
$this->setToken(self::$token); $this->setToken(self::$token);
$quarantineItemId = $this->getQuarantineItem()->getId(); $quarantineItemId = self::$DI['lazaret_1']->getId();
$route = '/api/v1/quarantine/item/' . $quarantineItemId . '/'; $route = '/api/v1/quarantine/item/' . $quarantineItemId . '/';
$this->evaluateMethodNotAllowedRoute($route, ['POST', 'PUT', 'DELETE']); $this->evaluateMethodNotAllowedRoute($route, ['POST', 'PUT', 'DELETE']);
@@ -1954,25 +1929,6 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
$this->assertEquals($quarantineItemId, $content['response']['quarantine_item']['id']); $this->assertEquals($quarantineItemId, $content['response']['quarantine_item']['id']);
} }
protected function getQuarantineItem()
{
$lazaretSession = new \Alchemy\Phrasea\Model\Entities\LazaretSession();
self::$DI['app']['EM']->persist($lazaretSession);
$quarantineItem = null;
$callback = function ($element, $visa, $code) use (&$quarantineItem) {
$quarantineItem = $element;
};
$tmpname = tempnam(sys_get_temp_dir(), 'test_quarantine');
copy(__DIR__ . '/../../../../files/iphone_pic.jpg', $tmpname);
$file = File::buildFromPathfile($tmpname, self::$DI['collection'], self::$DI['app']);
self::$DI['app']['border-manager']->process($lazaretSession, $file, $callback, Manager::FORCE_LAZARET);
return $quarantineItem;
}
protected function evaluateGoodQuarantineItem($item) protected function evaluateGoodQuarantineItem($item)
{ {
$this->assertArrayHasKey('id', $item); $this->assertArrayHasKey('id', $item);

View File

@@ -29,25 +29,23 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
{ {
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
$baskets = $this->insertFiveBasket();
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']);
$crawler = self::$DI['client']->request('GET', '/lightbox/'); $crawler = self::$DI['client']->request('GET', '/lightbox/');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', self::$DI['client']->getResponse()->getCharset()); $this->assertEquals('UTF-8', self::$DI['client']->getResponse()->getCharset());
$this->assertEquals(5, $crawler->filter('div.basket_wrapper')->count()); $this->assertCount(3, $crawler->filter('div.basket_wrapper'));
$this->set_user_agent(self::USER_AGENT_IE6, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_IE6, self::$DI['app']);
$crawler = self::$DI['client']->request('GET', '/lightbox/'); $crawler = self::$DI['client']->request('GET', '/lightbox/');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', self::$DI['client']->getResponse()->getCharset()); $this->assertEquals('UTF-8', self::$DI['client']->getResponse()->getCharset());
$this->assertEquals($crawler->filter('div.basket_wrapper')->count(), count($baskets)); $this->assertCount(3, $crawler->filter('div.basket_wrapper'));
$this->set_user_agent(self::USER_AGENT_IPHONE, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_IPHONE, self::$DI['app']);
$crawler = self::$DI['client']->request('GET', '/lightbox/'); self::$DI['client']->request('GET', '/lightbox/');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', self::$DI['client']->getResponse()->getCharset()); $this->assertEquals('UTF-8', self::$DI['client']->getResponse()->getCharset());
} }
@@ -56,7 +54,7 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
{ {
$this->logout(self::$DI['app']); $this->logout(self::$DI['app']);
$Basket = $this->insertOneBasket(); $Basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$token = self::$DI['app']['tokens']->getUrlToken(\random::TYPE_VIEW, self::$DI['user_alt2']->get_id(), null, $Basket->getId()); $token = self::$DI['app']['tokens']->getUrlToken(\random::TYPE_VIEW, self::$DI['user_alt2']->get_id(), null, $Basket->getId());
self::$DI['client']->request('GET', '/lightbox/?LOG='.$token); self::$DI['client']->request('GET', '/lightbox/?LOG='.$token);
@@ -67,7 +65,7 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
public function testAjaxNoteForm() public function testAjaxNoteForm()
{ {
$basket = $this->insertOneValidationBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$basket_element = $basket->getELements()->first(); $basket_element = $basket->getELements()->first();
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']);
@@ -91,7 +89,7 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
public function testAjaxElement() public function testAjaxElement()
{ {
$basket_element = $this->insertOneBasketElement(); $basket_element = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\BasketElement', 1);
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']);
@@ -136,8 +134,9 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
{ {
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']);
$item = $this->insertOneFeedItem(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$entry = $item->getEntry(); $entry = $feed->getEntries()->first();
$item = $entry->getItems()->first();
$crawler = self::$DI['client']->request('GET', '/lightbox/ajax/LOAD_FEED_ITEM/' . $entry->getId() . '/' . $item->getId() . '/'); $crawler = self::$DI['client']->request('GET', '/lightbox/ajax/LOAD_FEED_ITEM/' . $entry->getId() . '/' . $item->getId() . '/');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
@@ -180,7 +179,7 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
{ {
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
$basket = $this->insertOneValidationBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']);
@@ -205,7 +204,7 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
{ {
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']);
@@ -232,8 +231,8 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']);
$item = $this->insertOneFeedItem(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$entry = $item->getEntry(); $entry = $feed->getEntries()->first();
$crawler = self::$DI['client']->request('GET', '/lightbox/feeds/entry/' . $entry->getId() . '/'); $crawler = self::$DI['client']->request('GET', '/lightbox/feeds/entry/' . $entry->getId() . '/');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
@@ -254,20 +253,20 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
public function testAjaxReport() public function testAjaxReport()
{ {
$validationBasket = $this->insertOneValidationBasket(); $validationBasket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']); $this->set_user_agent(self::USER_AGENT_FIREFOX8MAC, self::$DI['app']);
$crawler = self::$DI['client']->request('GET', '/lightbox/ajax/LOAD_REPORT/' . $validationBasket->getId() . '/'); self::$DI['client']->request('GET', '/lightbox/ajax/LOAD_REPORT/' . $validationBasket->getId() . '/');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', self::$DI['client']->getResponse()->getCharset()); $this->assertEquals('UTF-8', self::$DI['client']->getResponse()->getCharset());
} }
public function testAjaxSetNote() public function testAjaxSetNote()
{ {
$validationBasket = $this->insertOneValidationBasket(); $validationBasket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$validationBasketElement = $validationBasket->getElements()->first(); $validationBasketElement = $validationBasket->getElements()->first();
$crawler = self::$DI['client']->request('POST', '/lightbox/ajax/SET_NOTE/' . $validationBasketElement->getId() . '/'); self::$DI['client']->request('POST', '/lightbox/ajax/SET_NOTE/' . $validationBasketElement->getId() . '/');
$this->assertEquals(400, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(400, self::$DI['client']->getResponse()->getStatusCode());
$crawler = self::$DI['client']->request( $crawler = self::$DI['client']->request(
@@ -287,7 +286,7 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
public function testAjaxSetAgreement() public function testAjaxSetAgreement()
{ {
$validationBasket = $this->insertOneValidationBasket(); $validationBasket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$validationBasketElement = $validationBasket->getElements()->first(); $validationBasketElement = $validationBasket->getElements()->first();
$crawler = self::$DI['client']->request( $crawler = self::$DI['client']->request(
@@ -313,7 +312,7 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
public function testAjaxSetReleaseWithRegularBasket() public function testAjaxSetReleaseWithRegularBasket()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$crawler = self::$DI['client']->request('POST', '/lightbox/ajax/SET_RELEASE/' . $basket->getId() . '/'); $crawler = self::$DI['client']->request('POST', '/lightbox/ajax/SET_RELEASE/' . $basket->getId() . '/');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
@@ -325,16 +324,16 @@ class LightboxTest extends \PhraseanetAuthenticatedWebTestCase
public function testAjaxSetReleaseWithRegularBasketWithValidation() public function testAjaxSetReleaseWithRegularBasketWithValidation()
{ {
$validationBasket = $this->insertOneValidationBasket(); $validationBasket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$this->mockNotificationDeliverer('Alchemy\Phrasea\Notification\Mail\MailInfoValidationDone'); $this->mockNotificationDeliverer('Alchemy\Phrasea\Notification\Mail\MailInfoValidationDone');
foreach ($validationBasket->getElements() as $element) { foreach ($validationBasket->getElements() as $element) {
$element->getUserValidationDatas(self::$DI['app']['authentication']->getUser(), self::$DI['app'])->setAgreement(true); $element->getUserValidationDatas(self::$DI['user'], self::$DI['app'])->setAgreement(true);
break; break;
} }
$crawler = self::$DI['client']->request('POST', '/lightbox/ajax/SET_RELEASE/' . $validationBasket->getId() . '/'); self::$DI['client']->request('POST', '/lightbox/ajax/SET_RELEASE/' . $validationBasket->getId() . '/');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode(), sprintf('set note to element %s ', $validationBasket->getId())); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode(), sprintf('set note to element %s ', $validationBasket->getId()));
$this->assertEquals('application/json', self::$DI['client']->getResponse()->headers->get('Content-type')); $this->assertEquals('application/json', self::$DI['client']->getResponse()->headers->get('Content-type'));

View File

@@ -58,13 +58,10 @@ class OverviewTest extends \PhraseanetAuthenticatedWebTestCase
public function testDatafilesRouteNotAuthenticatedIsOkInPublicFeed() public function testDatafilesRouteNotAuthenticatedIsOkInPublicFeed()
{ {
$this->insertOneFeedItem(self::$DI['user'], true, 1, self::$DI['record_1']); self::$DI['record_5']->move_to_collection(self::$DI['collection_no_access'], self::$DI['app']['phraseanet.appbox']);
self::$DI['record_1']->move_to_collection(self::$DI['collection_no_access'], self::$DI['app']['phraseanet.appbox']); self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_5']->get_sbas_id() . '/' . self::$DI['record_5']->get_record_id() . '/preview/');
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
self::$DI['record_1']->move_to_collection(self::$DI['collection'], self::$DI['app']['phraseanet.appbox']); self::$DI['record_5']->move_to_collection(self::$DI['collection'], self::$DI['app']['phraseanet.appbox']);
} }
public function testDatafilesRouteNotAuthenticatedUnknownSubdef() public function testDatafilesRouteNotAuthenticatedUnknownSubdef()
@@ -211,7 +208,9 @@ class OverviewTest extends \PhraseanetAuthenticatedWebTestCase
public function testPermalinkRouteNotAuthenticatedIsOkInPublicFeed() public function testPermalinkRouteNotAuthenticatedIsOkInPublicFeed()
{ {
$item = $this->insertOneFeedItem(self::$DI['user'], true); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 2);
$entry = $feed->getEntries()->first();
$item = $entry->getItems()->first();
self::$DI['app']['authentication']->closeAccount(); self::$DI['app']['authentication']->closeAccount();
self::$DI['client']->request('GET', '/permalink/v1/' . $item->getRecord(self::$DI['app'])->get_sbas_id() . '/' . $item->getRecord(self::$DI['app'])->get_record_id() . '/preview/'); self::$DI['client']->request('GET', '/permalink/v1/' . $item->getRecord(self::$DI['app'])->get_sbas_id() . '/' . $item->getRecord(self::$DI['app'])->get_record_id() . '/preview/');

View File

@@ -250,25 +250,6 @@ class FailureManagerTest extends \PhraseanetTestCase
->method('getClientIp') ->method('getClientIp')
->will($this->returnValue($ip)); ->will($this->returnValue($ip));
for ($i = 0; $i < 10; $i++) {
$failure = new AuthFailure();
$failure->setIp($ip);
$failure->setUsername($username);
$failure->setLocked(false);
$failure->setCreated(new \DateTime('-3 months'));
self::$DI['app']['EM']->persist($failure);
}
for ($i = 0; $i < 2; $i++) {
$failure = new AuthFailure();
$failure->setIp($ip);
$failure->setUsername($username);
$failure->setLocked(false);
$failure->setCreated(new \DateTime('-1 months'));
self::$DI['app']['EM']->persist($failure);
}
self::$DI['app']['EM']->flush();
$this->assertCount(10, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\AuthFailure') $this->assertCount(10, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\AuthFailure')
->findOldFailures()); ->findOldFailures());
$this->assertCount(12, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\AuthFailure') $this->assertCount(12, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\AuthFailure')

View File

@@ -38,8 +38,7 @@ class Sha256Test extends \PhraseanetTestCase
*/ */
public function testCheck() public function testCheck()
{ {
$session = new \Alchemy\Phrasea\Model\Entities\LazaretSession(); $session = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\LazaretSession', 1);
self::$DI['app']['EM']->persist($session);
self::$DI['app']['border-manager']->process($session, File::buildFromPathfile($this->media->getFile()->getPathname(), self::$DI['collection'], self::$DI['app']), null, Manager::FORCE_RECORD); self::$DI['app']['border-manager']->process($session, File::buildFromPathfile($this->media->getFile()->getPathname(), self::$DI['collection'], self::$DI['app']), null, Manager::FORCE_RECORD);
@@ -48,13 +47,11 @@ class Sha256Test extends \PhraseanetTestCase
$mock $mock
->expects($this->once()) ->expects($this->once())
->method('getSha256') ->method('getSha256')
->will($this->returnValue($this->media->getHash('sha256', __DIR__ . '/../../../../../files/test001.jpg'))) ->will($this->returnValue('7fad283de349b903c850548cda65cf2d86d24c4e3856cdc2b97e47430494b8c8'))
; ;
$response = $this->object->check(self::$DI['app']['EM'], $mock); $response = $this->object->check(self::$DI['app']['EM'], $mock);
$this->assertInstanceOf('\\Alchemy\\Phrasea\\Border\\Checker\\Response', $response); $this->assertInstanceOf('\\Alchemy\\Phrasea\\Border\\Checker\\Response', $response);
$this->assertFalse($response->isOk()); $this->assertFalse($response->isOk());
} }

View File

@@ -54,9 +54,7 @@ class ManagerTest extends \PhraseanetAuthenticatedWebTestCase
{ {
parent::setUp(); parent::setUp();
$this->object = new Manager(self::$DI['app']); $this->object = new Manager(self::$DI['app']);
$this->session = new \Alchemy\Phrasea\Model\Entities\LazaretSession(); $this->session = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\LazaretSession', 1);
self::$DI['app']['EM']->persist($this->session);
} }
/** /**

View File

@@ -8,8 +8,6 @@ class TaskListTest extends \PhraseanetTestCase
{ {
public function testRunWithoutProblems() public function testRunWithoutProblems()
{ {
$this->insertTwoTasks();
$input = $this->getMock('Symfony\Component\Console\Input\InputInterface'); $input = $this->getMock('Symfony\Component\Console\Input\InputInterface');
$output = $this->getMock('Symfony\Component\Console\Output\OutputInterface'); $output = $this->getMock('Symfony\Component\Console\Output\OutputInterface');

View File

@@ -9,21 +9,13 @@ class TaskRunTest extends \PhraseanetTestCase
{ {
public function testRunWithoutProblems() public function testRunWithoutProblems()
{ {
$task = new Task();
$task
->setName('Task')
->setJobId('Null');
self::$DI['cli']['EM']->persist($task);
self::$DI['cli']['EM']->flush();
$input = $this->getMock('Symfony\Component\Console\Input\InputInterface'); $input = $this->getMock('Symfony\Component\Console\Input\InputInterface');
$output = $this->getMock('Symfony\Component\Console\Output\OutputInterface'); $output = $this->getMock('Symfony\Component\Console\Output\OutputInterface');
$input->expects($this->any()) $input->expects($this->any())
->method('getArgument') ->method('getArgument')
->with('task_id') ->with('task_id')
->will($this->returnValue($task->getId())); ->will($this->returnValue(1));
$command = new TaskRun(); $command = new TaskRun();
$command->setContainer(self::$DI['cli']); $command->setContainer(self::$DI['cli']);

View File

@@ -9,21 +9,13 @@ class TaskStartTest extends \PhraseanetTestCase
{ {
public function testRunWithoutProblems() public function testRunWithoutProblems()
{ {
$task = new Task();
$task
->setName('Task')
->setJobId('Null');
self::$DI['cli']['EM']->persist($task);
self::$DI['cli']['EM']->flush();
$input = $this->getMock('Symfony\Component\Console\Input\InputInterface'); $input = $this->getMock('Symfony\Component\Console\Input\InputInterface');
$output = $this->getMock('Symfony\Component\Console\Output\OutputInterface'); $output = $this->getMock('Symfony\Component\Console\Output\OutputInterface');
$input->expects($this->any()) $input->expects($this->any())
->method('getArgument') ->method('getArgument')
->with('task_id') ->with('task_id')
->will($this->returnValue($task->getId())); ->will($this->returnValue(1));
$command = new TaskStart(); $command = new TaskStart();
$command->setContainer(self::$DI['cli']); $command->setContainer(self::$DI['cli']);

View File

@@ -9,21 +9,13 @@ class TaskStateTest extends \PhraseanetTestCase
{ {
public function testRunWithoutProblems() public function testRunWithoutProblems()
{ {
$task = new Task();
$task
->setName('Task')
->setJobId('Null');
self::$DI['cli']['EM']->persist($task);
self::$DI['cli']['EM']->flush();
$input = $this->getMock('Symfony\Component\Console\Input\InputInterface'); $input = $this->getMock('Symfony\Component\Console\Input\InputInterface');
$output = $this->getMock('Symfony\Component\Console\Output\OutputInterface'); $output = $this->getMock('Symfony\Component\Console\Output\OutputInterface');
$input->expects($this->any()) $input->expects($this->any())
->method('getArgument') ->method('getArgument')
->with('task_id') ->with('task_id')
->will($this->returnValue($task->getId())); ->will($this->returnValue(1));
$command = new TaskState(); $command = new TaskState();
$command->setContainer(self::$DI['cli']); $command->setContainer(self::$DI['cli']);

View File

@@ -9,21 +9,13 @@ class TaskStopTest extends \PhraseanetTestCase
{ {
public function testRunWithoutProblems() public function testRunWithoutProblems()
{ {
$task = new Task();
$task
->setName('Task')
->setJobId('Null');
self::$DI['cli']['EM']->persist($task);
self::$DI['cli']['EM']->flush();
$input = $this->getMock('Symfony\Component\Console\Input\InputInterface'); $input = $this->getMock('Symfony\Component\Console\Input\InputInterface');
$output = $this->getMock('Symfony\Component\Console\Output\OutputInterface'); $output = $this->getMock('Symfony\Component\Console\Output\OutputInterface');
$input->expects($this->any()) $input->expects($this->any())
->method('getArgument') ->method('getArgument')
->with('task_id') ->with('task_id')
->will($this->returnValue($task->getId())); ->will($this->returnValue(1));
$command = new TaskStop(); $command = new TaskStop();
$command->setContainer(self::$DI['cli']); $command->setContainer(self::$DI['cli']);

View File

@@ -17,7 +17,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
foreach ($feeds as $feed) { foreach ($feeds as $feed) {
$this->assertRegExp('/\/admin\/publications\/feed\/' . $feed->getId() . '/', $pageContent); $this->assertRegExp('/\/admin\/publications\/feed\/' . $feed->getId() . '/', $pageContent);
if ($feed->getCollection() != null) { if ($feed->getCollection(self::$DI['app']) != null) {
$this->assertRegExp('/' . $feed->getCollection()->get_label(self::$DI['app']['locale']) . '/', $pageContent); $this->assertRegExp('/' . $feed->getCollection()->get_label(self::$DI['app']['locale']) . '/', $pageContent);
} }
if ($feed->isOwner(self::$DI['user'])) { if ($feed->isOwner(self::$DI['user'])) {
@@ -42,17 +42,16 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testGetFeed() public function testGetFeed()
{ {
$feed = $this->insertOneFeed(self::$DI['user'], "salut"); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$crawler = self::$DI['client']->request('GET', '/admin/publications/feed/' . $feed->getId() . '/'); $crawler = self::$DI['client']->request('GET', '/admin/publications/feed/' . $feed->getId() . '/');
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$this->assertEquals(1, $crawler->filterXPath("//form[@action='/admin/publications/feed/" . $feed->getId() . "/update/']")->count()); $this->assertEquals(1, $crawler->filterXPath("//form[@action='/admin/publications/feed/" . $feed->getId() . "/update/']")->count());
$this->assertEquals(1, $crawler->filterXPath("//input[@value='salut']")->count()); $this->assertEquals(1, $crawler->filterXPath("//input[@value='Feed test, YOLO!']")->count());
} }
public function testUpdatedFeedException() public function testUpdatedFeedException()
{ {
$feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$feed = $this->insertOneFeed(self::$DI['user']);
self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/update/", [ self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/update/", [
'title' => 'test' 'title' => 'test'
@@ -76,7 +75,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testUpdatedFeedOwner() public function testUpdatedFeedOwner()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/update/", [ self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/update/", [
'title' => 'test' 'title' => 'test'
@@ -109,7 +108,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testIconUploadErrorOwner() public function testIconUploadErrorOwner()
{ {
$feed = $this->insertOneFeed(self::$DI['user_alt1']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 3);
self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/iconupload/", [], [], ['HTTP_ACCEPT' => 'application/json']); self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/iconupload/", [], [], ['HTTP_ACCEPT' => 'application/json']);
@@ -120,7 +119,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testIconUploadErrorFileData() public function testIconUploadErrorFileData()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['client']->request( self::$DI['client']->request(
"POST" "POST"
@@ -138,7 +137,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testIconUploadErrorFileType() public function testIconUploadErrorFileType()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['client']->request( self::$DI['client']->request(
"POST" "POST"
@@ -156,7 +155,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testIconUpload() public function testIconUpload()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$files = [ $files = [
'files' => [ 'files' => [
@@ -184,7 +183,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testAddPublisher() public function testAddPublisher()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/addpublisher/", [ self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/addpublisher/", [
'usr_id' => self::$DI['user_alt1']->get_id() 'usr_id' => self::$DI['user_alt1']->get_id()
@@ -206,7 +205,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testAddPublisherException() public function testAddPublisherException()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/addpublisher/"); self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/addpublisher/");
@@ -222,7 +221,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testRemovePublisher() public function testRemovePublisher()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/removepublisher/", [ self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/removepublisher/", [
'usr_id' => self::$DI['user_alt1']->get_id() 'usr_id' => self::$DI['user_alt1']->get_id()
@@ -244,7 +243,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testRemovePublisherException() public function testRemovePublisherException()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/removepublisher/"); self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/removepublisher/");
@@ -262,7 +261,7 @@ class Module_Admin_Route_PublicationTest extends \PhraseanetAuthenticatedWebTest
public function testDeleteFeed() public function testDeleteFeed()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/delete/"); self::$DI['client']->request("POST", "/admin/publications/feed/" . $feed->getId() . "/delete/");

View File

@@ -15,15 +15,6 @@ class TaskManagerTest extends \PhraseanetAuthenticatedWebTestCase
public function testRootListTasks() public function testRootListTasks()
{ {
foreach (self::$DI['app']['task-manager.available-jobs'] as $job) {
$task = new Task();
$task
->setName('task')
->setJobId(get_class($job));
self::$DI['app']['EM']->persist($task);
}
self::$DI['app']['EM']->flush();
self::$DI['client']->request('GET', '/admin/task-manager/tasks'); self::$DI['client']->request('GET', '/admin/task-manager/tasks');
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
} }
@@ -84,43 +75,22 @@ class TaskManagerTest extends \PhraseanetAuthenticatedWebTestCase
public function testGetTaskLog() public function testGetTaskLog()
{ {
$task = new Task(); self::$DI['client']->request('GET', '/admin/task-manager/task/1/log');
$task
->setName('task')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
self::$DI['client']->request('GET', '/admin/task-manager/task/'.$task->getId().'/log');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testPostTaskDelete() public function testPostTaskDelete()
{ {
$task = new Task(); self::$DI['client']->request('POST', '/admin/task-manager/task/1/delete');
$task
->setName('task')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
$taskId = $task->getId();
self::$DI['client']->request('POST', '/admin/task-manager/task/'.$taskId.'/delete');
$this->assertEquals(302, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(302, self::$DI['client']->getResponse()->getStatusCode());
$this->assertEquals('/admin/task-manager/tasks', self::$DI['client']->getResponse()->headers->get('location')); $this->assertEquals('/admin/task-manager/tasks', self::$DI['client']->getResponse()->headers->get('location'));
$this->assertNull(self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', $taskId)); $this->assertNull(self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1));
} }
public function testPostTaskStart() public function testPostTaskStart()
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task
->setName('task')
->setStatus(Task::STATUS_STOPPED)
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
self::$DI['client']->request('POST', '/admin/task-manager/task/'.$task->getId().'/start'); self::$DI['client']->request('POST', '/admin/task-manager/task/'.$task->getId().'/start');
$this->assertEquals(302, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(302, self::$DI['client']->getResponse()->getStatusCode());
@@ -131,13 +101,7 @@ class TaskManagerTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostTaskStop() public function testPostTaskStop()
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task
->setName('task')
->setStatus(Task::STATUS_STARTED)
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
self::$DI['client']->request('POST', '/admin/task-manager/task/'.$task->getId().'/stop'); self::$DI['client']->request('POST', '/admin/task-manager/task/'.$task->getId().'/stop');
$this->assertEquals(302, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(302, self::$DI['client']->getResponse()->getStatusCode());
@@ -148,13 +112,7 @@ class TaskManagerTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostResetCrashes() public function testPostResetCrashes()
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task
->setName('task')
->setCrashed(30)
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
self::$DI['client']->request('POST', '/admin/task-manager/task/'.$task->getId().'/resetcrashcounter'); self::$DI['client']->request('POST', '/admin/task-manager/task/'.$task->getId().'/resetcrashcounter');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
@@ -165,12 +123,7 @@ class TaskManagerTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostSaveTask() public function testPostSaveTask()
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task
->setName('task')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
$name = 'renamed'; $name = 'renamed';
$period = 366; $period = 366;
@@ -198,14 +151,7 @@ class TaskManagerTest extends \PhraseanetAuthenticatedWebTestCase
public function testGetTask() public function testGetTask()
{ {
$task = new Task(); self::$DI['client']->request('GET', '/admin/task-manager/task/1');
$task
->setName('task')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
self::$DI['client']->request('GET', '/admin/task-manager/task/'.$task->getId());
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
} }
@@ -234,13 +180,6 @@ class TaskManagerTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostTaskFacility() public function testPostTaskFacility()
{ {
$task = new Task();
$task
->setName('task')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
$job = $this->getMock('Alchemy\Phrasea\TaskManager\Job\JobInterface'); $job = $this->getMock('Alchemy\Phrasea\TaskManager\Job\JobInterface');
$editor = $this->getMock('Alchemy\Phrasea\TaskManager\Editor\EditorInterface'); $editor = $this->getMock('Alchemy\Phrasea\TaskManager\Editor\EditorInterface');
@@ -257,19 +196,12 @@ class TaskManagerTest extends \PhraseanetAuthenticatedWebTestCase
->method('create') ->method('create')
->will($this->returnValue($job)); ->will($this->returnValue($job));
self::$DI['client']->request('POST', '/admin/task-manager/task/'.$task->getId().'/facility'); self::$DI['client']->request('POST', '/admin/task-manager/task/1/facility');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testPostTaskXmlFromForm() public function testPostTaskXmlFromForm()
{ {
$task = new Task();
$task
->setName('task')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
$job = $this->getMock('Alchemy\Phrasea\TaskManager\Job\JobInterface'); $job = $this->getMock('Alchemy\Phrasea\TaskManager\Job\JobInterface');
$editor = $this->getMock('Alchemy\Phrasea\TaskManager\Editor\EditorInterface'); $editor = $this->getMock('Alchemy\Phrasea\TaskManager\Editor\EditorInterface');
@@ -286,7 +218,7 @@ class TaskManagerTest extends \PhraseanetAuthenticatedWebTestCase
->method('create') ->method('create')
->will($this->returnValue($job)); ->will($this->returnValue($job));
self::$DI['client']->request('POST', '/admin/task-manager/task/'.$task->getId().'/xml-from-form'); self::$DI['client']->request('POST', '/admin/task-manager/task/1/xml-from-form');
$this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(200, self::$DI['client']->getResponse()->getStatusCode());
} }
} }

View File

@@ -63,13 +63,11 @@ class ControllerUsersTest extends \PhraseanetAuthenticatedWebTestCase
$user = \User_Adapter::create(self::$DI['app'], $username, "test", $username . "@email.com", false); $user = \User_Adapter::create(self::$DI['app'], $username, "test", $username . "@email.com", false);
$base_id = self::$DI['collection']->get_base_id(); $base_id = self::$DI['collection']->get_base_id();
$_POST['values'] = 'canreport_' . $base_id . '=1&manage_' . self::$DI['collection']->get_base_id() . '=1&canpush_' . self::$DI['collection']->get_base_id() . '=1';
$_POST['user_infos'] = "email=" .$username . "-lambda@email.com";
self::$DI['client']->request('POST', '/admin/users/rights/apply/', [ self::$DI['client']->request('POST', '/admin/users/rights/apply/', [
'users' => $user->get_id(), 'users' => $user->get_id(),
'values' => 'canreport_' . $base_id . '=1&manage_' . self::$DI['collection']->get_base_id() . '=1&canpush_' . self::$DI['collection']->get_base_id() . '=1', 'values' => 'canreport_' . $base_id . '=1&manage_' . self::$DI['collection']->get_base_id() . '=1&canpush_' . self::$DI['collection']->get_base_id() . '=1',
'user_infos' => "user_infos[email]=" . $user->get_email(), 'user_infos' => "email=" . $username . "-lambda@email.com",
]); ]);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
$this->assertTrue($response->isOK()); $this->assertTrue($response->isOK());

View File

@@ -43,7 +43,7 @@ class BasketsTest extends \PhraseanetAuthenticatedWebTestCase
*/ */
public function testAddElementToBasket() public function testAddElementToBasket()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
self::$DI['client']->request("POST", "/client/baskets/add-element/", [ self::$DI['client']->request("POST", "/client/baskets/add-element/", [
'courChuId' => $basket->getId(), 'courChuId' => $basket->getId(),
'sbas' => self::$DI['record_1']->get_sbas_id(), 'sbas' => self::$DI['record_1']->get_sbas_id(),
@@ -59,15 +59,14 @@ class BasketsTest extends \PhraseanetAuthenticatedWebTestCase
*/ */
public function testDeleteBasket() public function testDeleteBasket()
{ {
$basket = $this->insertOneBasket();
self::$DI['client']->request("POST", "/client/baskets/delete/", [ self::$DI['client']->request("POST", "/client/baskets/delete/", [
'courChuId' => $basket->getId() 'courChuId' => 1
]); ]);
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect()); $this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
try { try {
$basket = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Basket')->find($basket->getId()); $basket = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Basket')->find(1);
$this->fail('Basket is not deleted'); $this->fail('Basket is not deleted');
} catch (\exception $e) { } catch (\Exception $e) {
} }
} }
@@ -77,19 +76,8 @@ class BasketsTest extends \PhraseanetAuthenticatedWebTestCase
*/ */
public function testDeleteBasketElement() public function testDeleteBasketElement()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$basketElement = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\BasketElement', 1);
$record = self::$DI['record_1'];
$basketElement = new \Alchemy\Phrasea\Model\Entities\BasketElement();
$basketElement->setBasket($basket);
$basketElement->setRecord($record);
$basketElement->setLastInBasket();
$basket->addElement($basketElement);
self::$DI['app']['EM']->persist($basket);
self::$DI['app']['EM']->flush();
self::$DI['client']->request("POST", "/client/baskets/delete-element/", [ self::$DI['client']->request("POST", "/client/baskets/delete-element/", [
'p0' => $basketElement->getId() 'p0' => $basketElement->getId()

View File

@@ -38,18 +38,21 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
$query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b'); $query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b');
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(1, $count); $this->assertEquals(5, $count);
$this->assertEquals(302, $response->getStatusCode()); $this->assertEquals(302, $response->getStatusCode());
$query = self::$DI['app']['EM']->createQuery('SELECT b FROM \Alchemy\Phrasea\Model\Entities\Basket b'); $query = self::$DI['app']['EM']->createQuery('SELECT b FROM \Alchemy\Phrasea\Model\Entities\Basket b');
$result = $query->getResult(); $result = $query->getResult();
$basket = array_shift($result); $basket = array_pop($result);
$this->assertEquals(2, $basket->getElements()->count()); $this->assertEquals(2, $basket->getElements()->count());
} }
public function testRootPostJSON() public function testRootPostJSON()
{ {
$query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b');
$count = $query->getSingleScalarResult();
$route = '/prod/baskets/'; $route = '/prod/baskets/';
self::$DI['client']->request( self::$DI['client']->request(
@@ -69,10 +72,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
$query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b'); $query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b');
$count = $query->getSingleScalarResult(); $this->assertEquals($count + 1, $query->getSingleScalarResult());
$this->assertEquals(1, $count);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
} }
@@ -97,8 +97,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testBasketGet() public function testBasketGet()
{ {
$basket = $this->insertOneBasket(); $route = '/prod/baskets/1/';
$route = sprintf('/prod/baskets/%s/', $basket->getId());
self::$DI['client']->request('GET', $route); self::$DI['client']->request('GET', $route);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
@@ -106,7 +105,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testBasketGetAccessDenied() public function testBasketGetAccessDenied()
{ {
$basket = $this->insertOneBasket(self::$DI['user_alt1']); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 3);
$route = sprintf('/prod/baskets/%s/', $basket->getId()); $route = sprintf('/prod/baskets/%s/', $basket->getId());
self::$DI['client']->request('GET', $route); self::$DI['client']->request('GET', $route);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
@@ -115,7 +114,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testBasketDeleteElementPost() public function testBasketDeleteElementPost()
{ {
$basketElement = $this->insertOneBasketElement(); $basketElement = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\BasketElement', 1);
$basket = $basketElement->getBasket(); $basket = $basketElement->getBasket();
$this->assertEquals(1, $basket->getElements()->count()); $this->assertEquals(1, $basket->getElements()->count());
@@ -132,19 +131,8 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testBasketDeldeteElementPostJSON() public function testBasketDeldeteElementPostJSON()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$basket_element = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\BasketElement', 1);
$record = self::$DI['record_1'];
$basket_element = new \Alchemy\Phrasea\Model\Entities\BasketElement();
$basket_element->setBasket($basket);
$basket_element->setRecord($record);
$basket_element->setLastInBasket();
$basket->addElement($basket_element);
self::$DI['app']['EM']->persist($basket);
self::$DI['app']['EM']->flush();
$route = sprintf( $route = sprintf(
"/prod/baskets/%s/delete/%s/", $basket->getId(), $basket_element->getId() "/prod/baskets/%s/delete/%s/", $basket->getId(), $basket_element->getId()
@@ -163,7 +151,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testBasketDeletePostUnauthorized() public function testBasketDeletePostUnauthorized()
{ {
$basket = $this->insertOneBasket(self::$DI['user_alt1']); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 3);
$route = sprintf('/prod/baskets/%s/delete/', $basket->getId()); $route = sprintf('/prod/baskets/%s/delete/', $basket->getId());
self::$DI['client']->request('POST', $route); self::$DI['client']->request('POST', $route);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
@@ -171,37 +159,34 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
$this->assertEquals(403, $response->getStatusCode()); $this->assertEquals(403, $response->getStatusCode());
$query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b'); $query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b');
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(1, $count); $this->assertEquals(4, $count);
} }
public function testBasketDeletePost() public function testBasketDeletePost()
{ {
$basket = $this->insertOneBasket(); $route = '/prod/baskets/1/delete/';
$route = sprintf('/prod/baskets/%s/delete/', $basket->getId());
self::$DI['client']->request('POST', $route); self::$DI['client']->request('POST', $route);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
$query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b'); $query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b');
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(0, $count); $this->assertEquals(3, $count);
$this->assertEquals(302, $response->getStatusCode()); $this->assertEquals(302, $response->getStatusCode());
} }
public function testBasketDeletePostJSON() public function testBasketDeletePostJSON()
{ {
$basket = $this->insertOneBasket(); $route = '/prod/baskets/1/delete/';
$route = sprintf('/prod/baskets/%s/delete/', $basket->getId());
self::$DI['client']->request('POST', $route, [], [], ["HTTP_ACCEPT" => "application/json"]); self::$DI['client']->request('POST', $route, [], [], ["HTTP_ACCEPT" => "application/json"]);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
$query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b'); $query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b');
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(0, $count); $this->assertEquals(3, $count);
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
} }
public function testBasketUpdatePost() public function testBasketUpdatePost()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$route = sprintf('/prod/baskets/%s/update/', $basket->getId()); $route = sprintf('/prod/baskets/%s/update/', $basket->getId());
self::$DI['client']->request( self::$DI['client']->request(
@@ -218,7 +203,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testBasketUpdatePostJSON() public function testBasketUpdatePostJSON()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$route = sprintf('/prod/baskets/%s/update/', $basket->getId()); $route = sprintf('/prod/baskets/%s/update/', $basket->getId());
self::$DI['client']->request( self::$DI['client']->request(
@@ -237,7 +222,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testReorderGet() public function testReorderGet()
{ {
$basket = $this->insertOneBasketEnv(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$route = sprintf("/prod/baskets/%s/reorder/", $basket->getId()); $route = sprintf("/prod/baskets/%s/reorder/", $basket->getId());
@@ -253,8 +238,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testBasketUpdateGet() public function testBasketUpdateGet()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$route = sprintf('/prod/baskets/%s/update/', $basket->getId()); $route = sprintf('/prod/baskets/%s/update/', $basket->getId());
$crawler = self::$DI['client']->request( $crawler = self::$DI['client']->request(
@@ -276,7 +260,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testBasketArchivedPost() public function testBasketArchivedPost()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$route = sprintf('/prod/baskets/%s/archive/?archive=1', $basket->getId()); $route = sprintf('/prod/baskets/%s/archive/?archive=1', $basket->getId());
self::$DI['client']->request('POST', $route); self::$DI['client']->request('POST', $route);
$this->assertTrue($basket->getArchived()); $this->assertTrue($basket->getArchived());
@@ -290,8 +274,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testBasketArchivedPostJSON() public function testBasketArchivedPostJSON()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$route = sprintf('/prod/baskets/%s/archive/?archive=1', $basket->getId()); $route = sprintf('/prod/baskets/%s/archive/?archive=1', $basket->getId());
self::$DI['client']->request( self::$DI['client']->request(
@@ -317,8 +300,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testAddElementPost() public function testAddElementPost()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$route = sprintf('/prod/baskets/%s/addElements/', $basket->getId()); $route = sprintf('/prod/baskets/%s/addElements/', $basket->getId());
$records = [ $records = [
@@ -337,7 +319,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
$this->assertEquals(302, $response->getStatusCode()); $this->assertEquals(302, $response->getStatusCode());
$this->assertEquals(2, $basket->getElements()->count()); $this->assertCount(2, $basket->getElements());
} }
public function testAddElementToValidationPost() public function testAddElementToValidationPost()
@@ -345,37 +327,13 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
$datas = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\ValidationData')->findAll(); $datas = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\ValidationData')->findAll();
$countDatas = count($datas); $countDatas = count($datas);
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$this->assertCount(2, $basket->getElements());
$validationSession = new \Alchemy\Phrasea\Model\Entities\ValidationSession();
$expires = new \DateTime();
$expires->modify('+1 week');
$validationSession->setExpires($expires);
$validationSession->setInitiator(self::$DI['user']);
self::$DI['app']['EM']->persist($validationSession);
$basket->setValidation($validationSession);
$validationSession->setBasket($basket);
$validationParticipant = new \Alchemy\Phrasea\Model\Entities\ValidationParticipant();
$validationParticipant->setSession($validationSession);
$validationParticipant->setUser(self::$DI['user_alt1']);
self::$DI['app']['EM']->persist($validationParticipant);
$validationSession->addParticipant($validationParticipant);
self::$DI['app']['EM']->flush();
$route = sprintf('/prod/baskets/%s/addElements/', $basket->getId()); $route = sprintf('/prod/baskets/%s/addElements/', $basket->getId());
$records = [ $records = [
self::$DI['record_1']->get_serialize_key(), self::$DI['record_3']->get_serialize_key(),
self::$DI['record_2']->get_serialize_key(), self::$DI['record_4']->get_serialize_key(),
' ', ' ',
'42', '42',
'abhak', 'abhak',
@@ -389,16 +347,15 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
$this->assertEquals(302, $response->getStatusCode()); $this->assertEquals(302, $response->getStatusCode());
$this->assertEquals(2, $basket->getElements()->count()); $this->assertCount(4, $basket->getElements());
$datas = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\ValidationData')->findAll(); $datas = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\ValidationData')->findAll();
$this->assertTrue($countDatas < count($datas), 'assert that ' . count($datas) . ' > ' . $countDatas); $this->assertTrue($countDatas < count($datas), 'assert that ' . count($datas) . ' > ' . $countDatas);
} }
public function testAddElementPostJSON() public function testAddElementPostJSON()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$route = '/prod/baskets/1/addElements/';
$route = sprintf('/prod/baskets/%s/addElements/', $basket->getId());
$records = [ $records = [
self::$DI['record_1']->get_serialize_key(), self::$DI['record_1']->get_serialize_key(),
@@ -407,28 +364,18 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
$lst = implode(';', $records); $lst = implode(';', $records);
self::$DI['client']->request( self::$DI['client']->request('POST', $route, ['lst' => $lst], [], ["HTTP_ACCEPT" => "application/json"]);
'POST', $route, [
'lst' => $lst
], [], [
"HTTP_ACCEPT" => "application/json"
]
);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(2, $basket->getElements()->count()); $this->assertEquals(2, $basket->getElements()->count());
} }
public function testRouteStealElements() public function testRouteStealElements()
{ {
$BasketElement = $this->insertOneBasketElement(); $BasketElement = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\BasketElement', 1);
$Basket_1 = $BasketElement->getBasket(); $Basket_1 = $BasketElement->getBasket();
$Basket_2 = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 2);
$Basket_2 = $this->insertOneBasket();
$route = sprintf('/prod/baskets/%s/stealElements/', $Basket_2->getId()); $route = sprintf('/prod/baskets/%s/stealElements/', $Basket_2->getId());
@@ -448,11 +395,11 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testRouteStealElementsJson() public function testRouteStealElementsJson()
{ {
$BasketElement = $this->insertOneBasketElement(); $BasketElement = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\BasketElement', 1);
$Basket_1 = $BasketElement->getBasket(); $Basket_1 = $BasketElement->getBasket();
$Basket_2 = $this->insertOneBasket(); $Basket_2 = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 2);
$route = sprintf('/prod/baskets/%s/stealElements/', $Basket_2->getId()); $route = sprintf('/prod/baskets/%s/stealElements/', $Basket_2->getId());
@@ -481,7 +428,7 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
public function testRemoveBasket() public function testRemoveBasket()
{ {
$basket = $this->insertOneBasketEnv(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$route = sprintf('/prod/baskets/%s/delete/', $basket->getId()); $route = sprintf('/prod/baskets/%s/delete/', $basket->getId());
self::$DI['client']->request('POST', $route, [], [], ["HTTP_ACCEPT" => "application/json"]); self::$DI['client']->request('POST', $route, [], [], ["HTTP_ACCEPT" => "application/json"]);
@@ -500,12 +447,12 @@ class ControllerBasketTest extends \PhraseanetAuthenticatedWebTestCase
$this->assertEquals(0, $query->getSingleScalarResult()); $this->assertEquals(0, $query->getSingleScalarResult());
$query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\BasketElement b'); $query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\BasketElement b');
$this->assertEquals(0, $query->getSingleScalarResult()); $this->assertEquals(1, $query->getSingleScalarResult());
$query = self::$DI['app']['EM']->createQuery('SELECT COUNT(v.id) FROM \Alchemy\Phrasea\Model\Entities\ValidationSession v'); $query = self::$DI['app']['EM']->createQuery('SELECT COUNT(v.id) FROM \Alchemy\Phrasea\Model\Entities\ValidationSession v');
$this->assertEquals(0, $query->getSingleScalarResult()); $this->assertEquals(0, $query->getSingleScalarResult());
$query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b'); $query = self::$DI['app']['EM']->createQuery('SELECT COUNT(b.id) FROM \Alchemy\Phrasea\Model\Entities\Basket b');
$this->assertEquals(0, $query->getSingleScalarResult()); $this->assertEquals(3, $query->getSingleScalarResult());
} }
} }

View File

@@ -42,13 +42,8 @@ class BridgeApplication extends \PhraseanetAuthenticatedWebTestCase
*/ */
public function testManager() public function testManager()
{ {
$accounts = \Bridge_Account::get_accounts_by_user(self::$DI['app'], self::$DI['user']); self::$DI['client']->request('POST', '/prod/bridge/manager/', ['ssel' => 1]);
$usr_id = self::$DI['user']->get_id(); self::$DI['client']->getResponse()->getContent();
$basket = $this->insertOneBasket();
$crawler = self::$DI['client']->request('POST', '/prod/bridge/manager/', ['ssel' => $basket->getId()]);
$pageContent = self::$DI['client']->getResponse()->getContent();
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
} }

View File

@@ -104,7 +104,7 @@ class DownloadTest extends \PhraseanetAuthenticatedWebTestCase
*/ */
public function testDownloadBasket() public function testDownloadBasket()
{ {
$basket = $this->insertOneBasketEnv(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$eventManagerStub = $this->getMockBuilder('\eventsmanager_broker') $eventManagerStub = $this->getMockBuilder('\eventsmanager_broker')
->disableOriginalConstructor() ->disableOriginalConstructor()
@@ -136,7 +136,7 @@ class DownloadTest extends \PhraseanetAuthenticatedWebTestCase
*/ */
public function testDownloadBasketValidation() public function testDownloadBasketValidation()
{ {
$basket = $this->insertOneValidationBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 4);
$eventManagerStub = $this->getMockBuilder('\eventsmanager_broker') $eventManagerStub = $this->getMockBuilder('\eventsmanager_broker')
->disableOriginalConstructor() ->disableOriginalConstructor()

View File

@@ -10,8 +10,6 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
{ {
public function testRequestAvailable() public function testRequestAvailable()
{ {
$feed = $this->insertOneFeed(self::$DI['user']);
$crawler = self::$DI['client']->request('POST', '/prod/feeds/requestavailable/'); $crawler = self::$DI['client']->request('POST', '/prod/feeds/requestavailable/');
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser(self::$DI['app']['acl']->get(self::$DI['user'])); $feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser(self::$DI['app']['acl']->get(self::$DI['user']));
@@ -32,7 +30,7 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
->method('deliver') ->method('deliver')
->with($this->isInstanceOf('Alchemy\Phrasea\Notification\Mail\MailInfoNewPublication'), $this->equalTo(null)); ->with($this->isInstanceOf('Alchemy\Phrasea\Notification\Mail\MailInfoNewPublication'), $this->equalTo(null));
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$params = [ $params = [
"feed_id" => $feed->getId() "feed_id" => $feed->getId()
, "notify" => 1 , "notify" => 1
@@ -43,7 +41,7 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
, 'lst' => self::$DI['record_1']->get_serialize_key() , 'lst' => self::$DI['record_1']->get_serialize_key()
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/create/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/create/', $params);
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type"));
$pageContent = json_decode(self::$DI['client']->getResponse()->getContent()); $pageContent = json_decode(self::$DI['client']->getResponse()->getContent());
@@ -62,14 +60,14 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
, "author_mail" => "robert@kikoo.mail" , "author_mail" => "robert@kikoo.mail"
, 'lst' => self::$DI['record_1']->get_serialize_key() , 'lst' => self::$DI['record_1']->get_serialize_key()
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/create/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/create/', $params);
$this->assertFalse(self::$DI['client']->getResponse()->isOk()); $this->assertFalse(self::$DI['client']->getResponse()->isOk());
$this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testEntryCreateUnauthorized() public function testEntryCreateUnauthorized()
{ {
$feed = $this->insertOneFeed(self::$DI['user_alt1']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 3);
self::$DI['app']['notification.deliverer'] = $this->getMockBuilder('Alchemy\Phrasea\Notification\Deliverer') self::$DI['app']['notification.deliverer'] = $this->getMockBuilder('Alchemy\Phrasea\Notification\Deliverer')
->disableOriginalConstructor() ->disableOriginalConstructor()
@@ -87,15 +85,15 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
, 'lst' => self::$DI['record_1']->get_serialize_key() , 'lst' => self::$DI['record_1']->get_serialize_key()
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/create/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/create/', $params);
$this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testEntryEdit() public function testEntryEdit()
{ {
$entry = $this->insertOneFeedEntry(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$entry = $feed->getEntries()->first();
$crawler = self::$DI['client']->request('GET', '/prod/feeds/entry/' . $entry->getId() . '/edit/'); $crawler = self::$DI['client']->request('GET', '/prod/feeds/entry/' . $entry->getId() . '/edit/');
$pageContent = self::$DI['client']->getResponse()->getContent();
foreach ($entry->getItems() as $content) { foreach ($entry->getItems() as $content) {
$this->assertEquals(1, $crawler->filterXPath("//input[@value='" . $content->getId() . "' and @name='item_id']")->count()); $this->assertEquals(1, $crawler->filterXPath("//input[@value='" . $content->getId() . "' and @name='item_id']")->count());
@@ -110,16 +108,18 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
public function testEntryEditUnauthorized() public function testEntryEditUnauthorized()
{ {
$entry = $this->insertOneFeedEntry(self::$DI['user_alt1']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 3);
$entry = $feed->getEntries()->first();
$crawler = self::$DI['client']->request('GET', '/prod/feeds/entry/' . $entry->getId() . '/edit/'); self::$DI['client']->request('GET', '/prod/feeds/entry/' . $entry->getId() . '/edit/');
$pageContent = self::$DI['client']->getResponse(); $pageContent = self::$DI['client']->getResponse();
$this->assertEquals(403, $pageContent->getStatusCode()); $this->assertEquals(403, $pageContent->getStatusCode());
} }
public function testEntryUpdate() public function testEntryUpdate()
{ {
$entry = $this->insertOneFeedEntry(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$entry = $feed->getEntries()->first();
$params = [ $params = [
"title" => "dog", "title" => "dog",
@@ -129,7 +129,7 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
'lst' => self::$DI['record_1']->get_serialize_key(), 'lst' => self::$DI['record_1']->get_serialize_key(),
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params);
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type"));
$pageContent = json_decode(self::$DI['client']->getResponse()->getContent()); $pageContent = json_decode(self::$DI['client']->getResponse()->getContent());
@@ -142,8 +142,9 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
public function testEntryUpdateChangeFeed() public function testEntryUpdateChangeFeed()
{ {
$entry = $this->insertOneFeedEntry(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$newfeed = $this->insertOneFeed(self::$DI['user'], "test2"); $entry = $feed->getEntries()->first();
$newfeed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 2);
$params = [ $params = [
"feed_id" => $newfeed->getId(), "feed_id" => $newfeed->getId(),
@@ -153,7 +154,7 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
"author_mail" => "mouse", "author_mail" => "mouse",
'lst' => self::$DI['record_1']->get_serialize_key(), 'lst' => self::$DI['record_1']->get_serialize_key(),
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params);
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type"));
$pageContent = json_decode(self::$DI['client']->getResponse()->getContent()); $pageContent = json_decode(self::$DI['client']->getResponse()->getContent());
@@ -169,8 +170,9 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
public function testEntryUpdateChangeFeedNoAccess() public function testEntryUpdateChangeFeedNoAccess()
{ {
$entry = $this->insertOneFeedEntry(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$newfeed = $this->insertOneFeed(self::$DI['user_alt1'], "test2"); $entry = $feed->getEntries()->first();
$newfeed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 3);
$newfeed->setCollection(self::$DI['collection_no_access']); $newfeed->setCollection(self::$DI['collection_no_access']);
self::$DI['app']['EM']->persist($newfeed); self::$DI['app']['EM']->persist($newfeed);
self::$DI['app']['EM']->flush(); self::$DI['app']['EM']->flush();
@@ -184,13 +186,14 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
'lst' => self::$DI['record_1']->get_serialize_key(), 'lst' => self::$DI['record_1']->get_serialize_key(),
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params);
$this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testEntryUpdateChangeFeedInvalidFeed() public function testEntryUpdateChangeFeedInvalidFeed()
{ {
$entry = $this->insertOneFeedEntry(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$entry = $feed->getEntries()->first();
$params = [ $params = [
"feed_id" => 0, "feed_id" => 0,
@@ -201,13 +204,12 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
'lst' => self::$DI['record_1']->get_serialize_key(), 'lst' => self::$DI['record_1']->get_serialize_key(),
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params);
$this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testEntryUpdateNotFound() public function testEntryUpdateNotFound()
{ {
$params = [ $params = [
"feed_id" => 9999999 "feed_id" => 9999999
, "title" => "dog" , "title" => "dog"
@@ -217,18 +219,14 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
, 'lst' => self::$DI['record_1']->get_serialize_key() , 'lst' => self::$DI['record_1']->get_serialize_key()
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/99999999/update/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/99999999/update/', $params);
$response = self::$DI['client']->getResponse();
$pageContent = json_decode($response->getContent());
$this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testEntryUpdateFailed() public function testEntryUpdateFailed()
{ {
$entry = $this->insertOneFeedEntry(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$entry = $feed->getEntries()->first(['user']);
$params = [ $params = [
"feed_id" => 9999999 "feed_id" => 9999999
@@ -239,20 +237,14 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
, 'sorted_lst' => self::$DI['record_1']->get_serialize_key() . ";" . self::$DI['record_2']->get_serialize_key() . ";12345;" . "unknow_unknow" , 'sorted_lst' => self::$DI['record_1']->get_serialize_key() . ";" . self::$DI['record_2']->get_serialize_key() . ";12345;" . "unknow_unknow"
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params);
$response = self::$DI['client']->getResponse();
$this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testEntryUpdateUnauthorized() public function testEntryUpdateUnauthorized()
{ {
/** $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 3);
* I CREATE A FEED THAT IS NOT MINE $entry = $feed->getEntries()->first();
* */
$entry = $this->insertOneFeedEntry(self::$DI['user_alt1']);
$params = [ $params = [
"feed_id" => $entry->getFeed()->getId() "feed_id" => $entry->getFeed()->getId()
@@ -263,26 +255,18 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
, 'lst' => self::$DI['record_1']->get_serialize_key() , 'lst' => self::$DI['record_1']->get_serialize_key()
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params);
$response = self::$DI['client']->getResponse();
$this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode());; $this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode());;
} }
public function testEntryUpdateChangeOrder() public function testEntryUpdateChangeOrder()
{ {
$item1 = $this->insertOneFeedItem(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$entry = $item1->getEntry(); $entry = $feed->getEntries()->first();
$item2 = new FeedItem();
$item2->setEntry($entry)
->setRecordId(self::$DI['record_2']->get_record_id())
->setSbasId(self::$DI['record_2']->get_sbas_id());
$entry->addItem($item2);
self::$DI['app']['EM']->persist($entry); $items = $entry->getItems()->toArray();
self::$DI['app']['EM']->persist($item2); $item1 = array_shift($items);
self::$DI['app']['EM']->flush(); $item2 = array_shift($items);
$ord1 = $item1->getOrd(); $ord1 = $item1->getOrd();
$ord2 = $item2->getOrd(); $ord2 = $item2->getOrd();
@@ -295,7 +279,7 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
. $item2->getId() . '_' . $item1->getOrd() . $item2->getId() . '_' . $item1->getOrd()
]; ];
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params); self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/update/', $params);
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$newItem1 = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->find($item1->getId()); $newItem1 = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->find($item1->getId());
@@ -307,9 +291,10 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
public function testDelete() public function testDelete()
{ {
$entry = $this->insertOneFeedEntry(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$entry = $feed->getEntries()->first();
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/delete/'); self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/delete/');
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type"));
@@ -330,47 +315,30 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
public function testDeleteNotFound() public function testDeleteNotFound()
{ {
self::$DI['client']->request('POST', '/prod/feeds/entry/9999999/delete/');
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/9999999/delete/');
$response = self::$DI['client']->getResponse();
$pageContent = json_decode(self::$DI['client']->getResponse()->getContent());
$this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(404, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testDeleteUnauthorized() public function testDeleteUnauthorized()
{ {
/** $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 3);
* I CREATE A FEED $entry = $feed->getEntries()->first();
* */
$entry = $this->insertOneFeedEntry(self::$DI['user_alt1']);
$crawler = self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/delete/');
$response = self::$DI['client']->getResponse();
$pageContent = json_decode(self::$DI['client']->getResponse()->getContent());
self::$DI['client']->request('POST', '/prod/feeds/entry/' . $entry->getId() . '/delete/');
$this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode());
} }
public function testRoot() public function testRoot()
{ {
$crawler = self::$DI['client']->request('GET', '/prod/feeds/'); $crawler = self::$DI['client']->request('GET', '/prod/feeds/');
$pageContent = self::$DI['client']->getResponse()->getContent();
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser(self::$DI['app']['acl']->get(self::$DI['user'])); $feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser(self::$DI['app']['acl']->get(self::$DI['user']));
foreach ($feeds as $one_feed) { foreach ($feeds as $one_feed) {
$path = CssSelector::toXPath("ul.submenu a[href='/prod/feeds/feed/" . $one_feed->getId() . "/']"); $path = CssSelector::toXPath("ul.submenu a[href='/prod/feeds/feed/" . $one_feed->getId() . "/']");
$msg = sprintf("user %s has access to feed %s", self::$DI['user']->getId(), $one_feed->getId()); $msg = sprintf("user %s has access to feed %s", self::$DI['user']->get_id(), $one_feed->getId());
if ($one_feed->has_access(self::$DI['user'])) { if ($one_feed->hasAccess(self::$DI['user'], self::$DI['app'])) {
$this->assertEquals(1, $crawler->filterXPath($path)->count(), $msg); $this->assertEquals(1, $crawler->filterXPath($path)->count(), $msg);
} else { } else {
$this->fail('FeedRepository::getAllForUser should return feeds I am allowed to access'); $this->fail('FeedRepository::getAllForUser should return feeds I am allowed to access');
@@ -380,13 +348,9 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
public function testGetFeed() public function testGetFeed()
{ {
$feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$feed = $this->insertOneFeed(self::$DI['user']);
$feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser(self::$DI['app']['acl']->get(self::$DI['user'])); $feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser(self::$DI['app']['acl']->get(self::$DI['user']));
$crawler = self::$DI['client']->request('GET', '/prod/feeds/feed/' . $feed->getId() . "/"); $crawler = self::$DI['client']->request('GET', '/prod/feeds/feed/' . $feed->getId() . "/");
$pageContent = self::$DI['client']->getResponse()->getContent();
foreach ($feeds as $one_feed) { foreach ($feeds as $one_feed) {
$path = CssSelector::toXPath("ul.submenu a[href='/prod/feeds/feed/" . $one_feed->getId() . "/']"); $path = CssSelector::toXPath("ul.submenu a[href='/prod/feeds/feed/" . $one_feed->getId() . "/']");
@@ -402,8 +366,6 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
public function testSuscribeAggregate() public function testSuscribeAggregate()
{ {
$feed = $this->insertOneFeed(self::$DI['user']);
self::$DI['app']['feed.aggregate-link-generator'] = $this->getMockBuilder('Alchemy\Phrasea\Feed\Link\AggregateLinkGenerator') self::$DI['app']['feed.aggregate-link-generator'] = $this->getMockBuilder('Alchemy\Phrasea\Feed\Link\AggregateLinkGenerator')
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
@@ -436,7 +398,7 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
public function testSuscribe() public function testSuscribe()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['app']['feed.user-link-generator'] = $this->getMockBuilder('Alchemy\Phrasea\Feed\Link\FeedLinkGenerator') self::$DI['app']['feed.user-link-generator'] = $this->getMockBuilder('Alchemy\Phrasea\Feed\Link\FeedLinkGenerator')
->disableOriginalConstructor() ->disableOriginalConstructor()
@@ -452,7 +414,7 @@ class FeedTest extends \PhraseanetAuthenticatedWebTestCase
->with($this->isInstanceOf('\Alchemy\Phrasea\Model\Entities\Feed'), $this->isInstanceOf('\User_Adapter'), 'rss', null, false) ->with($this->isInstanceOf('\Alchemy\Phrasea\Model\Entities\Feed'), $this->isInstanceOf('\User_Adapter'), 'rss', null, false)
->will($this->returnValue($link)); ->will($this->returnValue($link));
$crawler = self::$DI['client']->request('GET', '/prod/feeds/subscribe/' . $feed->getId() . '/'); self::$DI['client']->request('GET', '/prod/feeds/subscribe/' . $feed->getId() . '/');
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type"));

View File

@@ -311,7 +311,7 @@ class LazaretTest extends \PhraseanetAuthenticatedWebTestCase
*/ */
public function testDenyElement() public function testDenyElement()
{ {
$lazaretFile = $this->insertOneLazaretFile(); $lazaretFile = self::$DI['lazaret_1'];
$route = sprintf('/prod/lazaret/%s/deny/', $lazaretFile->getId()); $route = sprintf('/prod/lazaret/%s/deny/', $lazaretFile->getId());
@@ -336,8 +336,6 @@ class LazaretTest extends \PhraseanetAuthenticatedWebTestCase
*/ */
public function testEmptyLazaret() public function testEmptyLazaret()
{ {
$lazaretFile = $this->insertOneLazaretFile();
$route = sprintf('/prod/lazaret/empty/'); $route = sprintf('/prod/lazaret/empty/');
self::$DI['client']->request('POST', $route); self::$DI['client']->request('POST', $route);
@@ -353,8 +351,6 @@ class LazaretTest extends \PhraseanetAuthenticatedWebTestCase
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(0, $count); $this->assertEquals(0, $count);
$lazaretFile = null;
} }
/** /**

View File

@@ -31,7 +31,7 @@ class QueryTest extends \PhraseanetAuthenticatedWebTestCase
public function testQueryAnswerTrain() public function testQueryAnswerTrain()
{ {
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
self::$DI['record_24']; self::$DI['record_2'];
$options = new SearchEngineOptions(); $options = new SearchEngineOptions();
$options->onCollections(self::$DI['app']['acl']->get(self::$DI['app']['authentication']->getUser())->get_granted_base()); $options->onCollections(self::$DI['app']['acl']->get(self::$DI['app']['authentication']->getUser())->get_granted_base());

View File

@@ -79,7 +79,7 @@ class RecordsTest extends \PhraseanetAuthenticatedWebTestCase
public function testGetRecordDetailResult() public function testGetRecordDetailResult()
{ {
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
self::$DI['record_24']; self::$DI['record_1'];
$options = new SearchEngineOptions(); $options = new SearchEngineOptions();
$acl = self::$DI['app']['acl']->get(self::$DI['app']['authentication']->getUser()); $acl = self::$DI['app']['acl']->get(self::$DI['app']['authentication']->getUser());
@@ -145,18 +145,7 @@ class RecordsTest extends \PhraseanetAuthenticatedWebTestCase
public function testGetRecordDetailBasket() public function testGetRecordDetailBasket()
{ {
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$record = self::$DI['record_1'];
$basketElement = new \Alchemy\Phrasea\Model\Entities\BasketElement();
$basketElement->setBasket($basket);
$basketElement->setRecord($record);
$basketElement->setLastInBasket();
$basket->addElement($basketElement);
self::$DI['app']['EM']->persist($basket);
self::$DI['app']['EM']->flush();
$this->XMLHTTPRequest('POST', '/prod/records/', [ $this->XMLHTTPRequest('POST', '/prod/records/', [
'env' => 'BASK', 'env' => 'BASK',
@@ -192,8 +181,8 @@ class RecordsTest extends \PhraseanetAuthenticatedWebTestCase
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
$item = $this->insertOneFeedItem(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$feedEntry = $item->getEntry(); $feedEntry = $feed->getEntries()->first();
$this->XMLHTTPRequest('POST', '/prod/records/', [ $this->XMLHTTPRequest('POST', '/prod/records/', [
'env' => 'FEED', 'env' => 'FEED',

View File

@@ -15,7 +15,7 @@ class ControllerStoryTest extends \PhraseanetAuthenticatedWebTestCase
$collection = array_shift($collections); $collection = array_shift($collections);
$crawler = self::$DI['client']->request( self::$DI['client']->request(
'POST', $route, [ 'POST', $route, [
'base_id' => $collection->get_base_id(), 'base_id' => $collection->get_base_id(),
'name' => 'test story' 'name' => 'test story'
@@ -32,7 +32,7 @@ class ControllerStoryTest extends \PhraseanetAuthenticatedWebTestCase
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(1, $count); $this->assertEquals(2, $count);
} }
public function testRootPostJSON() public function testRootPostJSON()

View File

@@ -10,10 +10,7 @@ class ControllerTooltipTest extends \PhraseanetAuthenticatedWebTestCase
public function testRouteBasket() public function testRouteBasket()
{ {
$crawler = self::$DI['client']->request('POST', '/prod/tooltip/basket/1/');
$basket = $this->insertOneBasket();
$crawler = self::$DI['client']->request('POST', '/prod/tooltip/basket/' . $basket->getId() . '/');
$pageContent = self::$DI['client']->getResponse()->getContent(); $pageContent = self::$DI['client']->getResponse()->getContent();
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
} }

View File

@@ -11,13 +11,6 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
*/ */
public function testRouteSlash() public function testRouteSlash()
{ {
$this->insertOneUsrListEntry(self::$DI['user'], self::$DI['user']);
$this->insertOneUsrListEntry(self::$DI['user'], self::$DI['user_alt1']);
$this->insertOneUsrListEntry(self::$DI['user'], self::$DI['user']);
$this->insertOneUsrListEntry(self::$DI['user'], self::$DI['user_alt1']);
$this->insertOneUsrListEntry(self::$DI['user_alt1'], self::$DI['user_alt1']);
$this->insertOneUsrListEntry(self::$DI['user_alt1'], self::$DI['user_alt2']);
$route = '/prod/lists/all/'; $route = '/prod/lists/all/';
self::$DI['client']->request('GET', $route, [], [], ["HTTP_CONTENT_TYPE" => "application/json", "HTTP_ACCEPT" => "application/json"]); self::$DI['client']->request('GET', $route, [], [], ["HTTP_CONTENT_TYPE" => "application/json", "HTTP_ACCEPT" => "application/json"]);
@@ -29,7 +22,7 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
$datas = (array) json_decode($response->getContent()); $datas = (array) json_decode($response->getContent());
$this->assertEquals(4, count($datas['result'])); $this->assertEquals(1, count($datas['result']));
} }
private function checkList($list, $owners = true, $users = true) private function checkList($list, $owners = true, $users = true)
@@ -91,7 +84,7 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
public function testGetList() public function testGetList()
{ {
$entry = $this->insertOneUsrListEntry(self::$DI['user'], self::$DI['user_alt1']); $entry = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\UsrListEntry', 2);
$list_id = $entry->getList()->getId(); $list_id = $entry->getList()->getId();
$route = '/prod/lists/list/' . $list_id . '/'; $route = '/prod/lists/list/' . $list_id . '/';
@@ -111,7 +104,7 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostUpdate() public function testPostUpdate()
{ {
$entry = $this->insertOneUsrListEntry(self::$DI['user'], self::$DI['user_alt1']); $entry = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\UsrListEntry', 2);
$list_id = $entry->getList()->getId(); $list_id = $entry->getList()->getId();
$route = '/prod/lists/list/' . $list_id . '/update/'; $route = '/prod/lists/list/' . $list_id . '/update/';
@@ -147,7 +140,7 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostDelete() public function testPostDelete()
{ {
$entry = $this->insertOneUsrListEntry(self::$DI['user'], self::$DI['user_alt1']); $entry = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\UsrListEntry', 2);
$list_id = $entry->getList()->getId(); $list_id = $entry->getList()->getId();
$route = '/prod/lists/list/' . $list_id . '/delete/'; $route = '/prod/lists/list/' . $list_id . '/delete/';
@@ -173,7 +166,7 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostRemoveEntry() public function testPostRemoveEntry()
{ {
$entry = $this->insertOneUsrListEntry(self::$DI['user'], self::$DI['user_alt1']); $entry = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\UsrListEntry', 2);
$list_id = $entry->getList()->getId(); $list_id = $entry->getList()->getId();
$usr_id = $entry->getUser(self::$DI['app'])->get_id(); $usr_id = $entry->getUser(self::$DI['app'])->get_id();
$entry_id = $entry->getId(); $entry_id = $entry->getId();
@@ -201,13 +194,13 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostAddEntry() public function testPostAddEntry()
{ {
$list = $this->insertOneUsrList(self::$DI['user']); $list = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\UsrList', 1);
$this->assertEquals(0, $list->getEntries()->count()); $this->assertEquals(2, $list->getEntries()->count());
$route = '/prod/lists/list/' . $list->getId() . '/add/'; $route = '/prod/lists/list/' . $list->getId() . '/add/';
self::$DI['client']->request('POST', $route, ['usr_ids' => [self::$DI['user']->get_id()]], [], ["HTTP_CONTENT_TYPE" => "application/json", "HTTP_ACCEPT" => "application/json"]); self::$DI['client']->request('POST', $route, ['usr_ids' => [self::$DI['user_alt2']->get_id()]], [], ["HTTP_CONTENT_TYPE" => "application/json", "HTTP_ACCEPT" => "application/json"]);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
@@ -220,17 +213,12 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
$this->assertArrayHasKey('message', $datas); $this->assertArrayHasKey('message', $datas);
$this->assertTrue($datas['success']); $this->assertTrue($datas['success']);
$this->assertEquals(3, $list->getEntries()->count());
$repository = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\UsrList');
$list = $repository->find($list->getId());
$this->assertEquals(1, $list->getEntries()->count());
} }
public function testPostShareList() public function testPostShareList()
{ {
$list = $this->insertOneUsrList(self::$DI['user']); $list = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\UsrList', 1);
$this->assertEquals(1, $list->getOwners()->count()); $this->assertEquals(1, $list->getOwners()->count());
@@ -277,8 +265,7 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostUnShareList() public function testPostUnShareList()
{ {
$list = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\UsrList', 1);
$list = $this->insertOneUsrList(self::$DI['user']);
$this->assertEquals(1, $list->getOwners()->count()); $this->assertEquals(1, $list->getOwners()->count());
@@ -328,8 +315,7 @@ class ControllerUsrListsTest extends \PhraseanetAuthenticatedWebTestCase
public function testPostUnShareFail() public function testPostUnShareFail()
{ {
$list = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\UsrList', 1);
$list = $this->insertOneUsrList(self::$DI['user']);
$this->assertEquals(1, $list->getOwners()->count()); $this->assertEquals(1, $list->getOwners()->count());

View File

@@ -9,8 +9,6 @@ class ControllerWorkZoneTest extends \PhraseanetAuthenticatedWebTestCase
public function testRootGet() public function testRootGet()
{ {
$this->insertOneWZ();
$route = "/prod/WorkZone/"; $route = "/prod/WorkZone/";
self::$DI['client']->request('GET', $route); self::$DI['client']->request('GET', $route);
@@ -33,7 +31,7 @@ class ControllerWorkZoneTest extends \PhraseanetAuthenticatedWebTestCase
public function testAttachStoryToWZ() public function testAttachStoryToWZ()
{ {
$story = self::$DI['record_story_1']; $story = self::$DI['record_story_2'];
$route = sprintf("/prod/WorkZone/attachStories/"); $route = sprintf("/prod/WorkZone/attachStories/");
self::$DI['client']->request('POST', $route, ['stories' => [$story->get_serialize_key()]]); self::$DI['client']->request('POST', $route, ['stories' => [$story->get_serialize_key()]]);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
@@ -42,13 +40,11 @@ class ControllerWorkZoneTest extends \PhraseanetAuthenticatedWebTestCase
$em = self::$DI['app']['EM']; $em = self::$DI['app']['EM'];
/* @var $em \Doctrine\ORM\EntityManager */ /* @var $em \Doctrine\ORM\EntityManager */
$query = $em->createQuery( $query = $em->createQuery('SELECT COUNT(w.id) FROM \Alchemy\Phrasea\Model\Entities\StoryWZ w');
'SELECT COUNT(w.id) FROM \Alchemy\Phrasea\Model\Entities\StoryWZ w'
);
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(1, $count); $this->assertEquals(2, $count);
} }
public function testAttachMultipleStoriesToWZ() public function testAttachMultipleStoriesToWZ()
@@ -66,35 +62,18 @@ class ControllerWorkZoneTest extends \PhraseanetAuthenticatedWebTestCase
$em = self::$DI['app']['EM']; $em = self::$DI['app']['EM'];
/* @var $em \Doctrine\ORM\EntityManager */ /* @var $em \Doctrine\ORM\EntityManager */
$query = $em->createQuery( $query = $em->createQuery('SELECT COUNT(w.id) FROM \Alchemy\Phrasea\Model\Entities\StoryWZ w');
'SELECT COUNT(w.id) FROM \Alchemy\Phrasea\Model\Entities\StoryWZ w'
);
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(2, $count); $this->assertEquals(2, $count);
$query = $em->createQuery(
'SELECT w FROM \Alchemy\Phrasea\Model\Entities\StoryWZ w'
);
$storyWZ = $query->getResult();
$em->remove(array_shift($storyWZ));
$em->flush();
} }
public function testAttachExistingStory() public function testAttachExistingStory()
{ {
$story = self::$DI['record_story_1']; $story = self::$DI['record_story_2'];
$route = sprintf("/prod/WorkZone/attachStories/"); $route = sprintf("/prod/WorkZone/attachStories/");
$StoryWZ = new \Alchemy\Phrasea\Model\Entities\StoryWZ(); $storyWZ = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\StoryWZ', 1);
$StoryWZ->setUser(self::$DI['app']['authentication']->getUser());
$StoryWZ->setRecord($story);
self::$DI['app']['EM']->persist($StoryWZ);
self::$DI['app']['EM']->flush();
self::$DI['client']->request('POST', $route, ['stories' => [$story->get_serialize_key()]]); self::$DI['client']->request('POST', $route, ['stories' => [$story->get_serialize_key()]]);
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
@@ -104,12 +83,12 @@ class ControllerWorkZoneTest extends \PhraseanetAuthenticatedWebTestCase
$em = self::$DI['app']['EM']; $em = self::$DI['app']['EM'];
/* @var $em \Doctrine\ORM\EntityManager */ /* @var $em \Doctrine\ORM\EntityManager */
$query = $em->createQuery( $query = $em->createQuery(
'SELECT COUNT(w.id) FROM \Alchemy\Phrasea\Model\Entities\StoryWZ w' 'SELECT COUNT(w.id) FROM \Alchemy\Phrasea\Model\Entities\StoryWZ w'
); );
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(1, $count); $this->assertEquals(2, $count);
} }
public function testAttachStoryToWZJson() public function testAttachStoryToWZJson()
@@ -137,7 +116,7 @@ class ControllerWorkZoneTest extends \PhraseanetAuthenticatedWebTestCase
public function testDetachStoryFromWZ() public function testDetachStoryFromWZ()
{ {
$story = self::$DI['record_story_1']; $story = self::$DI['record_story_2'];
$route = sprintf("/prod/WorkZone/detachStory/%s/%s/", $story->get_sbas_id(), $story->get_record_id()); $route = sprintf("/prod/WorkZone/detachStory/%s/%s/", $story->get_sbas_id(), $story->get_record_id());
//story not yet Attched //story not yet Attched
@@ -157,7 +136,7 @@ class ControllerWorkZoneTest extends \PhraseanetAuthenticatedWebTestCase
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(1, $count); $this->assertEquals(2, $count);
//detach //detach
self::$DI['client']->request('POST', $route); self::$DI['client']->request('POST', $route);
@@ -170,7 +149,7 @@ class ControllerWorkZoneTest extends \PhraseanetAuthenticatedWebTestCase
$count = $query->getSingleScalarResult(); $count = $query->getSingleScalarResult();
$this->assertEquals(0, $count); $this->assertEquals(1, $count);
//attach //attach
self::$DI['client']->request('POST', $attachRoute, ['stories' => [$story->get_serialize_key()]]); self::$DI['client']->request('POST', $attachRoute, ['stories' => [$story->get_serialize_key()]]);
@@ -199,18 +178,8 @@ class ControllerWorkZoneTest extends \PhraseanetAuthenticatedWebTestCase
public function testBrowseBasket() public function testBrowseBasket()
{ {
$basket = $this->insertOneBasket(); self::$DI['client']->request("GET", "/prod/WorkZone/Browse/Basket/1/");
self::$DI['client']->request("GET", "/prod/WorkZone/Browse/Basket/" . $basket->getId() . "/");
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
$this->assertTrue($response->isOk()); $this->assertTrue($response->isOk());
} }
public function testDetachStoryFromWZNotFound()
{
$story = self::$DI['record_story_1'];
$route = sprintf("/prod/WorkZone/detachStory/%s/%s/", $story->get_sbas_id(), 'unknow');
//story not yet Attched
}
} }

View File

@@ -11,8 +11,8 @@ class RecordsRequestTest extends \PhraseanetAuthenticatedTestCase
{ {
$request = new Request([ $request = new Request([
'lst' => implode(';', [ 'lst' => implode(';', [
self::$DI['record_24']->get_serialize_key(), self::$DI['record_3']->get_serialize_key(),
self::$DI['record_24']->get_serialize_key(), self::$DI['record_3']->get_serialize_key(),
self::$DI['record_2']->get_serialize_key(), self::$DI['record_2']->get_serialize_key(),
self::$DI['record_story_2']->get_serialize_key(), self::$DI['record_story_2']->get_serialize_key(),
self::$DI['record_no_access']->get_serialize_key(), self::$DI['record_no_access']->get_serialize_key(),
@@ -39,7 +39,7 @@ class RecordsRequestTest extends \PhraseanetAuthenticatedTestCase
$exploded = explode(';', $serialized); $exploded = explode(';', $serialized);
$this->assertEquals(3, count($exploded)); $this->assertEquals(3, count($exploded));
$this->assertContains(self::$DI['record_24']->get_serialize_key(), $exploded); $this->assertContains(self::$DI['record_3']->get_serialize_key(), $exploded);
$this->assertContains(self::$DI['record_2']->get_serialize_key(), $exploded); $this->assertContains(self::$DI['record_2']->get_serialize_key(), $exploded);
$this->assertContains(self::$DI['record_story_2']->get_serialize_key(), $exploded); $this->assertContains(self::$DI['record_story_2']->get_serialize_key(), $exploded);
$this->assertNotContains(self::$DI['record_no_access']->get_serialize_key(), $exploded); $this->assertNotContains(self::$DI['record_no_access']->get_serialize_key(), $exploded);
@@ -127,8 +127,8 @@ class RecordsRequestTest extends \PhraseanetAuthenticatedTestCase
{ {
$request = new Request([ $request = new Request([
'lst' => implode(';', [ 'lst' => implode(';', [
self::$DI['record_24']->get_serialize_key(), self::$DI['record_3']->get_serialize_key(),
self::$DI['record_24']->get_serialize_key(), self::$DI['record_3']->get_serialize_key(),
self::$DI['record_2']->get_serialize_key(), self::$DI['record_2']->get_serialize_key(),
self::$DI['record_story_2']->get_serialize_key(), self::$DI['record_story_2']->get_serialize_key(),
self::$DI['record_no_access']->get_serialize_key(), self::$DI['record_no_access']->get_serialize_key(),
@@ -150,7 +150,7 @@ class RecordsRequestTest extends \PhraseanetAuthenticatedTestCase
$this->assertEquals(2, count($exploded)); $this->assertEquals(2, count($exploded));
$this->assertContains(self::$DI['record_2']->get_serialize_key(), $exploded); $this->assertContains(self::$DI['record_2']->get_serialize_key(), $exploded);
$this->assertContains(self::$DI['record_24']->get_serialize_key(), $exploded); $this->assertContains(self::$DI['record_3']->get_serialize_key(), $exploded);
$this->assertNotContains(self::$DI['record_story_2']->get_serialize_key(), $exploded); $this->assertNotContains(self::$DI['record_story_2']->get_serialize_key(), $exploded);
$this->assertNotContains(self::$DI['record_no_access']->get_serialize_key(), $exploded); $this->assertNotContains(self::$DI['record_no_access']->get_serialize_key(), $exploded);
$this->assertNotContains(self::$DI['record_no_access_by_status']->get_serialize_key(), $exploded); $this->assertNotContains(self::$DI['record_no_access_by_status']->get_serialize_key(), $exploded);
@@ -158,7 +158,7 @@ class RecordsRequestTest extends \PhraseanetAuthenticatedTestCase
public function testSimpleBasket() public function testSimpleBasket()
{ {
$basketElement = $this->insertOneBasketElement(); $basketElement = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\BasketElement', 1);
$request = new Request(['ssel' => $basketElement->getBasket()->getId()]); $request = new Request(['ssel' => $basketElement->getBasket()->getId()]);
$records = RecordsRequest::fromRequest(self::$DI['app'], $request); $records = RecordsRequest::fromRequest(self::$DI['app'], $request);
@@ -177,34 +177,6 @@ class RecordsRequestTest extends \PhraseanetAuthenticatedTestCase
$this->assertContains($basketElement->getRecord(self::$DI['app'])->get_serialize_key(), $exploded); $this->assertContains($basketElement->getRecord(self::$DI['app'])->get_serialize_key(), $exploded);
} }
public function getBasket()
{
$elements = [
self::$DI['record_24'],
self::$DI['record_2'],
self::$DI['record_no_access'],
self::$DI['record_no_access_by_status'],
];
$basket = new \Alchemy\Phrasea\Model\Entities\Basket();
$basket->setName('test');
$basket->setOwner(self::$DI['app']['authentication']->getUser());
self::$DI['app']['EM']->persist($basket);
self::$DI['app']['EM']->flush();
foreach ($elements as $element) {
$basket_element = new \Alchemy\Phrasea\Model\Entities\BasketElement();
$basket_element->setRecord($element);
$basket_element->setBasket($basket);
$basket->addElement($basket_element);
self::$DI['app']['EM']->persist($basket_element);
self::$DI['app']['EM']->flush();
}
return $basket;
}
public function testSimpleStory() public function testSimpleStory()
{ {
$story = $this->getStoryWZ(); $story = $this->getStoryWZ();
@@ -230,7 +202,6 @@ class RecordsRequestTest extends \PhraseanetAuthenticatedTestCase
{ {
$story = $this->getStoryWZ(); $story = $this->getStoryWZ();
$request = new Request(['story' => $story->getId()]); $request = new Request(['story' => $story->getId()]);
$records = RecordsRequest::fromRequest(self::$DI['app'], $request, true); $records = RecordsRequest::fromRequest(self::$DI['app'], $request, true);
$this->assertEquals(0, count($records)); $this->assertEquals(0, count($records));
@@ -269,13 +240,6 @@ class RecordsRequestTest extends \PhraseanetAuthenticatedTestCase
private function getStoryWZ() private function getStoryWZ()
{ {
$story = new \Alchemy\Phrasea\Model\Entities\StoryWZ(); return self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\StoryWZ', 1);
$story->setRecord(self::$DI['record_story_2']);
$story->setUser(self::$DI['app']['authentication']->getUser());
self::$DI['app']['EM']->persist($story);
self::$DI['app']['EM']->flush();
return $story;
} }
} }

View File

@@ -27,7 +27,7 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testPublicFeedAggregated() public function testPublicFeedAggregated()
{ {
$this->insertOneFeed(self::$DI['user'], "test", true); self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 2);
self::$DI['client']->request('GET', '/feeds/aggregated/atom/'); self::$DI['client']->request('GET', '/feeds/aggregated/atom/');
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
@@ -72,8 +72,7 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testPublicFeed() public function testPublicFeed()
{ {
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
$feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 2);
$feed = $this->insertOneFeed(self::$DI['user'], "test1", true);
self::$DI['client']->request('GET', "/feeds/feed/" . $feed->getId() . "/atom/"); self::$DI['client']->request('GET', "/feeds/feed/" . $feed->getId() . "/atom/");
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
@@ -86,10 +85,7 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testUserFeedAggregated() public function testUserFeedAggregated()
{ {
$feed = $this->insertOneFeed(self::$DI['user']); $token = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\AggregateToken', 1);
$token = $this->insertOneAggregateToken(self::$DI['user']);
$tokenValue = $token->getValue(); $tokenValue = $token->getValue();
$this->logout(self::$DI['app']); $this->logout(self::$DI['app']);
@@ -105,19 +101,11 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testUserFeed() public function testUserFeed()
{ {
$this->authenticate(self::$DI['app']); $token = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\FeedToken', 1);
$feed = $this->insertOneFeed(self::$DI['user']);
$id = $feed->getId();
$token = $this->insertOneFeedToken($feed, self::$DI['user']);
$tokenValue = $token->getValue(); $tokenValue = $token->getValue();
$this->logout(self::$DI['app']); $this->logout(self::$DI['app']);
self::$DI['client']->request('GET', "/feeds/userfeed/$tokenValue/$id/atom/"); self::$DI['client']->request('GET', "/feeds/userfeed/$tokenValue/".$token->getFeed()->getId()."/atom/");
$response = self::$DI['client']->getResponse(); $response = self::$DI['client']->getResponse();
$this->evaluateResponse200($response); $this->evaluateResponse200($response);
@@ -128,16 +116,16 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testGetFeedFormat() public function testGetFeedFormat()
{ {
$feed = $this->insertOneFeed(self::$DI['user'], "test", true); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 2);
self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/rss/");
$crawler = self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/rss/");
$this->assertEquals("application/rss+xml", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/rss+xml", self::$DI['client']->getResponse()->headers->get("content-type"));
$xml = self::$DI['client']->getResponse()->getContent(); $xml = self::$DI['client']->getResponse()->getContent();
$this->verifyXML($xml); $this->verifyXML($xml);
$this->verifyRSS($feed, $xml); $this->verifyRSS($feed, $xml);
$crawler = self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/atom/"); self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/atom/");
$this->assertEquals("application/atom+xml", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/atom+xml", self::$DI['client']->getResponse()->headers->get("content-type"));
$xml = self::$DI['client']->getResponse()->getContent(); $xml = self::$DI['client']->getResponse()->getContent();
$this->verifyXML($xml); $this->verifyXML($xml);
@@ -146,9 +134,9 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testCooliris() public function testCooliris()
{ {
$feed = $this->insertOneFeed(self::$DI['user'], "test", true); self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 2);
$crawler = self::$DI['client']->request("GET", "/feeds/cooliris/"); self::$DI['client']->request("GET", "/feeds/cooliris/");
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$this->assertEquals("application/rss+xml", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/rss+xml", self::$DI['client']->getResponse()->headers->get("content-type"));
$xml = self::$DI['client']->getResponse()->getContent(); $xml = self::$DI['client']->getResponse()->getContent();
@@ -157,15 +145,12 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testAggregatedRss() public function testAggregatedRss()
{ {
$this->insertOneFeed(self::$DI['user'], "test1", true);
$this->insertOneFeed(self::$DI['user'], "test2", true);
$all_feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->findBy(['public' => true], ['updatedOn' => 'DESC']); $all_feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->findBy(['public' => true], ['updatedOn' => 'DESC']);
foreach ($all_feeds as $feed) { foreach ($all_feeds as $feed) {
$this->assertTrue($feed->isPublic()); $this->assertTrue($feed->isPublic());
} }
$crawler = self::$DI['client']->request("GET", "/feeds/aggregated/rss/"); self::$DI['client']->request("GET", "/feeds/aggregated/rss/");
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$this->assertEquals("application/rss+xml", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/rss+xml", self::$DI['client']->getResponse()->headers->get("content-type"));
$xml = self::$DI['client']->getResponse()->getContent(); $xml = self::$DI['client']->getResponse()->getContent();
@@ -174,15 +159,12 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testAggregatedAtom() public function testAggregatedAtom()
{ {
$this->insertOneFeed(self::$DI['user'], "test1", true);
$this->insertOneFeed(self::$DI['user'], "test2", true);
$all_feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->findBy(['public' => true], ['updatedOn' => 'DESC']); $all_feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->findBy(['public' => true], ['updatedOn' => 'DESC']);
foreach ($all_feeds as $feed) { foreach ($all_feeds as $feed) {
$this->assertTrue($feed->isPublic()); $this->assertTrue($feed->isPublic());
} }
$crawler = self::$DI['client']->request("GET", "/feeds/aggregated/atom/"); self::$DI['client']->request("GET", "/feeds/aggregated/atom/");
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$this->assertEquals("application/atom+xml", self::$DI['client']->getResponse()->headers->get("content-type")); $this->assertEquals("application/atom+xml", self::$DI['client']->getResponse()->headers->get("content-type"));
$xml = self::$DI['client']->getResponse()->getContent(); $xml = self::$DI['client']->getResponse()->getContent();
@@ -204,15 +186,15 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testGetFeedId() public function testGetFeedId()
{ {
$feed = $this->insertOneFeed(self::$DI['user'], "test1", true); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 2);
$crawler = self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/rss/"); self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/rss/");
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$xml = self::$DI['client']->getResponse()->getContent(); $xml = self::$DI['client']->getResponse()->getContent();
$this->verifyXML($xml); $this->verifyXML($xml);
$this->verifyRSS($feed, $xml); $this->verifyRSS($feed, $xml);
$crawler = self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/atom/"); self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/atom/");
$this->assertTrue(self::$DI['client']->getResponse()->isOk()); $this->assertTrue(self::$DI['client']->getResponse()->isOk());
$xml = self::$DI['client']->getResponse()->getContent(); $xml = self::$DI['client']->getResponse()->getContent();
$this->verifyATOM($feed, $xml); $this->verifyATOM($feed, $xml);
@@ -220,8 +202,7 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function testPrivateFeedAccess() public function testPrivateFeedAccess()
{ {
$feed = $this->insertOneFeed(self::$DI['user'], "test1", false); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/rss/"); self::$DI['client']->request("GET", "/feeds/feed/" . $feed->getId() . "/rss/");
$this->assertFalse(self::$DI['client']->getResponse()->isOk()); $this->assertFalse(self::$DI['client']->getResponse()->isOk());
$this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode()); $this->assertEquals(403, self::$DI['client']->getResponse()->getStatusCode());
@@ -347,7 +328,7 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function checkRSSEntryItemsNode(\DOMXPath $xpath, FeedEntry $entry, $count) public function checkRSSEntryItemsNode(\DOMXPath $xpath, FeedEntry $entry, $count)
{ {
$content = $entry->getItems(); $content = $entry->getItems()->toArray();
$available_medium = ['image', 'audio', 'video']; $available_medium = ['image', 'audio', 'video'];
array_walk($content, $this->removeBadItems($content, $available_medium)); array_walk($content, $this->removeBadItems($content, $available_medium));
$media_group = $xpath->query("/rss/channel/item[" . $count . "]/media:group"); $media_group = $xpath->query("/rss/channel/item[" . $count . "]/media:group");
@@ -390,7 +371,7 @@ class RssFeedTest extends \PhraseanetWebTestCase
{ {
$current_attributes = $this->parseAttributes($node); $current_attributes = $this->parseAttributes($node);
$is_thumbnail = false; $is_thumbnail = false;
$record = $entry_item->getRecord(); $record = $entry_item->getRecord(self::$DI['app']);
if (false !== strpos($current_attributes["url"], 'preview')) { if (false !== strpos($current_attributes["url"], 'preview')) {
$ressource = $record->get_subdef('preview'); $ressource = $record->get_subdef('preview');
@@ -533,7 +514,7 @@ class RssFeedTest extends \PhraseanetWebTestCase
if ($field["media_field"]["name"] == $node->nodeName && $role != false) { if ($field["media_field"]["name"] == $node->nodeName && $role != false) {
if ($p4field = $entry_item->getRecord()->get_caption()->get_dc_field($field["dc_field"])) { if ($p4field = $entry_item->getRecord(self::$DI['app'])->get_caption()->get_dc_field($field["dc_field"])) {
$this->assertEquals($p4field->get_serialized_values($field["separator"]), $node->nodeValue, sprintf('Asserting good value for DC %s', $field["dc_field"])); $this->assertEquals($p4field->get_serialized_values($field["separator"]), $node->nodeValue, sprintf('Asserting good value for DC %s', $field["dc_field"]));
if (sizeof($field["media_field"]["attributes"]) > 0) { if (sizeof($field["media_field"]["attributes"]) > 0) {
foreach ($node->attributes as $attribute) { foreach ($node->attributes as $attribute) {
@@ -552,12 +533,12 @@ class RssFeedTest extends \PhraseanetWebTestCase
public function removeBadItems(Array &$item_entries, Array $available_medium) public function removeBadItems(Array &$item_entries, Array $available_medium)
{ {
$remove = function ($entry_item, $key) use (&$item_entries, $available_medium) { $remove = function ($entry_item, $key) use (&$item_entries, $available_medium) {
$preview_sd = $entry_item->getRecord()->get_subdef('preview'); $preview_sd = $entry_item->getRecord(self::$DI['app'])->get_subdef('preview');
$url_preview = $preview_sd->get_permalink(); $url_preview = $preview_sd->get_permalink();
$thumbnail_sd = $entry_item->getRecord()->get_thumbnail(); $thumbnail_sd = $entry_item->getRecord(self::$DI['app'])->get_thumbnail();
$url_thumb = $thumbnail_sd->get_permalink(); $url_thumb = $thumbnail_sd->get_permalink();
if (!in_array(strtolower($entry_item->getRecord()->get_type()), $available_medium)) { if (!in_array(strtolower($entry_item->getRecord(self::$DI['app'])->get_type()), $available_medium)) {
unset($item_entries[$key]); //remove unset($item_entries[$key]); //remove
} }

View File

@@ -280,7 +280,7 @@ class ConfigurationTest extends \PhraseanetTestCase
$compiler->expects($this->once()) $compiler->expects($this->once())
->method('compile') ->method('compile')
->with(['main' => 'tiptop']) ->with(['main' => 'tiptop'])
->will($this->returnValue('<?php return array("main" => "tiptop");')); ->will($this->returnValue('<?php return ["main" => "tiptop"];'));
$yaml = $this->getMockBuilder('Symfony\Component\Yaml\Yaml') $yaml = $this->getMockBuilder('Symfony\Component\Yaml\Yaml')
->disableOriginalConstructor() ->disableOriginalConstructor()

View File

@@ -39,7 +39,7 @@ class BasketMiddlewareProviderTest extends MiddlewareProviderTestCase
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
self::$DI['app']->register(new BasketMiddlewareProvider()); self::$DI['app']->register(new BasketMiddlewareProvider());
$request = new Request(); $request = new Request();
$basket = $this->insertOneBasket(self::$DI['user']); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$request->attributes->set('basket', $basket->getId()); $request->attributes->set('basket', $basket->getId());
call_user_func(self::$DI['app']['middleware.basket.converter'], $request, self::$DI['app']); call_user_func(self::$DI['app']['middleware.basket.converter'], $request, self::$DI['app']);
$this->assertSame($basket, $request->attributes->get('basket')); $this->assertSame($basket, $request->attributes->get('basket'));
@@ -59,7 +59,7 @@ class BasketMiddlewareProviderTest extends MiddlewareProviderTestCase
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
self::$DI['app']->register(new BasketMiddlewareProvider()); self::$DI['app']->register(new BasketMiddlewareProvider());
$request = new Request(); $request = new Request();
$basket = $this->insertOneBasket(self::$DI['user']); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$request->attributes->set('basket', $basket); $request->attributes->set('basket', $basket);
call_user_func(self::$DI['app']['middleware.basket.user-access'], $request, self::$DI['app']); call_user_func(self::$DI['app']['middleware.basket.user-access'], $request, self::$DI['app']);
} }
@@ -69,7 +69,7 @@ class BasketMiddlewareProviderTest extends MiddlewareProviderTestCase
$this->authenticate(self::$DI['app']); $this->authenticate(self::$DI['app']);
self::$DI['app']->register(new BasketMiddlewareProvider()); self::$DI['app']->register(new BasketMiddlewareProvider());
$request = new Request(); $request = new Request();
$basket = $this->insertOneBasket(self::$DI['user_alt1']); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 3);
$request->attributes->set('basket', $basket); $request->attributes->set('basket', $basket);
$this->setExpectedException('Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException', 'Current user does not have access to the basket'); $this->setExpectedException('Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException', 'Current user does not have access to the basket');
call_user_func(self::$DI['app']['middleware.basket.user-access'], $request, self::$DI['app']); call_user_func(self::$DI['app']['middleware.basket.user-access'], $request, self::$DI['app']);

View File

@@ -12,8 +12,9 @@ class AggregateLinkGeneratorTest extends \PhraseanetTestCase
/** /**
* @dataProvider provideGenerationData * @dataProvider provideGenerationData
*/ */
public function testGenerate($expected, $format, $user, $page, $renew, $alreadyCreated) public function testGenerate($expected, $format, $page, $renew, $alreadyCreated)
{ {
$user = self::$DI['user'];
$feed = new Feed(); $feed = new Feed();
$feed->setTitle("title"); $feed->setTitle("title");
@@ -29,7 +30,7 @@ class AggregateLinkGeneratorTest extends \PhraseanetTestCase
->getMock(); ->getMock();
if ($alreadyCreated) { if ($alreadyCreated) {
$token = $this->insertOneAggregateToken($user); $token = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\AggregateToken', 1);
$tokenValue = $token->getValue(); $tokenValue = $token->getValue();
} }
@@ -98,40 +99,27 @@ class AggregateLinkGeneratorTest extends \PhraseanetTestCase
->getRepository('Alchemy\Phrasea\Model\Entities\AggregateToken') ->getRepository('Alchemy\Phrasea\Model\Entities\AggregateToken')
->findBy(['value' => $capture['token']])); ->findBy(['value' => $capture['token']]));
} }
$token = self::$DI['app']['EM']
->getRepository('Alchemy\Phrasea\Model\Entities\AggregateToken')
->findOneBy(['usrId' => $user->get_id()]);
self::$DI['app']['EM']->remove($token);
self::$DI['app']['EM']->flush();
} }
public function provideGenerationData() public function provideGenerationData()
{ {
$user = $this->getMockBuilder('User_Adapter')
->disableOriginalConstructor()
->getMock();
$user->expects($this->any())
->method('get_id')
->will($this->returnValue(42));
return [ return [
['doliprane', 'atom', $user, null, false, false], ['doliprane', 'atom', null, false, false],
['doliprane', 'atom', $user, null, false, true], ['doliprane', 'atom', null, false, true],
['doliprane', 'atom', $user, null, true, false], ['doliprane', 'atom', null, true, false],
['doliprane', 'atom', $user, null, true, true], ['doliprane', 'atom', null, true, true],
['doliprane', 'atom', $user, 1, false, false], ['doliprane', 'atom', 1, false, false],
['doliprane', 'atom', $user, 1, false, true], ['doliprane', 'atom', 1, false, true],
['doliprane', 'atom', $user, 1, true, false], ['doliprane', 'atom', 1, true, false],
['doliprane', 'atom', $user, 1, true, true], ['doliprane', 'atom', 1, true, true],
['doliprane', 'rss', $user, null, false, false], ['doliprane', 'rss', null, false, false],
['doliprane', 'rss', $user, null, false, true], ['doliprane', 'rss', null, false, true],
['doliprane', 'rss', $user, null, true, false], ['doliprane', 'rss', null, true, false],
['doliprane', 'rss', $user, null, true, true], ['doliprane', 'rss', null, true, true],
['doliprane', 'rss', $user, 1, false, false], ['doliprane', 'rss', 1, false, false],
['doliprane', 'rss', $user, 1, false, true], ['doliprane', 'rss', 1, false, true],
['doliprane', 'rss', $user, 1, true, false], ['doliprane', 'rss', 1, true, false],
['doliprane', 'rss', $user, 1, true, true], ['doliprane', 'rss', 1, true, true],
]; ];
} }

View File

@@ -10,17 +10,17 @@ class FeedLinkGeneratorTest extends \PhraseanetTestCase
/** /**
* @dataProvider provideGenerationData * @dataProvider provideGenerationData
*/ */
public function testGenerate($expected, $format, $feed, $user, $page, $renew, $alreadyCreated) public function testGenerate($expected, $format, $page, $renew, $alreadyCreated)
{ {
self::$DI['app']['EM']->persist($feed); $user = self::$DI['user'];
self::$DI['app']['EM']->flush(); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator') $generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator')
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
if ($alreadyCreated) { if ($alreadyCreated) {
$token = $this->insertOneFeedToken($feed, $user); $token = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\FeedToken', 1);
$tokenValue = $token->getValue(); $tokenValue = $token->getValue();
} }
@@ -43,10 +43,10 @@ class FeedLinkGeneratorTest extends \PhraseanetTestCase
$this->assertSame($expected, $link->getUri()); $this->assertSame($expected, $link->getUri());
if ($format == "atom") { if ($format == "atom") {
$this->assertSame("application/atom+xml", $link->getMimetype()); $this->assertSame("application/atom+xml", $link->getMimetype());
$this->assertSame("Title - Atom", $link->getTitle()); $this->assertSame("Feed test, YOLO! - Atom", $link->getTitle());
} elseif ($format == "rss") { } elseif ($format == "rss") {
$this->assertSame("application/rss+xml", $link->getMimetype()); $this->assertSame("application/rss+xml", $link->getMimetype());
$this->assertSame("Title - RSS", $link->getTitle()); $this->assertSame("Feed test, YOLO! - RSS", $link->getTitle());
} }
if ($alreadyCreated) { if ($alreadyCreated) {
@@ -93,20 +93,14 @@ class FeedLinkGeneratorTest extends \PhraseanetTestCase
->getRepository('Alchemy\Phrasea\Model\Entities\FeedToken') ->getRepository('Alchemy\Phrasea\Model\Entities\FeedToken')
->findBy(['value' => $capture['token']])); ->findBy(['value' => $capture['token']]));
} }
$token = self::$DI['app']['EM']
->getRepository('Alchemy\Phrasea\Model\Entities\FeedToken')
->findOneBy(['usrId' => $user->get_id(), 'feed' => $feed->getId()]);
self::$DI['app']['EM']->remove($token);
self::$DI['app']['EM']->flush();
} }
/** /**
* @dataProvider provideGenerationDataPublic * @dataProvider provideGenerationDataPublic
*/ */
public function testGeneratePublic($expected, $format, $feed, $page) public function testGeneratePublic($expected, $format, $page)
{ {
self::$DI['app']['EM']->persist($feed); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
self::$DI['app']['EM']->flush();
$generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator') $generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator')
->disableOriginalConstructor() ->disableOriginalConstructor()
@@ -131,10 +125,10 @@ class FeedLinkGeneratorTest extends \PhraseanetTestCase
$this->assertSame($expected, $link->getUri()); $this->assertSame($expected, $link->getUri());
if ($format == "atom") { if ($format == "atom") {
$this->assertSame("application/atom+xml", $link->getMimetype()); $this->assertSame("application/atom+xml", $link->getMimetype());
$this->assertSame("Title - Atom", $link->getTitle()); $this->assertSame("Feed test, YOLO! - Atom", $link->getTitle());
} elseif ($format == "rss") { } elseif ($format == "rss") {
$this->assertSame("application/rss+xml", $link->getMimetype()); $this->assertSame("application/rss+xml", $link->getMimetype());
$this->assertSame("Title - RSS", $link->getTitle()); $this->assertSame("Feed test, YOLO! - RSS", $link->getTitle());
} }
if (null !== $page) { if (null !== $page) {
@@ -146,47 +140,33 @@ class FeedLinkGeneratorTest extends \PhraseanetTestCase
public function provideGenerationData() public function provideGenerationData()
{ {
$user = $this->getMockBuilder('User_Adapter')
->disableOriginalConstructor()
->getMock();
$user->expects($this->any())
->method('get_id')
->will($this->returnValue(42));
$feed = new \Alchemy\Phrasea\Model\Entities\Feed();
$feed->setTitle('Title');
return [ return [
['doliprane', 'atom', $feed, $user, null, false, false], ['doliprane', 'atom', null, false, false],
['doliprane', 'atom', $feed, $user, null, false, true], ['doliprane', 'atom', null, false, true],
['doliprane', 'atom', $feed, $user, null, true, false], ['doliprane', 'atom', null, true, false],
['doliprane', 'atom', $feed, $user, null, true, true], ['doliprane', 'atom', null, true, true],
['doliprane', 'atom', $feed, $user, 1, false, false], ['doliprane', 'atom', 1, false, false],
['doliprane', 'atom', $feed, $user, 1, false, true], ['doliprane', 'atom', 1, false, true],
['doliprane', 'atom', $feed, $user, 1, true, false], ['doliprane', 'atom', 1, true, false],
['doliprane', 'atom', $feed, $user, 1, true, true], ['doliprane', 'atom', 1, true, true],
['doliprane', 'rss', $feed, $user, null, false, false], ['doliprane', 'rss', null, false, false],
['doliprane', 'rss', $feed, $user, null, false, true], ['doliprane', 'rss', null, false, true],
['doliprane', 'rss', $feed, $user, null, true, false], ['doliprane', 'rss', null, true, false],
['doliprane', 'rss', $feed, $user, null, true, true], ['doliprane', 'rss', null, true, true],
['doliprane', 'rss', $feed, $user, 1, false, false], ['doliprane', 'rss', 1, false, false],
['doliprane', 'rss', $feed, $user, 1, false, true], ['doliprane', 'rss', 1, false, true],
['doliprane', 'rss', $feed, $user, 1, true, false], ['doliprane', 'rss', 1, true, false],
['doliprane', 'rss', $feed, $user, 1, true, true], ['doliprane', 'rss', 1, true, true],
]; ];
} }
public function provideGenerationDataPublic() public function provideGenerationDataPublic()
{ {
$feed = new \Alchemy\Phrasea\Model\Entities\Feed();
$feed->setTitle('Title');
return [ return [
['doliprane', 'atom', $feed, null], ['doliprane', 'atom', null],
['doliprane', 'atom', $feed, 1], ['doliprane', 'atom', 1],
['doliprane', 'rss', $feed, null], ['doliprane', 'rss', null],
['doliprane', 'rss', $feed, 1] ['doliprane', 'rss', 1]
]; ];
} }
} }

View File

@@ -8,7 +8,7 @@ class BasketConverterTest extends \PhraseanetTestCase
{ {
public function testConvert() public function testConvert()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$converter = new BasketConverter(self::$DI['app']['EM']); $converter = new BasketConverter(self::$DI['app']['EM']);
$this->assertSame($basket, $converter->convert($basket->getId())); $this->assertSame($basket, $converter->convert($basket->getId()));

View File

@@ -9,16 +9,10 @@ class TaskConverterTest extends \PhraseanetTestCase
{ {
public function testConvert() public function testConvert()
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task
->setName('task 1')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
$converter = new TaskConverter(self::$DI['app']['EM']); $converter = new TaskConverter(self::$DI['app']['EM']);
$this->assertSame($task, $converter->convert($task->getId())); $this->assertSame($task, $converter->convert(1));
} }
/** /**

View File

@@ -97,7 +97,7 @@ class UserTest extends \PhraseanetTestCase
public function testIsTemplate() public function testIsTemplate()
{ {
$this->assertFalse($this->user->isTemplate()); $this->assertFalse($this->user->isTemplate());
$template = $this->insertOneUser('login2'); $template = new User();
$this->user->setModelOf($template); $this->user->setModelOf($template);
$this->assertTrue($this->user->isTemplate()); $this->assertTrue($this->user->isTemplate());
} }
@@ -116,10 +116,10 @@ class UserTest extends \PhraseanetTestCase
public function testSetModelOf() public function testSetModelOf()
{ {
$template = $this->insertOneUser('login'); $template = new User();
$user = $this->insertOneUser('login2'); $user = new User();
$template->setModelOf($user); $template->setModelOf($user);
$this->assertEquals('login2', $template->getModelOf()->getLogin()); $this->assertSame($user, $template->getModelOf());
} }
public function genderProvider() public function genderProvider()

View File

@@ -28,9 +28,9 @@ class UserManagerTest extends \PhraseanetTestCase
public function testUpdateUser() public function testUpdateUser()
{ {
$template = self::$DI['app']['manipulator.user']->createUser('template', 'password'); $template = self::$DI['app']['manipulator.user']->createUser('template'.uniqid(), 'password');
self::$DI['app']['model.user-manager']->update($template); self::$DI['app']['model.user-manager']->update($template);
$user = self::$DI['app']['manipulator.user']->createUser('login', 'password'); $user = self::$DI['app']['manipulator.user']->createUser('login'.uniqid(), 'password');
$user->setModelOf($template); $user->setModelOf($template);
self::$DI['app']['model.user-manager']->update($user); self::$DI['app']['model.user-manager']->update($user);
$this->assertNotNull($user->getPassword()); $this->assertNotNull($user->getPassword());

View File

@@ -16,13 +16,15 @@ class TaskManipulatorTest extends \PhraseanetTestCase
->with(Notifier::MESSAGE_CREATE); ->with(Notifier::MESSAGE_CREATE);
$manipulator = new TaskManipulator(self::$DI['app']['EM'], $notifier, self::$DI['app']['translator']); $manipulator = new TaskManipulator(self::$DI['app']['EM'], $notifier, self::$DI['app']['translator']);
$this->assertCount(0, $this->findAllTasks()); $this->assertCount(2, $this->findAllTasks());
$task = $manipulator->create('prout', 'bla bla', 'super settings', 0); $task = $manipulator->create('prout', 'bla bla', 'super settings', 0);
$this->assertEquals('prout', $task->getName()); $this->assertEquals('prout', $task->getName());
$this->assertEquals('bla bla', $task->getJobId()); $this->assertEquals('bla bla', $task->getJobId());
$this->assertEquals('super settings', $task->getSettings()); $this->assertEquals('super settings', $task->getSettings());
$this->assertEquals(0, $task->getPeriod()); $this->assertEquals(0, $task->getPeriod());
$this->assertSame([$task], $this->findAllTasks()); $allTasks = $this->findAllTasks();
$this->assertCount(3, $allTasks);
$this->assertContains($task, $allTasks);
return $task; return $task;
} }
@@ -39,7 +41,8 @@ class TaskManipulatorTest extends \PhraseanetTestCase
$task->setName('new name'); $task->setName('new name');
$this->assertSame($task, $manipulator->update($task)); $this->assertSame($task, $manipulator->update($task));
self::$DI['app']['EM']->clear(); self::$DI['app']['EM']->clear();
$this->assertEquals([$task], $this->findAllTasks()); $updated = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$this->assertEquals($task, $updated);
} }
public function testDelete() public function testDelete()
@@ -52,7 +55,7 @@ class TaskManipulatorTest extends \PhraseanetTestCase
$manipulator = new TaskManipulator(self::$DI['app']['EM'], $notifier, self::$DI['app']['translator']); $manipulator = new TaskManipulator(self::$DI['app']['EM'], $notifier, self::$DI['app']['translator']);
$task = $this->loadTask(); $task = $this->loadTask();
$manipulator->delete($task); $manipulator->delete($task);
$this->assertEquals([], $this->findAllTasks()); $this->assertNotContains($task, $this->findAllTasks());
} }
public function testStart() public function testStart()
@@ -121,7 +124,7 @@ class TaskManipulatorTest extends \PhraseanetTestCase
$tasks = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Task')->findAll(); $tasks = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Task')->findAll();
$this->assertSame('EmptyCollection', $task->getJobId()); $this->assertSame('EmptyCollection', $task->getJobId());
$this->assertSame([$task], $tasks); $this->assertContains($task, $tasks);
$settings = simplexml_load_string($task->getSettings()); $settings = simplexml_load_string($task->getSettings());
$this->assertEquals(42, (int) $settings->bas_id); $this->assertEquals(42, (int) $settings->bas_id);
} }
@@ -132,15 +135,7 @@ class TaskManipulatorTest extends \PhraseanetTestCase
private function loadTask() private function loadTask()
{ {
$task = new Task(); return self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task
->setName('test')
->setJobId('SuperSpace');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
return $task;
} }
private function createNotifierMock() private function createNotifierMock()

View File

@@ -2,68 +2,65 @@
namespace Alchemy\Tests\Phrasea\Model\Repositories; namespace Alchemy\Tests\Phrasea\Model\Repositories;
use Alchemy\Phrasea\Model\Entities\FeedItem;
class FeedItemRepositoryTest extends \PhraseanetTestCase class FeedItemRepositoryTest extends \PhraseanetTestCase
{ {
public function testIs_record_in_public_feedInPublicFeed() public function testIs_record_in_public_feedInPublicFeed()
{ {
$item = $this->insertOneFeedItem(self::$DI['user'], true); $record = self::$DI['record_7'];
$record = $item->getRecord(self::$DI['app']);
$this->assertTrue(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->isRecordInPublicFeed(self::$DI['app'], $record->get_sbas_id(), $record->get_record_id())); $this->assertTrue(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->isRecordInPublicFeed(self::$DI['app'], $record->get_sbas_id(), $record->get_record_id()));
} }
public function testIs_record_in_public_feedInPrivateFeed() public function testIs_record_in_public_feedInPrivateFeed()
{ {
$record = $this->insertOneFeedItem(self::$DI['user'], false)->getRecord(self::$DI['app']); $record = self::$DI['record_2'];
$this->assertFalse(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->isRecordInPublicFeed(self::$DI['app'], $record->get_sbas_id(), $record->get_record_id())); $this->assertFalse(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->isRecordInPublicFeed(self::$DI['app'], $record->get_sbas_id(), $record->get_record_id()));
} }
public function testLoadLatestItems() public function testLoadLatestItems()
{ {
$this->insertOneFeedItem(self::$DI['user'], true, 2); $this->assertCount(3, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->loadLatest(self::$DI['app'], 20));
$this->assertCount(2, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->loadLatest(self::$DI['app'], 20));
} }
public function testLoadLatestItemsLessItems() public function testLoadLatestItemsLessItems()
{ {
$this->insertOneFeedItem(self::$DI['user'], true, 2);
$this->assertCount(1, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->loadLatest(self::$DI['app'], 1)); $this->assertCount(1, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->loadLatest(self::$DI['app'], 1));
} }
public function testLoadLatestItemsNoPublic()
{
$this->insertOneFeedItem(self::$DI['user'], false, 2);
$this->assertCount(0, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->loadLatest(self::$DI['app'], 20));
}
public function testLoadLatestWithDeletedDatabox() public function testLoadLatestWithDeletedDatabox()
{ {
$record = $this->getMockBuilder('record_adapter') $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 2);
->disableOriginalConstructor() $entry = $feed->getEntries()->first();
->getMock(); $item = new FeedItem();
$record->expects($this->any()) $item->setEntry($entry)
->method('get_sbas_id') ->setOrd(4)
->will($this->returnValue(0)); ->setRecordId(self::$DI['record_1']->get_record_id())
$record->expects($this->any()) ->setSbasId(0);
->method('get_record_id') $entry->addItem($item);
->will($this->returnValue(self::$DI['record_1']->get_record_id()));
$this->insertOneFeedItem(self::$DI['user'], true, 1, $record); self::$DI['app']['EM']->persist($item);
$this->assertCount(0, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->loadLatest(self::$DI['app'], 20));
}
public function testLoadLatestWithDeletedRecord() $item = new FeedItem();
{ $item->setEntry($entry)
$record = $this->getMockBuilder('record_adapter') ->setOrd(4)
->disableOriginalConstructor() ->setRecordId(0)
->getMock(); ->setSbasId(self::$DI['record_1']->get_sbas_id());
$record->expects($this->any()) $entry->addItem($item);
->method('get_sbas_id')
->will($this->returnValue(self::$DI['record_1']->get_sbas_id()));
$record->expects($this->any())
->method('get_record_id')
->will($this->returnValue(0));
$this->insertOneFeedItem(self::$DI['user'], true, 1, $record); self::$DI['app']['EM']->persist($item);
$this->assertCount(0, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->loadLatest(self::$DI['app'], 20));
$item = new FeedItem();
$item->setEntry($entry)
->setOrd(4)
->setRecordId(self::$DI['record_1']->get_record_id())
->setSbasId(self::$DI['record_1']->get_record_id());
$entry->addItem($item);
self::$DI['app']['EM']->persist($item);
self::$DI['app']['EM']->persist($entry);
self::$DI['app']['EM']->flush();
$this->assertCount(4, self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\FeedItem')->loadLatest(self::$DI['app'], 20));
} }
} }

View File

@@ -8,19 +8,11 @@ class TaskRepositoryTest extends \PhraseanetTestCase
{ {
public function testFindActiveTask() public function testFindActiveTask()
{ {
$task1 = new Task(); $task1 = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task1 $task1->setStatus(Task::STATUS_STOPPED);
->setName('task 1') $task2 = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 2);
->setStatus(Task::STATUS_STOPPED)
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
$task2 = new Task();
$task2
->setName('task 2')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task1); self::$DI['app']['EM']->persist($task1);
self::$DI['app']['EM']->persist($task2);
self::$DI['app']['EM']->flush(); self::$DI['app']['EM']->flush();
$repository = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Task'); $repository = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Task');

View File

@@ -8,78 +8,20 @@ class UserRepositoryTest extends \PhraseanetTestCase
{ {
public function testFindAdminsWithNoAdmins() public function testFindAdminsWithNoAdmins()
{ {
$this->insertOneUser('login');
$users = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findAdmins();
$this->assertEquals(0, count($users));
}
public function testFindAdminsWithOneAdmin()
{
$this->insertOneUser('login', null, true);
$users = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findAdmins(); $users = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findAdmins();
$this->assertEquals(1, count($users)); $this->assertEquals(1, count($users));
} }
public function testFindAdminsWithOneAdminButTemplate()
{
$user = $this->insertOneUser('login');
$template = $this->insertOneUser('login2', null, true);
$template->setModelOf($user);
self::$DI['app']['EM']->persist($template);
self::$DI['app']['EM']->flush();
$users = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findAdmins();
$this->assertEquals(0, count($users));
}
public function testFindAdminsWithOneAdminButDeleted()
{
$user = $this->insertOneUser('login', null, true);
$user->setDeleted(true);
self::$DI['app']['EM']->persist($user);
self::$DI['app']['EM']->flush();
$users = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findAdmins();
$this->assertEquals(0, count($users));
}
public function testFindByLogin() public function testFindByLogin()
{ {
$this->insertOneUser('login'); $user = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findByLogin('user1');
$user = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findByLogin('login');
$this->assertInstanceOf('Alchemy\Phrasea\Model\Entities\User', $user); $this->assertInstanceOf('Alchemy\Phrasea\Model\Entities\User', $user);
$this->assertNull(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findByLogin('wrong-login')); $this->assertNull(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findByLogin('wrong-login'));
} }
public function testFindUserByEmail() public function testFindUserByEmail()
{ {
$this->insertOneUser('login', 'toto@toto.to'); $user = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findByEmail('user2@phraseanet.com');
$user = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findByEmail('toto@toto.to');
$this->assertInstanceOf('Alchemy\Phrasea\Model\Entities\User', $user); $this->assertInstanceOf('Alchemy\Phrasea\Model\Entities\User', $user);
} }
public function testFindUserByEmailButDeleted()
{
$user = $this->insertOneUser('login', 'toto@toto.to');
$user->setDeleted(true);
self::$DI['app']['EM']->persist($user);
self::$DI['app']['EM']->flush();
$this->assertNull(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findByEmail('toto@toto.to'));
}
public function testFindUserByEmailButNullEmail()
{
$user = $this->insertOneUser('login');
$user->setDeleted(true);
self::$DI['app']['EM']->persist($user);
self::$DI['app']['EM']->flush();
$this->assertNull(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\User')->findByEmail('toto@toto.to'));
}
} }

View File

@@ -19,7 +19,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
if (!self::$initialized) { if (!self::$initialized) {
$found = false; $found = false;
foreach (self::$DI['record_24']->get_databox()->get_meta_structure()->get_elements() as $field) { foreach (self::$DI['record_2']->get_databox()->get_meta_structure()->get_elements() as $field) {
if (!$field->isBusiness()) { if (!$field->isBusiness()) {
continue; continue;
} }
@@ -27,7 +27,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
} }
if (!$found) { if (!$found) {
$field = \databox_field::create(self::$DI['app'], self::$DI['record_24']->get_databox(), 'testBusiness' . mt_rand(), false); $field = \databox_field::create(self::$DI['app'], self::$DI['record_2']->get_databox(), 'testBusiness' . mt_rand(), false);
$field->set_business(true); $field->set_business(true);
$field->save(); $field->save();
} }
@@ -61,7 +61,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testQueryRecordId() public function testQueryRecordId()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'recordid=' . $record->get_record_id(); $query_string = 'recordid=' . $record->get_record_id();
self::$searchEngine->addRecord($record); self::$searchEngine->addRecord($record);
@@ -79,7 +79,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testQueryStoryId() public function testQueryStoryId()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'storyid=' . $record->get_record_id(); $query_string = 'storyid=' . $record->get_record_id();
self::$searchEngine->addRecord($record); self::$searchEngine->addRecord($record);
@@ -97,7 +97,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testQueryByDateMin() public function testQueryByDateMin()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'dateMin'; $query_string = 'boomboklot' . $record->get_record_id() . 'dateMin';
$this->editRecord($query_string, $record); $this->editRecord($query_string, $record);
@@ -168,7 +168,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testQueryByDateMax() public function testQueryByDateMax()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'dateMax'; $query_string = 'boomboklot' . $record->get_record_id() . 'dateMax';
$this->editRecord($query_string, $record); $this->editRecord($query_string, $record);
@@ -201,7 +201,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testQueryByDateRange() public function testQueryByDateRange()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'dateRange'; $query_string = 'boomboklot' . $record->get_record_id() . 'dateRange';
$this->editRecord($query_string, $record); $this->editRecord($query_string, $record);
@@ -267,7 +267,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testRecordNotIndexed() public function testRecordNotIndexed()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'defaultNotIndexed'; $query_string = 'boomboklot' . $record->get_record_id() . 'defaultNotIndexed';
$this->editRecord($query_string, $record); $this->editRecord($query_string, $record);
@@ -279,7 +279,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testAddRecord() public function testAddRecord()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'defaultAdd'; $query_string = 'boomboklot' . $record->get_record_id() . 'defaultAdd';
$this->editRecord($query_string, $record); $this->editRecord($query_string, $record);
@@ -294,7 +294,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testUpdateRecord() public function testUpdateRecord()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
self::$searchEngine->addRecord($record); self::$searchEngine->addRecord($record);
$this->updateIndex(); $this->updateIndex();
@@ -341,7 +341,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
$options->setLocale($language); $options->setLocale($language);
self::$searchEngine->setOptions($options); self::$searchEngine->setOptions($options);
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$index_string = sprintf( $index_string = sprintf(
'boomboklot%dstemmed%s %s', 'boomboklot%dstemmed%s %s',
$record->get_record_id(), $record->get_record_id(),
@@ -397,7 +397,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testUpdateQueryOnField() public function testUpdateQueryOnField()
{ {
$options = $this->getDefaultOptions(); $options = $this->getDefaultOptions();
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'onfield'; $query_string = 'boomboklot' . $record->get_record_id() . 'onfield';
@@ -417,7 +417,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testBusinessFieldAvailable() public function testBusinessFieldAvailable()
{ {
$options = $this->getDefaultOptions(); $options = $this->getDefaultOptions();
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'businessAvailable'; $query_string = 'boomboklot' . $record->get_record_id() . 'businessAvailable';
@@ -435,7 +435,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testBusinessFieldNotAvailable() public function testBusinessFieldNotAvailable()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'businessNotAvailable'; $query_string = 'boomboklot' . $record->get_record_id() . 'businessNotAvailable';
$this->editRecord($query_string, $record, true, true); $this->editRecord($query_string, $record, true, true);
@@ -452,7 +452,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
{ {
$options = $this->getDefaultOptions(); $options = $this->getDefaultOptions();
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'anotherfield'; $query_string = 'boomboklot' . $record->get_record_id() . 'anotherfield';
$selectedField = $this->editRecord($query_string, $record); $selectedField = $this->editRecord($query_string, $record);
@@ -476,7 +476,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testUpdateNonIndexableRecord() public function testUpdateNonIndexableRecord()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot_no_index_' . $record->get_record_id() . '_'; $query_string = 'boomboklot_no_index_' . $record->get_record_id() . '_';
$field = $this->editRecord($query_string, $record, false); $field = $this->editRecord($query_string, $record, false);
@@ -494,7 +494,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testDeleteRecord() public function testDeleteRecord()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'deleteRecord'; $query_string = 'boomboklot' . $record->get_record_id() . 'deleteRecord';
$field = $this->editRecord($query_string, $record); $field = $this->editRecord($query_string, $record);
@@ -522,7 +522,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
*/ */
public function testDeleteRecordWithinStemmContext($language, $word, $stemm) public function testDeleteRecordWithinStemmContext($language, $word, $stemm)
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$index_string = 'boomboklot' . $record->get_record_id() . 'deleteRecordInStemmContext '.$word; $index_string = 'boomboklot' . $record->get_record_id() . 'deleteRecordInStemmContext '.$word;
$query_string = 'boomboklot' . $record->get_record_id() . 'deleteRecordInStemmContext '.$stemm; $query_string = 'boomboklot' . $record->get_record_id() . 'deleteRecordInStemmContext '.$stemm;
@@ -619,7 +619,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testStatusQueryOnOverOff() public function testStatusQueryOnOverOff()
{ {
$options = $this->getDefaultOptions(); $options = $this->getDefaultOptions();
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$record->set_binary_status('00000'); $record->set_binary_status('00000');
$query_string = 'boomboklot' . $record->get_record_id() . 'statusQueryOff'; $query_string = 'boomboklot' . $record->get_record_id() . 'statusQueryOff';
@@ -640,7 +640,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
{ {
$options = $this->getDefaultOptions(); $options = $this->getDefaultOptions();
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$record->set_binary_status('10000'); $record->set_binary_status('10000');
$options->setStatus([4 => ['on' => [$record->get_databox()->get_sbas_id()]]]); $options->setStatus([4 => ['on' => [$record->get_databox()->get_sbas_id()]]]);
@@ -661,7 +661,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
{ {
$options = $this->getDefaultOptions(); $options = $this->getDefaultOptions();
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$record->set_binary_status('10000'); $record->set_binary_status('10000');
$options->setStatus([4 => ['off' => [$record->get_databox()->get_sbas_id()]]]); $options->setStatus([4 => ['off' => [$record->get_databox()->get_sbas_id()]]]);
@@ -682,7 +682,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
{ {
$options = $this->getDefaultOptions(); $options = $this->getDefaultOptions();
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$record->set_binary_status('00000'); $record->set_binary_status('00000');
$options->setStatus([4 => ['off' => [$record->get_databox()->get_sbas_id()]]]); $options->setStatus([4 => ['off' => [$record->get_databox()->get_sbas_id()]]]);
@@ -702,7 +702,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testStatusQueryUpdate() public function testStatusQueryUpdate()
{ {
$options = $this->getDefaultOptions(); $options = $this->getDefaultOptions();
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$record->set_binary_status('00000'); $record->set_binary_status('00000');
$query_string = 'boomboklot' . $record->get_record_id() . 'statusQueryUpdate'; $query_string = 'boomboklot' . $record->get_record_id() . 'statusQueryUpdate';
@@ -730,7 +730,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetAuthenticatedTestCase
public function testExcerptFromSimpleQuery() public function testExcerptFromSimpleQuery()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$query_string = 'boomboklot' . $record->get_record_id() . 'excerptSimpleQuery'; $query_string = 'boomboklot' . $record->get_record_id() . 'excerptSimpleQuery';
$this->editRecord($query_string, $record); $this->editRecord($query_string, $record);

View File

@@ -14,7 +14,7 @@ class SearchEngineResultTest extends \PhraseanetTestCase
public function testBasic() public function testBasic()
{ {
$results = new ArrayCollection([ $results = new ArrayCollection([
self::$DI['record_24'] self::$DI['record_2']
]); ]);
$query = 'Gotainer'; $query = 'Gotainer';
@@ -52,7 +52,7 @@ class SearchEngineResultTest extends \PhraseanetTestCase
public function testWithOffsetStartAtZero() public function testWithOffsetStartAtZero()
{ {
$results = new ArrayCollection([ $results = new ArrayCollection([
self::$DI['record_24'] self::$DI['record_2']
]); ]);
$query = 'Gotainer'; $query = 'Gotainer';

View File

@@ -83,7 +83,7 @@ class SphinxSearchEngineTest extends SearchEngineAbstractTest
public function tearDown() public function tearDown()
{ {
if (!self::$skipped) { if (!self::$skipped) {
self::$searchEngine->removeRecord(self::$DI['record_24']); self::$searchEngine->removeRecord(self::$DI['record_2']);
} }
parent::tearDown(); parent::tearDown();
@@ -113,7 +113,7 @@ class SphinxSearchEngineTest extends SearchEngineAbstractTest
*/ */
public function testAutocomplete() public function testAutocomplete()
{ {
$record = self::$DI['record_24']; $record = self::$DI['record_2'];
$toupdate = []; $toupdate = [];

View File

@@ -10,12 +10,7 @@ class FinishedJobRemoverSubscriberTest extends \PhraseanetTestCase
{ {
public function testOnJobFinish() public function testOnJobFinish()
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task
->setName('task')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
$taskId = $task->getId(); $taskId = $task->getId();
$subscriber = new FinishedJobRemoverSubscriber(self::$DI['app']['EM']); $subscriber = new FinishedJobRemoverSubscriber(self::$DI['app']['EM']);

View File

@@ -49,11 +49,7 @@ class LiveInformationTest extends \PhraseanetTestCase
public function testItReturnsWorkingTaskStatus() public function testItReturnsWorkingTaskStatus()
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task->setName('Task')->setJobId('Null');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
$notifier = $this->createNotifierMock(); $notifier = $this->createNotifierMock();
$notifier->expects($this->once()) $notifier->expects($this->once())
@@ -82,11 +78,7 @@ class LiveInformationTest extends \PhraseanetTestCase
public function testItReturnsNonWorkingTaskStatus() public function testItReturnsNonWorkingTaskStatus()
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task->setName('Task')->setJobId('Null');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
$notifier = $this->createNotifierMock(); $notifier = $this->createNotifierMock();
$notifier->expects($this->once()) $notifier->expects($this->once())

View File

@@ -9,13 +9,7 @@ class LogFilefactorytest extends \PhraseanetTestCase
{ {
public function testForTask() public function testForTask()
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task
->setName('task')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
$root = __DIR__ . '/root'; $root = __DIR__ . '/root';
$factory = new LogFilefactory($root); $factory = new LogFilefactory($root);

View File

@@ -19,13 +19,7 @@ class TaskLogFileTest extends LogFileTestCase
protected function getLogFile($root) protected function getLogFile($root)
{ {
$task = new Task(); $task = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Task', 1);
$task
->setName('task')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task);
self::$DI['app']['EM']->flush();
return new TaskLogFile($root, $task); return new TaskLogFile($root, $task);
} }

View File

@@ -21,16 +21,6 @@ class TaskListTest extends \PhraseanetTestCase
public function getTaskList() public function getTaskList()
{ {
$task1 = new Task();
$task1
->setName('task 1')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
$task2 = new Task();
$task2
->setName('task 2')
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
$task3 = new Task(); $task3 = new Task();
$task3 $task3
->setName('task 3') ->setName('task 3')
@@ -38,8 +28,6 @@ class TaskListTest extends \PhraseanetTestCase
->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob'); ->setJobId('Alchemy\Phrasea\TaskManager\Job\NullJob');
self::$DI['app']['EM']->persist($task3); self::$DI['app']['EM']->persist($task3);
self::$DI['app']['EM']->persist($task1);
self::$DI['app']['EM']->persist($task2);
self::$DI['app']['EM']->flush(); self::$DI['app']['EM']->flush();
return new TaskList(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Task'), self::$DI['app']['root.path'], '/path/to/php', '/path/to/php-conf'); return new TaskList(self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Task'), self::$DI['app']['root.path'], '/path/to/php', '/path/to/php-conf');
@@ -68,10 +56,11 @@ class TaskListTest extends \PhraseanetTestCase
public function testGeneratedProcesses() public function testGeneratedProcesses()
{ {
$list = $this->getTaskList(); $list = $this->getTaskList();
$n = 2; // task 3 is the first to be registered $n = 1;
foreach ($list->refresh() as $task) { foreach ($list->refresh() as $task) {
$this->assertEquals("'/path/to/php' '-c' '/path/to/php-conf' '-f' '".self::$DI['app']['root.path']."/bin/console' '--' '-q' 'task-manager:task:run' '".$n."' '--listen-signal' '--max-duration' '1800' '--max-memory' '134217728'", $task->createProcess()->getCommandLine()); $this->assertEquals("'/path/to/php' '-c' '/path/to/php-conf' '-f' '".self::$DI['app']['root.path']."/bin/console' '--' '-q' 'task-manager:task:run' '".$n."' '--listen-signal' '--max-duration' '1800' '--max-memory' '134217728'", $task->createProcess()->getCommandLine());
$n++; $n++;
} }
$this->assertSame(3, $n);
} }
} }

View File

@@ -64,11 +64,11 @@ class TaskManagerStatusTest extends \PhraseanetTestCase
public function provideConfAndStatusData() public function provideConfAndStatusData()
{ {
return [ return [
// array(array(), TaskManagerStatus::STATUS_STARTED, true), [[], TaskManagerStatus::STATUS_STARTED, true],
// array(array('task-manager' => array()), TaskManagerStatus::STATUS_STARTED, true), [['task-manager' => []], TaskManagerStatus::STATUS_STARTED, true],
[['task-manager' => ['status' => TaskManagerStatus::STATUS_STOPPED]], TaskManagerStatus::STATUS_STOPPED, false], [['task-manager' => ['status' => TaskManagerStatus::STATUS_STOPPED]], TaskManagerStatus::STATUS_STOPPED, false],
// array(array('task-manager' => array('status' => TaskManagerStatus::STATUS_STARTED)), TaskManagerStatus::STATUS_STARTED, true), [['task-manager' => ['status' => TaskManagerStatus::STATUS_STARTED]], TaskManagerStatus::STATUS_STARTED, true],
// array(array('task-manager' => array('status' => 'unknown')), TaskManagerStatus::STATUS_STARTED, true), [['task-manager' => ['status' => 'unknown']], TaskManagerStatus::STATUS_STARTED, true],
]; ];
} }

View File

@@ -183,7 +183,7 @@ class Bridge_Api_Apitest extends Bridge_Api_Abstract implements Bridge_Api_Inter
*/ */
public function connect() public function connect()
{ {
return array('auth_token' => 'kikoo', 'refresh_token' => 'kooki'); return ['auth_token' => 'kikoo', 'refresh_token' => 'kooki'];
} }
/** /**
@@ -413,7 +413,7 @@ class Bridge_Api_Apitest extends Bridge_Api_Abstract implements Bridge_Api_Inter
} }
public function upload(record_adapter $record, array $options = array()) public function upload(record_adapter $record, array $options = [])
{ {
} }
@@ -433,15 +433,15 @@ class Bridge_Api_Apitest extends Bridge_Api_Abstract implements Bridge_Api_Inter
if (self::$hasError) { if (self::$hasError) {
self::$hasError = false; self::$hasError = false;
return array('title' => 'too long'); return ['title' => 'too long'];
} }
return array(); return [];
} }
public function get_upload_datas(\Symfony\Component\HttpFoundation\Request $request, record_adapter $record) public function get_upload_datas(\Symfony\Component\HttpFoundation\Request $request, record_adapter $record)
{ {
return array(); return [];
} }
public function is_multiple_upload() public function is_multiple_upload()
@@ -457,17 +457,17 @@ class Bridge_Api_Apitest extends Bridge_Api_Abstract implements Bridge_Api_Inter
throw new \Exception('une erreur'); throw new \Exception('une erreur');
} }
return array(); return [];
} elseif (self::$hasError) { } elseif (self::$hasError) {
self::$hasError = false; self::$hasError = false;
return array('title' => 'too long'); return ['title' => 'too long'];
} }
} }
public function get_update_datas(\Symfony\Component\HttpFoundation\Request $request) public function get_update_datas(\Symfony\Component\HttpFoundation\Request $request)
{ {
return array(); return [];
} }
} }
@@ -499,7 +499,7 @@ class Bridge_Api_Auth_None extends Bridge_Api_Auth_Abstract implements Bridge_Ap
return $this->settings->get('auth_token', null) !== null; return $this->settings->get('auth_token', null) !== null;
} }
public function get_auth_url(Array $supp_parameters = array()) public function get_auth_url(Array $supp_parameters = [])
{ {
return 'kameamea'; return 'kameamea';
} }

View File

@@ -1,163 +0,0 @@
<?php
class EntityBasketTest extends \PhraseanetAuthenticatedTestCase
{
/**
*
* @var \Alchemy\Phrasea\Model\Entities\Basket
*/
protected $basket;
/**
*
* @var \Doctrine\ORM\EntityManager
*/
protected $em;
public function setUp()
{
parent::setUp();
$this->em = self::$DI['app']['EM'];
$this->basket = $this->insertOneBasket();
}
public function testGetId()
{
$this->assertTrue(is_int($this->basket->getId()));
$otherBasket = $this->insertOneBasket();
$this->assertGreaterThan($this->basket->getId(), $otherBasket->getId());
}
public function testGetName()
{
$this->basket->setName('one name');
$this->em->persist($this->basket);
$this->em->flush();
$this->assertEquals('one name', $this->basket->getName());
}
public function testGetDescription()
{
$this->basket->setDescription('une jolie description pour mon super panier');
$this->em->persist($this->basket);
$this->em->flush();
$this->assertEquals('une jolie description pour mon super panier', $this->basket->getDescription());
}
public function testGetUsrId()
{
$this->basket->setUsrId(1);
$this->em->persist($this->basket);
$this->em->flush();
$this->assertEquals(1, $this->basket->getUsrId());
}
public function testGetPusherId()
{
$this->basket->setPusherId(1);
$this->em->persist($this->basket);
$this->em->flush();
$this->assertEquals(1, $this->basket->getPusherId());
}
public function testGetArchived()
{
$this->basket->setArchived(true);
$this->em->persist($this->basket);
$this->em->flush();
$this->assertTrue($this->basket->GetArchived());
$this->basket->setArchived(false);
$this->em->persist($this->basket);
$this->em->flush();
$this->assertFalse($this->basket->GetArchived());
}
public function testGetCreated()
{
$date = $this->basket->getCreated();
$this->assertInstanceOf('\DateTime', $date);
}
public function testGetUpdated()
{
$date = $this->basket->getUpdated();
$this->assertInstanceOf('\DateTime', $date);
}
public function testGetElements()
{
$elements = $this->basket->getElements();
$this->assertInstanceOf('\Doctrine\ORM\PersistentCollection', $elements);
$this->assertEquals(0, $elements->count());
$basketElement = new \Alchemy\Phrasea\Model\Entities\BasketElement();
$basketElement->setRecord(self::$DI['record_1']);
$basketElement->setBasket($this->basket);
$this->em->persist($basketElement);
$this->em->flush();
$this->em->refresh($this->basket);
$this->assertEquals(1, $this->basket->getElements()->count());
}
public function testGetPusher()
{
$this->assertNull($this->basket->getPusher(self::$DI['app'])); //no pusher
$this->basket->setPusherId(self::$DI['user']->get_id());
$this->assertInstanceOf('\User_Adapter', $this->basket->getPusher(self::$DI['app']));
$this->assertEquals($this->basket->getPusher(self::$DI['app'])->get_id(), self::$DI['user']->get_id());
}
public function testGetOwner()
{
$this->assertNotNull($this->basket->getOwner(self::$DI['app'])); //no owner
$this->basket->setUsrId(self::$DI['user']->get_id());
$this->assertInstanceOf('\User_Adapter', $this->basket->getOwner(self::$DI['app']));
$this->assertEquals($this->basket->getOwner(self::$DI['app'])->get_id(), self::$DI['user']->get_id());
}
public function testGetValidation()
{
$this->assertNull($this->basket->getValidation());
$validationSession = new \Alchemy\Phrasea\Model\Entities\ValidationSession();
$validationSession->setBasket($this->basket);
$expires = new \DateTime();
$expires->modify('+1 week');
$validationSession->setExpires($expires);
$validationSession->setInitiator(self::$DI['user']);
$this->em->persist($validationSession);
$this->em->flush();
$this->em->refresh($this->basket);
$this->assertInstanceOf('\Alchemy\Phrasea\Model\Entities\ValidationSession', $this->basket->getValidation());
}
public function testGetIsRead()
{
$this->markTestIncomplete();
}
public function testGetSize()
{
$this->markTestIncomplete();
}
public function hasRecord()
{
$this->markTestIncomplete();
}
}

View File

@@ -5,15 +5,11 @@ class ValidationParticipantRepositoryTest extends \PhraseanetAuthenticatedTestCa
public function testFindNotConfirmedAndNotRemindedParticipants() public function testFindNotConfirmedAndNotRemindedParticipants()
{ {
$this->insertOneValidationBasket([
'expires' => new \DateTime('+1 days')
]);
$em = self::$DI['app']['EM']; $em = self::$DI['app']['EM'];
$repo = $em->getRepository('\Alchemy\Phrasea\Model\Entities\ValidationParticipant'); $repo = $em->getRepository('Alchemy\Phrasea\Model\Entities\ValidationParticipant');
/* @var $repo Alchemy\Phrasea\Model\Repositories\ValidationParticipantRepository */ /* @var $repo Alchemy\Phrasea\Model\Repositories\ValidationParticipantRepository */
$expireDate = new \DateTime('+2 days'); $expireDate = new \DateTime('+8 days');
$participants = $repo->findNotConfirmedAndNotRemindedParticipantsByExpireDate($expireDate); $participants = $repo->findNotConfirmedAndNotRemindedParticipantsByExpireDate($expireDate);
$this->assertEquals(1, count($participants)); $this->assertEquals(3, count($participants));
} }
} }

View File

@@ -132,17 +132,17 @@ class W3CFeedRawValidator extends W3CFeedValidator
*/ */
public function validate() public function validate()
{ {
$context = stream_context_create(array( $context = stream_context_create([
'http' => array( 'http' => [
'method' => 'POST', 'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded', 'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query(array( 'content' => http_build_query([
'rawdata' => $this->rawData, 'rawdata' => $this->rawData,
'manual' => 1, 'manual' => 1,
'output' => self::OUTPOUT)), 'output' => self::OUTPOUT]),
'timeout' => 5, 'timeout' => 5,
), ],
)); ]);
sleep(self::TIME_BETWEEN_REQUEST); sleep(self::TIME_BETWEEN_REQUEST);
$response = @file_get_contents(self::VALIDATOR_ENDPOINT, false, $context); $response = @file_get_contents(self::VALIDATOR_ENDPOINT, false, $context);
if ( ! $response) { if ( ! $response) {
@@ -273,7 +273,7 @@ class W3CFeedValidatorResponse
*/ */
public function getWarnings() public function getWarnings()
{ {
$warnings = array(); $warnings = [];
$xPathQuery = "/env:Envelope/env:Body/m:feedvalidationresponse/m:warnings/m:warninglist/*"; $xPathQuery = "/env:Envelope/env:Body/m:feedvalidationresponse/m:warnings/m:warninglist/*";
$warningList = $this->DOMXpath->query($xPathQuery); $warningList = $this->DOMXpath->query($xPathQuery);
if ($warningList->length > 0) { if ($warningList->length > 0) {
@@ -291,7 +291,7 @@ class W3CFeedValidatorResponse
*/ */
public function getErrors() public function getErrors()
{ {
$errors = array(); $errors = [];
$xPathQuery = "/env:Envelope/env:Body/m:feedvalidationresponse/m:errors/m:errorlist/*"; $xPathQuery = "/env:Envelope/env:Body/m:feedvalidationresponse/m:errors/m:errorlist/*";
$errorList = $this->DOMXpath->query($xPathQuery); $errorList = $this->DOMXpath->query($xPathQuery);
if ($errorList->length > 0) { if ($errorList->length > 0) {
@@ -324,7 +324,7 @@ class W3CFeedValidatorResponse
$ret = trim($node->nodeValue); $ret = trim($node->nodeValue);
} else { } else {
// Otherwise, do recursion // Otherwise, do recursion
$ret = array(); $ret = [];
foreach ($node->childNodes as $child) { foreach ($node->childNodes as $child) {
if ($child->nodeType !== XML_TEXT_NODE) { if ($child->nodeType !== XML_TEXT_NODE) {
// If there's more than one node with this node name on the // If there's more than one node with this node name on the
@@ -332,7 +332,7 @@ class W3CFeedValidatorResponse
if (isset($ret[$child->nodeName])) { if (isset($ret[$child->nodeName])) {
if ( ! is_array($ret[$child->nodeName]) || ! isset($ret[$child->nodeName][0])) { if ( ! is_array($ret[$child->nodeName]) || ! isset($ret[$child->nodeName][0])) {
$tmp = $ret[$child->nodeName]; $tmp = $ret[$child->nodeName];
$ret[$child->nodeName] = array(); $ret[$child->nodeName] = [];
$ret[$child->nodeName][] = $tmp; $ret[$child->nodeName][] = $tmp;
} }

View File

@@ -3,26 +3,9 @@
use Alchemy\Phrasea\CLI; use Alchemy\Phrasea\CLI;
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Border\File; use Alchemy\Phrasea\Border\File;
use Alchemy\Phrasea\Model\Entities\AggregateToken;
use Alchemy\Phrasea\Model\Entities\Basket;
use Alchemy\Phrasea\Model\Entities\BasketElement;
use Alchemy\Phrasea\Model\Entities\Feed;
use Alchemy\Phrasea\Model\Entities\FeedEntry;
use Alchemy\Phrasea\Model\Entities\FeedItem;
use Alchemy\Phrasea\Model\Entities\FeedPublisher;
use Alchemy\Phrasea\Model\Entities\FeedToken;
use Alchemy\Phrasea\Model\Entities\LazaretFile; use Alchemy\Phrasea\Model\Entities\LazaretFile;
use Alchemy\Phrasea\Model\Entities\LazaretSession;
use Alchemy\Phrasea\Model\Entities\Session; use Alchemy\Phrasea\Model\Entities\Session;
use Alchemy\Phrasea\Model\Entities\Task;
use Alchemy\Phrasea\Model\Entities\User; use Alchemy\Phrasea\Model\Entities\User;
use Alchemy\Phrasea\Model\Entities\ValidationData;
use Alchemy\Phrasea\Model\Entities\ValidationSession;
use Alchemy\Phrasea\Model\Entities\ValidationParticipant;
use Alchemy\Phrasea\Model\Entities\UsrListOwner;
use Alchemy\Phrasea\Model\Entities\UsrList;
use Alchemy\Phrasea\Model\Entities\UsrListEntry;
use Alchemy\Phrasea\Model\Entities\StoryWZ;
use Monolog\Logger; use Monolog\Logger;
use Monolog\Handler\NullHandler; use Monolog\Handler\NullHandler;
use Silex\WebTestCase; use Silex\WebTestCase;
@@ -151,8 +134,7 @@ abstract class PhraseanetTestCase extends WebTestCase
exit(1); exit(1);
} }
$this->createSetOfUserTests(self::$DI['app']); self::$fixtureIds = array_merge(self::$fixtureIds, json_decode(file_get_contents(__DIR__ .'/../fixtures.json'), true));
self::setCollection(self::$DI['app']);
self::resetUsersRights(self::$DI['app'], self::$DI['user']); self::resetUsersRights(self::$DI['app'], self::$DI['user']);
self::resetUsersRights(self::$DI['app'], self::$DI['user_notAdmin']); self::resetUsersRights(self::$DI['app'], self::$DI['user_notAdmin']);
@@ -160,48 +142,19 @@ abstract class PhraseanetTestCase extends WebTestCase
self::$booted = true; self::$booted = true;
} }
self::$DI['record_id_resolver'] = self::$DI->protect(function ($id) { self::$DI['lazaret_1'] = self::$DI->share(function ($DI) {
if (isset(self::$fixtureIds['records'][$id])) { return $DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\LazaretFile', self::$fixtureIds['lazaret']['lazaret_1']);
return self::$fixtureIds['records'][$id];
}
self::$recordsInitialized[] = $id;
$file = new File(self::$DI['app'], self::$DI['app']['mediavorus']->guess(__DIR__ . '/../files/' . ($id < 10 ? 'test00' . $id . '.jpg' : 'test0' . $id . '.jpg')), self::$DI['collection']);
$record = record_adapter::createFromFile($file, self::$DI['app']);
$record->generate_subdefs($record->get_databox(), self::$DI['app']);
self::$fixtureIds['records'][$id] = $record->get_record_id();
return self::$fixtureIds['records'][$id];
}); });
self::$DI['story_id_resolver'] = self::$DI->protect(function ($id) { foreach (range(1, 7) as $i) {
$id = 'story_'.$id;
if (isset(self::$fixtureIds['records'][$id])) {
return self::$fixtureIds['records'][$id];
}
self::$recordsInitialized[] = $id;
$story = record_adapter::createStory(self::$DI['app'], self::$DI['collection']);
$media = self::$DI['app']['mediavorus']->guess(__DIR__ . '/../files/cestlafete.jpg');
$story->substitute_subdef('preview', $media, self::$DI['app']);
$story->substitute_subdef('thumbnail', $media, self::$DI['app']);
self::$fixtureIds['records'][$id] = $story->get_record_id();
return self::$fixtureIds['records'][$id];
});
foreach (range(1, 24) as $i) {
self::$DI['record_' . $i] = self::$DI->share(function ($DI) use ($i) { self::$DI['record_' . $i] = self::$DI->share(function ($DI) use ($i) {
return new \record_adapter($DI['app'], self::$fixtureIds['databox']['records'], $DI['record_id_resolver']($i)); return new \record_adapter($DI['app'], self::$fixtureIds['databox']['records'], self::$fixtureIds['record']['record_'.$i]);
}); });
} }
foreach (range(1, 2) as $i) { foreach (range(1, 2) as $i) {
self::$DI['record_story_' . $i] = self::$DI->share(function ($DI) use ($i) { self::$DI['record_story_' . $i] = self::$DI->share(function ($DI) use ($i) {
return new \record_adapter($DI['app'], self::$fixtureIds['databox']['records'], $DI['story_id_resolver']($i)); return new \record_adapter($DI['app'], self::$fixtureIds['databox']['records'], self::$fixtureIds['record']['record_story_'.$i]);
}); });
} }
@@ -385,510 +338,6 @@ abstract class PhraseanetTestCase extends WebTestCase
}); });
} }
/**
* Inserts two tasks.
*
* @return Task[]
*/
public function insertTwoTasks()
{
$task1 = new Task();
$task1
->setName('task 1')
->setJobId('Null');
$task2 = new Task();
$task2
->setName('task 2')
->setJobId('Null');
self::$DI['app']['EM']->persist($task1);
self::$DI['app']['EM']->persist($task2);
self::$DI['app']['EM']->flush();
return [$task1, $task2];
}
/**
* Inserts one basket.
*
* @param User_Adapter $user
*
* @return Basket
*/
protected function insertOneBasket(\User_Adapter $user = null)
{
$basket = new Basket();
$basket->setOwner($user ?: self::$DI['user']);
$basket->setName('test');
$basket->setDescription('description test');
self::$DI['app']['EM']->persist($basket);
self::$DI['app']['EM']->flush();
return $basket;
}
/**
* Inserts one feed.
*
* @param User_Adapter $user
* @param string|null $title
* @param bool $public
*
* @return Feed
*/
protected function insertOneFeed(\User_Adapter $user = null , $title = null, $public = false)
{
$feed = new Feed();
$publisher = new FeedPublisher();
$user = $user ?: self::$DI['user'];
$publisher->setUsrId($user->get_id());
$publisher->setIsOwner(true);
$publisher->setFeed($feed);
$feed->addPublisher($publisher);
$feed->setTitle($title ?: "test");
$feed->setIsPublic($public);
$feed->setSubtitle("description");
self::$DI['app']['EM']->persist($feed);
self::$DI['app']['EM']->persist($publisher);
self::$DI['app']['EM']->flush();
return $feed;
}
/**
* Inserts one feed entry.
*
* @param User_Adapter $user
* @param bool $public
*
* @return FeedEntry
*/
protected function insertOneFeedEntry(\User_Adapter $user = null, $public = false)
{
$feed = $this->insertOneFeed($user, null, $public);
$entry = new FeedEntry();
$entry->setFeed($feed);
$entry->setTitle("test");
$entry->setSubtitle("description");
$entry->setAuthorName('user');
$entry->setAuthorEmail('user@email.com');
$publisher = $feed->getPublisher($user ?: self::$DI['user']);
if ($publisher !== null) {
$entry->setPublisher($publisher);
}
$feed->addEntry($entry);
self::$DI['app']['EM']->persist($entry);
self::$DI['app']['EM']->persist($feed);
self::$DI['app']['EM']->flush();
return $entry;
}
/**
* Inserts one feed token.
*
* @param Feed $feed
* @param User_Adapter $user
*
* @return FeedToken
*/
protected function insertOneFeedToken(Feed $feed, \User_Adapter $user = null)
{
$user = $user ?: self::$DI['user'];
$token = new FeedToken();
$token->setValue(self::$DI['app']['tokens']->generatePassword(12));
$token->setFeed($feed);
$token->setUsrId($user->get_id());
$feed->addToken($token);
self::$DI['app']['EM']->persist($token);
self::$DI['app']['EM']->persist($feed);
self::$DI['app']['EM']->flush();
return $token;
}
/**
* Insert one aggregate token.
*
* @param User_Adapter $user
*
* @return AggregateToken
*/
protected function insertOneAggregateToken(\User_Adapter $user = null)
{
$user = $user ?: self::$DI['user'];
$token = new AggregateToken();
$token->setValue(self::$DI['app']['tokens']->generatePassword(12));
$token->setUsrId($user->get_id());
self::$DI['app']['EM']->persist($token);
self::$DI['app']['EM']->flush();
return $token;
}
/**
* Inserts one feed item.
*
* @param User_Adapter $user
* @param boolean $public
* @param integer $qty
* @param record_adapter $record
*
* @return FeedItem
*/
protected function insertOneFeedItem(\User_Adapter $user = null, $public = false, $qty = 1, \record_adapter $record = null)
{
$entry = $this->insertOneFeedEntry($user, $public);
for ($i = 0; $i < $qty; $i++) {
$item = new FeedItem();
$item->setEntry($entry);
if (null === $record) {
$actual = self::$DI['record_'.($i+1)];
} else {
$actual = $record;
}
$item->setRecordId($actual->get_record_id());
$item->setSbasId($actual->get_sbas_id());
$item->setEntry($entry);
$entry->addItem($item);
self::$DI['app']['EM']->persist($item);
}
self::$DI['app']['EM']->persist($entry);
self::$DI['app']['EM']->flush();
return $item;
}
/**
* Inserts one lazaret file.
*
* @param User_Adapter $user
*
* @return LazaretFile
*/
protected function insertOneLazaretFile(\User_Adapter $user = null)
{
$user = $user ?: self::$DI['user'];
$lazaretSession = new LazaretSession();
$lazaretSession->setUsrId($user->get_id());
$lazaretSession->setUpdated(new \DateTime('now'));
$lazaretSession->setCreated(new \DateTime('-1 day'));
$lazaretFile = new LazaretFile();
$lazaretFile->setOriginalName('test');
$lazaretFile->setFilename('test.jpg');
$lazaretFile->setThumbFilename('thumb_test.jpg');
$lazaretFile->setBaseId(self::$DI['collection']->get_base_id());
$lazaretFile->setSession($lazaretSession);
$lazaretFile->setSha256('3191af52748620e0d0da50a7b8020e118bd8b8a0845120b0bb');
$lazaretFile->setUuid('7b8ef0e3-dc8f-4b66-9e2f-bd049d175124');
$lazaretFile->setCreated(new \DateTime('now'));
$lazaretFile->setUpdated(new \DateTime('-1 day'));
self::$DI['app']['EM']->persist($lazaretFile);
self::$DI['app']['EM']->flush();
return $lazaretFile;
}
/**
* Inserts one user list owner.
*
* @param User_Adapter $user
*
* @return UsrListOwner
*/
protected function insertOneUsrListOwner(\User_Adapter $user = null)
{
$user = $user ?: self::$DI['user'];
$owner = new UsrListOwner();
$owner->setRole(UsrListOwner::ROLE_ADMIN);
$owner->setUser($user);
self::$DI['app']['EM']->persist($owner);
self::$DI['app']['EM']->flush();
return $owner;
}
/**
* Inserts one user list.
*
* @param User_Adapter $user
*
* @return UsrListOwner
*/
protected function insertOneUsrList(\User_Adapter $user = null)
{
$owner = $this->insertOneUsrListOwner($user);
$list = new UsrList();
$list->setName('new list');
$list->addOwner($owner);
$owner->setList($list);
self::$DI['app']['EM']->persist($list);
self::$DI['app']['EM']->flush();
return $list;
}
/**
* Insert one user list entry.
*
* @param User_adapter $owner
* @param User_adapter $user
*
* @return UsrListEntry
*/
protected function insertOneUsrListEntry(\User_adapter $owner, \User_adapter $user)
{
$list = $this->insertOneUsrList($owner);
$entry = new UsrListEntry();
$entry->setUser($user);
$entry->setList($list);
$list->addEntrie($entry);
self::$DI['app']['EM']->persist($entry);
self::$DI['app']['EM']->persist($list);
self::$DI['app']['EM']->flush();
return $entry;
}
/**
* Inserts five baskets.
*
* @return Basket[]
*/
protected function insertFiveBasket()
{
$baskets = [];
for ($i = 0; $i < 5; $i ++) {
$basket = new Basket();
$basket->setName('test ' . $i);
$basket->setDescription('description');
$basket->setOwner(self::$DI['user']);
self::$DI['app']['EM']->persist($basket);
$baskets[] = $basket;
}
self::$DI['app']['EM']->flush();
return $baskets;
}
/**
* Inserts one basket element.
*
* @param User_Adapter $user
* @param record_adapter $record
*
* @return BasketElement
*/
protected function insertOneBasketElement(\User_Adapter $user = null, \record_adapter $record = null)
{
$element = new BasketElement();
$element->setRecord($record ?: self::$DI['record_1']);
$basket = $this->insertOneBasket($user);
$basket->addElement($element);
$element->setBasket($basket);
self::$DI['app']['EM']->persist($basket);
self::$DI['app']['EM']->flush();
return $element;
}
/**
* Inserts one validation basket.
*
* @param array $parameters
*
* @return Basket
*/
protected function insertOneValidationBasket(array $parameters = [])
{
$basketElement = $this->insertOneBasketElement();
$basket = $basketElement->getBasket();
$validation = new ValidationSession();
$validation->setBasket($basket);
$validation->setInitiator(self::$DI['user']);
if (isset($parameters['expires']) && $parameters['expires'] instanceof \DateTime) {
$validation->setExpires($parameters['expires']);
}
$basket->setValidation($validation);
$participant = new ValidationParticipant();
$participant->setUser(self::$DI['user']);
$participant->setCanAgree(true);
$participant->setCanSeeOthers(true);
$validation->addParticipant($participant);
$participant->setSession($validation);
$data = new ValidationData();
$data->setBasketElement($basketElement);
$data->setParticipant($participant);
$basketElement->addValidationData($data);
self::$DI['app']['EM']->persist($basket);
self::$DI['app']['EM']->persist($validation);
self::$DI['app']['EM']->persist($participant);
self::$DI['app']['EM']->persist($data);
self::$DI['app']['EM']->persist($basketElement);
self::$DI['app']['EM']->flush();
return $basket;
}
/**
* - Creates a new basket with current authenticated user as owner.
* - Creates a new sessionValidation with the newly created basket.
* - Sets current authenticated user as sessionValidation initiator.
* - Adds 2 records as elements of the newly created basket.
* - Adds 2 participants to the newly created sessionValidation.
*
* @return Basket
*/
protected function insertOneBasketEnv()
{
$basket = new Basket();
$basket->setName('test');
$basket->setDescription('description');
$basket->setOwner(self::$DI['user']);
self::$DI['app']['EM']->persist($basket);
foreach ([self::$DI['record_1'], self::$DI['record_2']] as $record) {
$basketElement = new BasketElement();
$basketElement->setRecord($record);
$basketElement->setBasket($basket);
$basket->addElement($basketElement);
self::$DI['app']['EM']->persist($basketElement);
}
$validationSession = new ValidationSession();
$validationSession->setBasket($basket);
$basket->setValidation($validationSession);
$expires = new \DateTime();
$expires->modify('+1 week');
$validationSession->setExpires($expires);
$validationSession->setInitiator(self::$DI['user']);
foreach ([self::$DI['user_alt1'], self::$DI['user_alt2']] as $user) {
$validationParticipant = new ValidationParticipant();
$validationParticipant->setUser($user);
$validationParticipant->setSession($validationSession);
$validationSession->addParticipant($validationParticipant);
self::$DI['app']['EM']->persist($validationParticipant);
}
self::$DI['app']['EM']->flush();
return $basket;
}
/**
* Inserts one story.
*
* @param User_Adapter $user
* @param record_adapter $record
*
* @return StoryWZ
*/
protected function insertOneStory(User_Adapter $user = null, \record_adapter $record = null)
{
$story = new StoryWZ();
$story->setRecord($record ?: self::$DI['record_1']);
$story->setUser($user ?: self::$DI['user']);
self::$DI['app']['EM']->persist($story);
self::$DI['app']['EM']->flush();
return $story;
}
/**
* Inserts one validation session.
*
* @param Basket $basket
* @param User_Adapter $user
*
* @return ValidationSession
*/
protected function insertOneValidationSession(Basket $basket = null, \User_Adapter $user = null)
{
$validationSession = new ValidationSession();
$validationSession->setBasket($basket ?: $this->insertOneBasket());
$expires = new \DateTime();
$expires->modify('+1 week');
$validationSession->setExpires($expires);
$validationSession->setInitiator($user ?: self::$DI['user']);
self::$DI['app']['EM']->persist($validationSession);
self::$DI['app']['EM']->flush();
return $validationSession;
}
/**
* Loads One WZ with one basket, one story and one ValidationSession with one participant.
*/
protected function insertOneWZ()
{
$this->insertOneStory();
$this->insertOneValidationSession($this->insertOneBasket(), self::$DI['user_alt1']);
}
/**
* Inserts one user.
*
* @param string $login
* @param null $email
* @param bool $admin
*
* @return User
*/
protected function insertOneUser($login, $email = null, $admin = false)
{
return self::$DI['app']['manipulator.user']->createUser($login, uniqid('pass'), $email, $admin);
}
/** /**
* Calls a URI as XMLHTTP request. * Calls a URI as XMLHTTP request.
* *
@@ -929,42 +378,6 @@ abstract class PhraseanetTestCase extends WebTestCase
} }
} }
private function createSetOfUserTests(Application $application)
{
if (false === $usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit')) {
$user = User_Adapter::create($application, 'test_phpunit', random::generatePassword(), 'noone@example.com', false);
$usr_id = $user->get_id();
} else {
$user = User_Adapter::getInstance($usr_id, $application);
}
$user->set_email('valid@phraseanet.com');
self::$fixtureIds['user']['test_phpunit'] = $usr_id;
if (false === $usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit_not_admin')) {
$user = User_Adapter::create($application, 'test_phpunit_not_admin', random::generatePassword(), 'noone_not_admin@example.com', false);
$usr_id = $user->get_id();
} else {
$user = User_Adapter::getInstance($usr_id, $application);
}
self::$fixtureIds['user']['test_phpunit_not_admin'] = $usr_id;
if (false === $usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit_alt1')) {
$user = User_Adapter::create($application, 'test_phpunit_alt1', random::generatePassword(), 'noonealt1@example.com', false);
$usr_id = $user->get_id();
}
self::$fixtureIds['user']['test_phpunit_alt1'] = $usr_id;
if (false === $usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit_alt2')) {
$user = User_Adapter::create($application, 'test_phpunit_alt2', random::generatePassword(), 'noonealt2@example.com', false);
$usr_id = $user->get_id();
}
self::$fixtureIds['user']['test_phpunit_alt2'] = $usr_id;
}
/** /**
* Gives Bases Rights to User. * Gives Bases Rights to User.
* *
@@ -1022,48 +435,6 @@ abstract class PhraseanetTestCase extends WebTestCase
} }
} }
/**
* Sets self::$DI['collection'].
*/
private static function setCollection(Application $application)
{
$coll = $collection_no_acces = $collection_no_acces_by_status = $db = null;
foreach ($application['phraseanet.appbox']->get_databoxes() as $databox) {
foreach ($databox->get_collections() as $collection) {
if ($collection_no_acces instanceof collection && !$collection_no_acces_by_status) {
$collection_no_acces_by_status = $collection;
}
if ($coll instanceof collection && !$collection_no_acces) {
$collection_no_acces = $collection;
}
if (!$coll) {
$coll = $collection;
}
if ($coll instanceof collection
&& $collection_no_acces instanceof collection
&& $collection_no_acces_by_status instanceof collection) {
break 2;
}
}
}
self::$fixtureIds['databox']['records'] = $coll->get_databox()->get_sbas_id();
self::$fixtureIds['collection']['coll'] = $coll->get_base_id();
if (!$collection_no_acces instanceof collection) {
$collection_no_acces = collection::create($application, $databox, $application['phraseanet.appbox'], 'BIBOO', self::$DI['user']);
}
self::$fixtureIds['collection']['coll_no_access'] = $collection_no_acces->get_base_id();
if (!$collection_no_acces_by_status instanceof collection) {
$collection_no_acces_by_status = collection::create($application, $databox, $application['phraseanet.appbox'], 'BIBOONOACCESBYSTATUS', self::$DI['user']);
}
self::$fixtureIds['collection']['coll_no_status'] = $collection_no_acces_by_status->get_base_id();
return;
}
/** /**
* Deletes previously created Resources. * Deletes previously created Resources.
*/ */

View File

@@ -337,17 +337,9 @@ class API_V1_adapterTest extends \PhraseanetAuthenticatedTestCase
public function testGet_record_related() public function testGet_record_related()
{ {
$basketElement = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\BasketElement', 1);
$basketElement = $this->insertOneBasketElement(); $story = self::$DI['record_story_1'];
$basketElement->setRecord(self::$DI['record_1']); $story->appendChild(self::$DI['record_1']);
$story = \record_adapter::createStory(self::$DI['app'], self::$DI['collection']);
if (!$story->hasChild(self::$DI['record_1'])) {
$story->appendChild(self::$DI['record_1']);
}
self::$DI['app']['EM']->flush($basketElement);
$request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']); $request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']);
$result = $this->object->get_record_related($request, self::$DI['record_1']->get_sbas_id(), self::$DI['record_1']->get_record_id()); $result = $this->object->get_record_related($request, self::$DI['record_1']->get_sbas_id(), self::$DI['record_1']->get_record_id());
@@ -555,28 +547,13 @@ class API_V1_adapterTest extends \PhraseanetAuthenticatedTestCase
$response = json_decode($result->format(), true); $response = json_decode($result->format(), true);
$this->assertArrayHasKey('basket', $response['response']); $this->assertArrayHasKey('basket', $response['response']);
$em = self::$DI['app']['EM'];
$basket = self::$DI['app']['converter.basket']->convert($response['response']['basket']['basket_id']); $basket = self::$DI['app']['converter.basket']->convert($response['response']['basket']['basket_id']);
self::$DI['app']['acl.basket']->isOwner($basket, self::$DI['app']['authentication']->getUser()); self::$DI['app']['acl.basket']->isOwner($basket, self::$DI['app']['authentication']->getUser());
$em->remove($basket);
$em->flush();
} }
public function testDelete_basket() public function testDelete_basket()
{ {
$usr_id = self::$DI['app']['authentication']->getUser()->get_id(); $Basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$user = User_Adapter::getInstance($usr_id, self::$DI['app']);
$em = self::$DI['app']['EM'];
$Basket = new Alchemy\Phrasea\Model\Entities\Basket();
$Basket->setName('Delete test');
$Basket->setOwner($user);
$em->persist($Basket);
$em->flush();
$request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']); $request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']);
$result = $this->object->delete_basket($request, $Basket); $result = $this->object->delete_basket($request, $Basket);
@@ -584,20 +561,13 @@ class API_V1_adapterTest extends \PhraseanetAuthenticatedTestCase
$this->assertEquals('application/json', $result->get_content_type()); $this->assertEquals('application/json', $result->get_content_type());
$this->assertTrue(is_array(json_decode($result->format(), true))); $this->assertTrue(is_array(json_decode($result->format(), true)));
try { $this->setExpectedException('Symfony\Component\HttpKernel\Exception\NotFoundHttpException');
$basket = self::$DI['app']['converter.basket']->convert($Basket->getId()); self::$DI['app']['converter.basket']->convert($Basket->getId());
self::$DI['app']['acl.basket']->isOwner($basket, $user);
$this->fail('An exception should have been raised');
} catch (\Exception $e) {
}
} }
public function testGet_basket() public function testGet_basket()
{ {
$usr_id = self::$DI['app']['authentication']->getUser()->get_id(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$basket = $this->insertOneBasket();
$request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']); $request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']);
$result = $this->object->get_basket($request, $basket); $result = $this->object->get_basket($request, $basket);
@@ -608,9 +578,7 @@ class API_V1_adapterTest extends \PhraseanetAuthenticatedTestCase
public function testSet_basket_title() public function testSet_basket_title()
{ {
$usr_id = self::$DI['app']['authentication']->getUser()->get_id(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$basket = $this->insertOneBasket();
$request = new Request([], [], ['name' => 'PROUTO'], [], [], ['HTTP_Accept' => 'application/json']); $request = new Request([], [], ['name' => 'PROUTO'], [], [], ['HTTP_Accept' => 'application/json']);
$result = $this->object->set_basket_title($request, $basket); $result = $this->object->set_basket_title($request, $basket);
@@ -627,9 +595,7 @@ class API_V1_adapterTest extends \PhraseanetAuthenticatedTestCase
public function testSet_basket_description() public function testSet_basket_description()
{ {
$usr_id = self::$DI['app']['authentication']->getUser()->get_id(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$basket = $this->insertOneBasket();
$request = new Request([], [], ['description' => 'une belle description'], [], [], ['HTTP_Accept' => 'application/json']); $request = new Request([], [], ['description' => 'une belle description'], [], [], ['HTTP_Accept' => 'application/json']);
$result = $this->object->set_basket_description($request, $basket); $result = $this->object->set_basket_description($request, $basket);
@@ -647,7 +613,7 @@ class API_V1_adapterTest extends \PhraseanetAuthenticatedTestCase
public function testSearch_publications() public function testSearch_publications()
{ {
$request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']); $request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']);
$feed = $this->insertOneFeed(self::$DI['user']); $feed = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Feed', 1);
$result = $this->object->search_publications($request, self::$DI['user']); $result = $this->object->search_publications($request, self::$DI['user']);
$this->checkResponseField($result, "feeds", 'array'); $this->checkResponseField($result, "feeds", 'array');
} }
@@ -668,8 +634,6 @@ class API_V1_adapterTest extends \PhraseanetAuthenticatedTestCase
$date = new DateTime(); $date = new DateTime();
$request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']); $request = new Request([], [], [], [], [], ['HTTP_Accept' => 'application/json']);
$feedItem = $this->insertOneFeedItem(self::$DI['user']);
$feed = $feedItem->getEntry()->getFeed();
$feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser(self::$DI['app']['acl']->get(self::$DI['user'])); $feeds = self::$DI['app']['EM']->getRepository('Alchemy\Phrasea\Model\Entities\Feed')->getAllForUser(self::$DI['app']['acl']->get(self::$DI['user']));
foreach ($feeds as $feed) { foreach ($feeds as $feed) {

View File

@@ -37,28 +37,6 @@ class record_adapterTest extends \PhraseanetAuthenticatedTestCase
*/ */
public function testSetExport() public function testSetExport()
{ {
$basket = new \Alchemy\Phrasea\Model\Entities\Basket();
$basket->setName('hello');
$basket->setOwner(self::$DI['user']);
$basket->setDescription('hello');
$em = self::$DI['app']['EM'];
$basketElement = new \Alchemy\Phrasea\Model\Entities\BasketElement();
$basketElement->setRecord(self::$DI['record_1']);
$basketElement->setBasket($basket);
$em->persist($basketElement);
$basket->addElement($basketElement);
$em->persist($basket);
$em->flush();
$receveid = [self::$DI['record_1']->get_serialize_key() => self::$DI['record_1']];
self::$DI['app']['acl']->get( self::$DI['app']['authentication']->getUser())->update_rights_to_base(self::$DI['record_1']->get_base_id(), ['order_master' => true]); self::$DI['app']['acl']->get( self::$DI['app']['authentication']->getUser())->update_rights_to_base(self::$DI['record_1']->get_base_id(), ['order_master' => true]);
$eventManagerStub = $this->getMockBuilder('\eventsmanager_broker') $eventManagerStub = $this->getMockBuilder('\eventsmanager_broker')
@@ -488,21 +466,7 @@ class record_adapterTest extends \PhraseanetAuthenticatedTestCase
public function testGet_container_baskets() public function testGet_container_baskets()
{ {
$basket = $this->insertOneBasket(); $basket = self::$DI['app']['EM']->find('Alchemy\Phrasea\Model\Entities\Basket', 1);
$this->assertInstanceOf('\Alchemy\Phrasea\Model\Entities\Basket', $basket);
/* @var $basket \Alchemy\Phrasea\Model\Entities\Basket */
$basket_element = new \Alchemy\Phrasea\Model\Entities\BasketElement();
$basket_element->setRecord(self::$DI['record_1']);
$basket_element->setBasket($basket);
self::$DI['app']['EM']->persist($basket_element);
$basket->addElement($basket_element);
$basket = self::$DI['app']['EM']->merge($basket);
self::$DI['app']['EM']->flush();
$found = $sselcont_id = false; $found = $sselcont_id = false;
$sbas_id = self::$DI['record_1']->get_sbas_id(); $sbas_id = self::$DI['record_1']->get_sbas_id();

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB