From f9bec73d55b58d5d229461685e0ab821777963ce Mon Sep 17 00:00:00 2001 From: Mikael RANDY Date: Sun, 17 Mar 2013 13:47:03 +0100 Subject: [PATCH 01/16] Add: Behat configuration --- .gitignore | 2 ++ behat.local.yml | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 behat.local.yml diff --git a/.gitignore b/.gitignore index bd9135f..ecc639b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ ## Application files app/config.php bin/* +behat.local.yml +behat.yml deps.lock vendor/ node_modules/ diff --git a/behat.local.yml b/behat.local.yml new file mode 100644 index 0000000..5e968fb --- /dev/null +++ b/behat.local.yml @@ -0,0 +1,7 @@ +default: + context: + parameters: + base_url: http://aperophp.local + extensions: + Behat\MinkExtension\Extension: + base_url: http://aperophp.local From 3ac632a2dbec6021a445fae6e4daaf927ac2b14e Mon Sep 17 00:00:00 2001 From: Mikael RANDY Date: Sun, 5 May 2013 23:59:43 +0200 Subject: [PATCH 02/16] Add: Behat test for homepage --- tests/functional/0001-homepage.feature | 29 +++++++ .../bootstrap/Context/HomepageContext.php | 75 +++++++++++++++++++ tests/functional/bootstrap/FeatureContext.php | 30 ++++++++ tests/functional/bootstrap/Page/Homepage.php | 20 +++++ .../functional/bootstrap/View/WebContext.php | 44 +++++++++++ 5 files changed, 198 insertions(+) create mode 100644 tests/functional/0001-homepage.feature create mode 100644 tests/functional/bootstrap/Context/HomepageContext.php create mode 100644 tests/functional/bootstrap/FeatureContext.php create mode 100644 tests/functional/bootstrap/Page/Homepage.php create mode 100644 tests/functional/bootstrap/View/WebContext.php diff --git a/tests/functional/0001-homepage.feature b/tests/functional/0001-homepage.feature new file mode 100644 index 0000000..18c7cc7 --- /dev/null +++ b/tests/functional/0001-homepage.feature @@ -0,0 +1,29 @@ +# language: fr + +Fonctionnalité: La homepage fonctionne correctement + + Scénario: La page s'affiche correctement + Quand je vais sur la page d'accueil + Alors la page "/" s'affiche correctement + + Scénario: Le menu est correctement affiché + Quand je vais sur la page d'accueil + Alors le menu contient ces éléments: + | libellé | lien | + | Accueil | / | + | Organiser un apéro | /new.html | + | Liste des apéros | /list.html | + | S'inscrire | /member/signup.html | + | Se connecter | /member/signin.html | + + Scénario: La liste des apéritifs à venir est affichée + Quand je vais sur la page d'accueil + Alors le bloc "A venir" est visible + Et l'apéritif du "19 juillet" à "Paris" est visible + Et l'apéritif du "19 juillet" à "Paris" est visible + Et l'apéritif du "19 juillet" à "Lyon" n'est pas visible + + Scénario: Le bloc de création d'un apéritif est disponible + Quand je vais sur la page d'accueil + Alors le bloc "Les apéros PHP" est visible + Et le lien "Organiser un apéro" est visible diff --git a/tests/functional/bootstrap/Context/HomepageContext.php b/tests/functional/bootstrap/Context/HomepageContext.php new file mode 100644 index 0000000..b7ffb91 --- /dev/null +++ b/tests/functional/bootstrap/Context/HomepageContext.php @@ -0,0 +1,75 @@ +useContext('view', new View\WebContext($parameters)); + $this->useContext('homepage', new Context\HomepageContext($parameters)); + $this->useContext('mink', new MinkContext($parameters)); + } +} diff --git a/tests/functional/bootstrap/Page/Homepage.php b/tests/functional/bootstrap/Page/Homepage.php new file mode 100644 index 0000000..0555c90 --- /dev/null +++ b/tests/functional/bootstrap/Page/Homepage.php @@ -0,0 +1,20 @@ + array('css' => 'ul.mainnav'), + ); + + public function hasMenu(array $menu_content) + { + $menu = $this->getElement('Menu'); + var_dump(array_diff($menu_content, $menu->toArray())); + } +} + + diff --git a/tests/functional/bootstrap/View/WebContext.php b/tests/functional/bootstrap/View/WebContext.php new file mode 100644 index 0000000..6026732 --- /dev/null +++ b/tests/functional/bootstrap/View/WebContext.php @@ -0,0 +1,44 @@ +parameters = $parameters; + } + + protected function getMink() + { + return $this->getMainContext()->getSubcontext('mink'); + } + + protected function getMenuLinks() + { + $session = $this->getMink()->getSession(); + $page = $session->getPage(); + + return $page->findAll('css', 'ul.mainnav > li > a'); + } + + /** + * @Given /^la page "(?P[^"]*)" s\'affiche correctement$/ + */ + public function laPageSAfficheCorrectement($url) + { + return array( + new Step\Then("je suis sur \"$url\""), + new Step\Then("le code de status de la réponse devrait être 200"), + ); + } +} From 2c2664ae33f8b63bbebbd8682443ea6a4c805729 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Sun, 20 Oct 2013 23:34:11 +0200 Subject: [PATCH 03/16] Mod: Use PageObject functionnality to be more powefull --- tests/functional/0001-homepage.feature | 5 ++-- .../bootstrap/Context/HomepageContext.php | 18 +++++------ tests/functional/bootstrap/Page/Homepage.php | 30 +++++++++++++++---- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/tests/functional/0001-homepage.feature b/tests/functional/0001-homepage.feature index 18c7cc7..144f915 100644 --- a/tests/functional/0001-homepage.feature +++ b/tests/functional/0001-homepage.feature @@ -19,9 +19,8 @@ Fonctionnalité: La homepage fonctionne correctement Scénario: La liste des apéritifs à venir est affichée Quand je vais sur la page d'accueil Alors le bloc "A venir" est visible - Et l'apéritif du "19 juillet" à "Paris" est visible - Et l'apéritif du "19 juillet" à "Paris" est visible - Et l'apéritif du "19 juillet" à "Lyon" n'est pas visible + Et l'apéritif du "19 Juillet" à "Paris" est visible + Et l'apéritif du "19 Juillet" à "Lyon" n'est pas visible Scénario: Le bloc de création d'un apéritif est disponible Quand je vais sur la page d'accueil diff --git a/tests/functional/bootstrap/Context/HomepageContext.php b/tests/functional/bootstrap/Context/HomepageContext.php index b7ffb91..b0bfa21 100644 --- a/tests/functional/bootstrap/Context/HomepageContext.php +++ b/tests/functional/bootstrap/Context/HomepageContext.php @@ -2,12 +2,12 @@ namespace Context; -use Behat\Behat\Context\BehatContext; -use Behat\Behat\Exception\PendingException; +use SensioLabs\Behat\PageObjectExtension\Context\PageObjectContext; +use Behat\Behat\Exception; use Behat\Behat\Context\Step; use Behat\Gherkin\Node\TableNode; -class HomepageContext extends BehatContext +class HomepageContext extends PageObjectContext { /** * @Given /^le lien "([^"]*)" est visible$/ @@ -58,9 +58,9 @@ public function leBlocEstVisible($bloc_name) */ public function lAperitifDuAEstVisible($date, $place) { - return array( - new Step\Then("je devrais voir \"$date\""), - ); + if( !$this->getPage('Homepage')->hasDrink($date, $place) ) { + throw new \LogicException("L'apéritif du $date à $place est introuvable sur la page"); + } } /** @@ -68,8 +68,8 @@ public function lAperitifDuAEstVisible($date, $place) */ public function lAperitifDuANEstPasVisible($date, $place) { - return array( - new Step\Then("je ne devrais pas voir \"$date\""), - ); + if( $this->getPage('Homepage')->hasDrink($date, $place) ) { + throw new \LogicException("L'apéritif du $date à $place est présent sur la page"); + } } } diff --git a/tests/functional/bootstrap/Page/Homepage.php b/tests/functional/bootstrap/Page/Homepage.php index 0555c90..9a1ff1b 100644 --- a/tests/functional/bootstrap/Page/Homepage.php +++ b/tests/functional/bootstrap/Page/Homepage.php @@ -6,14 +6,32 @@ class Homepage extends PageObject\Page { protected $path = '/'; - protected $elements = array( - 'Menu' => array('css' => 'ul.mainnav'), - ); + /** + * Check if a drink for given place and date is displayed on the page + * + * @param string $date + * @param string $place + * @return boolean + */ + public function hasDrink($date, $place) + { + foreach( $this->getAllDrinks() as $drink ) { + if( strstr( $drink->getText(), $date ) && strstr( $drink->getText(), $place )) { + return true; + } + } + + return false; + } - public function hasMenu(array $menu_content) + /** + * Get all drinks element on the page + * + * @return array + */ + protected function getAllDrinks() { - $menu = $this->getElement('Menu'); - var_dump(array_diff($menu_content, $menu->toArray())); + return $this->findAll('css', 'ul.news-items li'); } } From a5c2c42c7dfaf85454997afec354ecb7e5576d5f Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Mon, 28 Oct 2013 19:33:53 +0100 Subject: [PATCH 04/16] Add: ignore PhpStorm dir --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index ecc639b..6cb511c 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ nbproject/ .settings/ # SublimeText *.sublime-* + # PhpStorm +*.idea # Backup files *.*~ From ac8b49d65b438edd4fd3147c8df91671323a1a0c Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Fri, 1 Nov 2013 23:50:00 +0100 Subject: [PATCH 05/16] Add: check style using coke --- .coke | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .coke diff --git a/.coke b/.coke new file mode 100644 index 0000000..f580cfa --- /dev/null +++ b/.coke @@ -0,0 +1,7 @@ +# coding standard +standard=PSR2 + +# Path to parse +src + +# Path to ignore From 86e75e48c1594fc822f5a1b0313f25e5b008d344 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Fri, 1 Nov 2013 23:54:18 +0100 Subject: [PATCH 06/16] Add: Homepage testing with PageObject pattern --- tests/functional/0001-homepage.feature | 5 +- .../bootstrap/Context/HomepageContext.php | 77 +++++++++++------ .../{View => Context}/WebContext.php | 10 +-- tests/functional/bootstrap/FeatureContext.php | 9 +- .../bootstrap/Page/Element/Menu.php | 56 ++++++++++++ tests/functional/bootstrap/Page/Homepage.php | 85 +++++++++++++++++-- 6 files changed, 191 insertions(+), 51 deletions(-) rename tests/functional/bootstrap/{View => Context}/WebContext.php (79%) create mode 100644 tests/functional/bootstrap/Page/Element/Menu.php diff --git a/tests/functional/0001-homepage.feature b/tests/functional/0001-homepage.feature index 144f915..6ca6cd8 100644 --- a/tests/functional/0001-homepage.feature +++ b/tests/functional/0001-homepage.feature @@ -8,7 +8,8 @@ Fonctionnalité: La homepage fonctionne correctement Scénario: Le menu est correctement affiché Quand je vais sur la page d'accueil - Alors le menu contient ces éléments: + Alors le menu est affiché + Et le menu contient ces éléments: | libellé | lien | | Accueil | / | | Organiser un apéro | /new.html | @@ -25,4 +26,4 @@ Fonctionnalité: La homepage fonctionne correctement Scénario: Le bloc de création d'un apéritif est disponible Quand je vais sur la page d'accueil Alors le bloc "Les apéros PHP" est visible - Et le lien "Organiser un apéro" est visible + Et il est possible de créer un apéro diff --git a/tests/functional/bootstrap/Context/HomepageContext.php b/tests/functional/bootstrap/Context/HomepageContext.php index b0bfa21..2f3cf9b 100644 --- a/tests/functional/bootstrap/Context/HomepageContext.php +++ b/tests/functional/bootstrap/Context/HomepageContext.php @@ -1,32 +1,27 @@ getPage('Homepage')->getElement('Menu'); + } catch (ElementNotFoundException $e) { + throw new \LogicException('Le menu n\'est pas affiché'); + } } /** @@ -34,13 +29,35 @@ public function leMenuEstAffiche() */ public function leMenuContientCesElements(TableNode $table) { - $steps = array(); + $expected_menus = $table->getHash(); + $nb_menus = $this->getPage('Homepage')->getElement('Menu')->countLinks(); - foreach( $table as $line ) { - $steps[] = new Step\Then("je devrais voir \"".$line['libellé']."\" dans l'élément \"ul.mainav li i[href=".$line['lien']."] span\""); + // Exactly same number of link allow to check if there is no extra elements + if (count($expected_menus) !== $nb_menus) { + throw new \LogicException( + sprintf( + 'Le nombre d\'éléments attendus (%d) ne correspond pas au nombre d\'élément trouvés (%s)', + count($expected_menus), + $nb_menus + ) + ); } - return $steps; + // Each link correspond to expected one + foreach ($expected_menus as $expected_menu) { + $label = $expected_menu['libellé']; + $link = $expected_menu['lien']; + + if (!$this->getPage('Homepage')->getElement('Menu')->isLinkExists($label, $link)) { + throw new \LogicException( + sprintf( + 'Le menu \'%s\' (%s) n\'est pas présent sur la page', + $label, + $link + ) + ); + } + } } /** @@ -48,9 +65,9 @@ public function leMenuContientCesElements(TableNode $table) */ public function leBlocEstVisible($bloc_name) { - return array( - new Step\Then("je devrais voir \"".$bloc_name."\""), - ); + if (!$this->getPage('Homepage')->hasBlock($bloc_name)) { + throw new \LogicException(sprintf('Impossible de trouver le bloc "%s"', $bloc_name)); + } } /** @@ -58,8 +75,8 @@ public function leBlocEstVisible($bloc_name) */ public function lAperitifDuAEstVisible($date, $place) { - if( !$this->getPage('Homepage')->hasDrink($date, $place) ) { - throw new \LogicException("L'apéritif du $date à $place est introuvable sur la page"); + if (!$this->getPage('Homepage')->hasDrink($date, $place)) { + throw new \LogicException("Impossible de trouver l'apéritif"); } } @@ -68,8 +85,18 @@ public function lAperitifDuAEstVisible($date, $place) */ public function lAperitifDuANEstPasVisible($date, $place) { - if( $this->getPage('Homepage')->hasDrink($date, $place) ) { - throw new \LogicException("L'apéritif du $date à $place est présent sur la page"); + if ($this->getPage('Homepage')->hasDrink($date, $place)) { + throw new \LogicException("L'apéritif est affiché sur la page"); + } + } + + /** + * @Given /^il est possible de créer un apéro$/ + */ + public function ilEstPossibleDeCreerUnApero() + { + if (!$this->getPage('Homepage')->hasAction('Les apéros PHP', 'Organiser un apéro »')) { + throw new \LogicException('Le lien de création d\'un apéro n\'est pas disponible'); } } } diff --git a/tests/functional/bootstrap/View/WebContext.php b/tests/functional/bootstrap/Context/WebContext.php similarity index 79% rename from tests/functional/bootstrap/View/WebContext.php rename to tests/functional/bootstrap/Context/WebContext.php index 6026732..6f7f614 100644 --- a/tests/functional/bootstrap/View/WebContext.php +++ b/tests/functional/bootstrap/Context/WebContext.php @@ -1,6 +1,6 @@ getMainContext()->getSubcontext('mink'); } - protected function getMenuLinks() - { - $session = $this->getMink()->getSession(); - $page = $session->getPage(); - - return $page->findAll('css', 'ul.mainnav > li > a'); - } - /** * @Given /^la page "(?P[^"]*)" s\'affiche correctement$/ */ diff --git a/tests/functional/bootstrap/FeatureContext.php b/tests/functional/bootstrap/FeatureContext.php index d57209c..52f3494 100644 --- a/tests/functional/bootstrap/FeatureContext.php +++ b/tests/functional/bootstrap/FeatureContext.php @@ -3,12 +3,7 @@ use Behat\Behat\Context\BehatContext; use Behat\MinkExtension\Context\MinkContext; -// -// Require 3rd-party libraries here: -// -// require_once 'PHPUnit/Autoload.php'; -// require_once 'PHPUnit/Framework/Assert/Functions.php'; -// +use Aperophp\Test\Functional\Context; /** * Features context. @@ -23,7 +18,7 @@ class FeatureContext extends BehatContext */ public function __construct(array $parameters) { - $this->useContext('view', new View\WebContext($parameters)); + $this->useContext('view', new Context\WebContext($parameters)); $this->useContext('homepage', new Context\HomepageContext($parameters)); $this->useContext('mink', new MinkContext($parameters)); } diff --git a/tests/functional/bootstrap/Page/Element/Menu.php b/tests/functional/bootstrap/Page/Element/Menu.php new file mode 100644 index 0000000..498e1f4 --- /dev/null +++ b/tests/functional/bootstrap/Page/Element/Menu.php @@ -0,0 +1,56 @@ + 'ul.mainnav'); + + /** + * Return an array of links in the menu + * + * @return array + */ + public function getLinks() + { + return $this->findAll('css', 'li a'); + } + + /** + * Give the number of links in the menu + * + * @return integer + */ + public function countLinks() + { + return count($this->getLinks()); + } + + /** + * Check if a menu link exist for the given label and given url + * + * @param string $label Link label + * @param string $url Link url + * @return boolean + */ + public function isLinkExists($label, $url) + { + foreach ($this->getLinks() as $link) { + if ($label == $link->getText() && strstr($link->getAttribute('href'), $url)) { + return true; + } + } + + return false; + } +} diff --git a/tests/functional/bootstrap/Page/Homepage.php b/tests/functional/bootstrap/Page/Homepage.php index 9a1ff1b..4dc7119 100644 --- a/tests/functional/bootstrap/Page/Homepage.php +++ b/tests/functional/bootstrap/Page/Homepage.php @@ -1,11 +1,70 @@ array('css' => 'div.widgets'), + ); + + /** + * Return all blocks elements on the page + * + * @return array + */ + protected function getAllBlocks() + { + return $this->findall('css', 'div.widget'); + } + + /** + * Return the block defined by its name + * + * @param string $title Block title + * @return Element + */ + public function getBlock($title) + { + foreach ($this->getAllBlocks() as $block) { + if ($block->find('css', '.widget-header')->getText() == $title) { + return $block; + } + } + + return null; + } + + /** + * Check if a block exists with the given title + * + * @param string $title Block title + * @return boolean + */ + public function hasBlock($title) + { + return !is_null($this->getBlock($title)); + } + + /** + * Get all drinks elements on the page + * + * @return array + */ + protected function getAllDrinks() + { + return $this->findAll('css', 'ul.news-items li'); + } + /** * Check if a drink for given place and date is displayed on the page * @@ -15,8 +74,8 @@ class Homepage extends PageObject\Page */ public function hasDrink($date, $place) { - foreach( $this->getAllDrinks() as $drink ) { - if( strstr( $drink->getText(), $date ) && strstr( $drink->getText(), $place )) { + foreach ($this->getAllDrinks() as $drink) { + if (strstr($drink->getText(), $date) && strstr($drink->getText(), $place)) { return true; } } @@ -25,14 +84,24 @@ public function hasDrink($date, $place) } /** - * Get all drinks element on the page + * Check if a link with the given text exists in the given block * - * @return array + * @param string $block Block name + * @param string $link_label Link label + * @return boolean */ - protected function getAllDrinks() + public function hasAction($block, $link_label) { - return $this->findAll('css', 'ul.news-items li'); + $block = $this->getBlock($block); + if ($block) { + $links = $block->findAll('css', 'a'); + foreach ($links as $link) { + if ($link->getText() == $link_label) { + return true; + } + } + } + + return false; } } - - From 6e7f11afc746f2a69568fa5d49e8c9d33cb9f381 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Thu, 21 Nov 2013 14:53:41 +0100 Subject: [PATCH 07/16] Mod: atoum --test-all param is deprecated --- .atoum.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.atoum.php b/.atoum.php index 99a59b3..3470bed 100644 --- a/.atoum.php +++ b/.atoum.php @@ -14,13 +14,13 @@ $notifier ->setSuccessImage($images . DIRECTORY_SEPARATOR . 'success.png') ->setFailureImage($images . DIRECTORY_SEPARATOR . 'failure.png') - ; + ; $report->addField($notifier, array(atoum\runner::runStop)); } /** * Return true if library is available on system - * + * * @param string $libName * @return boolean */ From 4c966c90bf1d4542740cb398f9ee60c934d59622 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Thu, 21 Nov 2013 14:54:58 +0100 Subject: [PATCH 08/16] Mod: refactoring databases command and allow to launch for further env --- app/console | 51 +++++++++++----------- bin/tests.sh | 2 +- src/Aperophp/Database/Tool.php | 79 ++++++++++++++++++++++++++++++++++ tests/units/bootstrap.php | 1 + 4 files changed, 106 insertions(+), 27 deletions(-) create mode 100644 src/Aperophp/Database/Tool.php diff --git a/app/console b/app/console index 42437ee..04f5893 100755 --- a/app/console +++ b/app/console @@ -3,46 +3,43 @@ $app = require __DIR__ . '/app.php'; -//Include the namespaces of the components we plan to use use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use Aperophp\Database\Tool as DatabaseTool; -$goToTestEnv = function() use ($app) { - require __DIR__.'/config_test.php'; -}; - -$importFile = function($file) use ($app) { - $app['db']->query(file_get_contents($file)); -}; +$changeEnvironment = function($env) use ($app) { + $env_config = __DIR__.'/config_'.$env.'.php'; -$loadFixtures = function() use ($app, $importFile) { - $importFile(__DIR__.'/../data/sql/fixtures.sql'); + if(file_exists($env_config)) { + require $env_config; + } }; $console = new Application('Aperophp', '1'); $console->register('db:install') ->setDefinition(array( - new InputOption('test', '', InputOption::VALUE_NONE, 'Test mode'), - new InputOption('load-fixtures', '', InputOption::VALUE_NONE, 'Test mode'), + new InputOption('env', 'dev', InputOption::VALUE_OPTIONAL, 'Environment'), + new InputOption('load-fixtures', '', InputOption::VALUE_NONE, 'Import fixtures after database creation'), )) ->setDescription('Create database') - ->setHelp('Usage: php app/console db:install [--test] [--load-fixtures]') + ->setHelp('Usage: php app/console db:install [--env=dev] [--load-fixtures]') ->setCode( - function(InputInterface $input, OutputInterface $output) use ($app, $goToTestEnv, $importFile, $loadFixtures) { - if ($input->getOption('test')) { - $goToTestEnv(); - } + function(InputInterface $input, OutputInterface $output) use ($app, $changeEnvironment) { + $output->writeln('Env : '.$input->getOption('env').''); + $changeEnvironment($input->getOption('env')); + + $databaseTool = new DatabaseTool($app['db']); $output->writeln('Create schema.'); - $importFile(__DIR__ . '/../data/sql/schema.mysql.sql'); + $databaseTool->createSchema(__DIR__ . '/../data/sql/schema.mysql.sql'); if ($input->getOption('load-fixtures')) { $output->writeln('Load fixtures.'); - $loadFixtures(); + $databaseTool->loadFixtures(__DIR__.'/../data/sql/fixtures.sql'); } $output->writeln('Installation done.'); @@ -51,17 +48,19 @@ $console->register('db:install') $console->register('db:load-fixtures') ->setDefinition(array( - new InputOption('test', '', InputOption::VALUE_NONE, 'Test mode'), + new InputOption('env', '', InputOption::VALUE_NONE, 'Environment'), )) ->setDescription('Create database') - ->setHelp('Usage: php app/console db:load-fixtures [--test]') + ->setHelp('Usage: php app/console db:load-fixtures [--env=dev]') ->setCode( - function(InputInterface $input, OutputInterface $output) use ($app, $goToTestEnv, $loadFixtures) { - if ($input->getOption('test')) { - $goToTestEnv(); - } + function(InputInterface $input, OutputInterface $output) use ($app, $changeEnvironment) { + $output->writeln('Env : '.$input->getOption('env').''); + $changeEnvironment($input->getOption('env')); + + $databaseTool = new DatabaseTool($app['db']); - $loadFixtures(); + $output->writeln('Load fixtures'); + $databaseTool->loadFixtures(__DIR__.'/../data/sql/fixtures.sql'); } ); diff --git a/bin/tests.sh b/bin/tests.sh index d911888..1cd6b8c 100755 --- a/bin/tests.sh +++ b/bin/tests.sh @@ -1,5 +1,5 @@ #!/bin/sh -php app/console db:install --test --load-fixtures +php app/console db:install --env=test --load-fixtures ./vendor/bin/atoum diff --git a/src/Aperophp/Database/Tool.php b/src/Aperophp/Database/Tool.php new file mode 100644 index 0000000..9ca79ab --- /dev/null +++ b/src/Aperophp/Database/Tool.php @@ -0,0 +1,79 @@ +db = $db; + } + + /** + * Create schema from filename into current connexion + * + * @param string $schema_filename Database schema filename + * @return boolean + */ + public function createSchema($schema_filename) + { + $this->executeQuery($this->getQueryFromFile($schema_filename)); + } + + /** + * Load fixtures into database + * + * @param string|array $fixtures Could be filename or array of filename + * @return boolean + */ + public function loadFixtures($fixtures) + { + if(!is_array($fixtures)) { + $fixtures = array($fixtures); + } + + foreach($fixtures as $fixture) + { + $this->executeQuery($this->getQueryFromFile($fixture)); + } + } + + /** + * Execute given SQL query into current database + * + * @param string $query SQL query string + * @return TODO + */ + protected function executeQuery($query) + { + return $this->db->query($query); + } + + /** + * Get content from file + * + * @param string $filename + * @return string + */ + protected function getQueryFromFile($filename) + { + if(!file_exists($filename)) { + throw new \InvalidArgumentException(sprintf("File '%s' does not exists", $filename)); + } + + if(!is_readable($filename)) { + throw new \InvalidArgumentException(sprintf("File '%s' is not readable", $filename)); + } + + return file_get_contents($filename); + } +} diff --git a/tests/units/bootstrap.php b/tests/units/bootstrap.php index 1a08a88..177b70e 100644 --- a/tests/units/bootstrap.php +++ b/tests/units/bootstrap.php @@ -1,3 +1,4 @@ Date: Thu, 21 Nov 2013 17:17:49 +0100 Subject: [PATCH 09/16] Mod: Composer update --- app/bootstrap.php | 1 - composer.json | 15 +- composer.lock | 2099 +++++++++++++++++++++++++++++++++++++++------ 3 files changed, 1864 insertions(+), 251 deletions(-) diff --git a/app/bootstrap.php b/app/bootstrap.php index 4c5c7c1..41aec04 100644 --- a/app/bootstrap.php +++ b/app/bootstrap.php @@ -77,7 +77,6 @@ // Add Twig extensions $app['twig'] = $app->share($app->extend('twig', function($twig, $app) { - $twig->addExtension(new Twig_Extensions_Extension_Debug()); $twig->addExtension(new Twig_Extensions_Extension_Text()); $twig->addGlobal('ga_enabled', $app['ga.enabled']); $twig->addGlobal('ga_ua', $app['ga.ua']); diff --git a/composer.json b/composer.json index c7fa936..1a8617d 100644 --- a/composer.json +++ b/composer.json @@ -5,10 +5,10 @@ "minimum-stability" : "dev", "require": { "silex/silex" : "1.0.*", - "doctrine/common" : "2.4.*", - "doctrine/dbal" : "2.4.*", - "twig/twig" : "1.12.*", - "twig/extensions" : "dev-master", + "doctrine/common" : "~2.4", + "doctrine/dbal" : "~2.4", + "twig/twig" : "~1.12", + "twig/extensions" : "~1.3", "symfony/class-loader" : "2.1.x", "symfony/form" : "2.1.x", "symfony/validator" : "2.1.x", @@ -27,7 +27,12 @@ "tijsverkoyen/akismet" : "1.1.0" }, "require-dev": { - "atoum/atoum" : "dev-master" + "atoum/atoum" : "~2.2", + "behat/behat" : "~2.4", + "behat/mink-extension" : "~1.0", + "behat/mink-goutte-driver" : "~1.0", + "sensiolabs/behat-page-object-extension" : "~1.0", + "bossa/phpspec2-expect" : "dev-master" }, "autoload": { "psr-0": { diff --git a/composer.lock b/composer.lock index 27752ed..6c0303e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "66d72700b9e1567924d9c245094368e6", - "content-hash": "82dd1592ef4ac8c44529a82821e15ea9", + "hash": "4c11be8f94d02f22c9a5a4c5b03c4c0a", + "content-hash": "4c40c05a9a07e8ff03cf2dfc4dd20000", "packages": [ { "name": "Gravatar/Gravatar", @@ -26,16 +26,16 @@ }, { "name": "doctrine/annotations", - "version": "v1.1.2", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "v1.1.2" + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/40db0c96985aab2822edbc4848b3bd2429e02670", - "reference": "v1.1.2", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", "shasum": "" }, "require": { @@ -43,12 +43,13 @@ "php": ">=5.3.2" }, "require-dev": { - "doctrine/cache": "1.*" + "doctrine/cache": "1.*", + "phpunit/phpunit": "4.*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -61,16 +62,6 @@ "MIT" ], "authors": [ - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -79,11 +70,17 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, { "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "http://jmsyst.com", - "role": "Developer of wrapped JMSSerializerBundle" + "email": "schmittjoh@gmail.com" } ], "description": "Docblock Annotations Parser", @@ -93,20 +90,20 @@ "docblock", "parser" ], - "time": "2013-06-16 21:33:03" + "time": "2015-08-31 12:32:49" }, { "name": "doctrine/cache", - "version": "v1.1", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "2c9761ff1d13e188d5f7378066c1ce2882d7a336" + "reference": "dd47003641aa5425820c0ec8a6f4a85e7412ffcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/2c9761ff1d13e188d5f7378066c1ce2882d7a336", - "reference": "2c9761ff1d13e188d5f7378066c1ce2882d7a336", + "url": "https://api.github.com/repos/doctrine/cache/zipball/dd47003641aa5425820c0ec8a6f4a85e7412ffcd", + "reference": "dd47003641aa5425820c0ec8a6f4a85e7412ffcd", "shasum": "" }, "require": { @@ -115,10 +112,15 @@ "conflict": { "doctrine/common": ">2.2,<2.4" }, + "require-dev": { + "phpunit/phpunit": ">=3.7", + "predis/predis": "~1.0", + "satooshi/php-coveralls": "~0.6" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.5.x-dev" } }, "autoload": { @@ -131,17 +133,6 @@ "MIT" ], "authors": [ - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/", - "role": "Creator" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -150,11 +141,17 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, { "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh", - "role": "Developer of wrapped JMSSerializerBundle" + "email": "schmittjoh@gmail.com" } ], "description": "Caching library offering an object-oriented API for many cache backends", @@ -163,7 +160,7 @@ "cache", "caching" ], - "time": "2013-08-07 16:04:25" + "time": "2015-09-16 13:31:45" }, { "name": "doctrine/collections", @@ -171,21 +168,24 @@ "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "bcb53776a096a0c64579cc8d8ec0db62f1109fbc" + "reference": "866e100a425b8b73d15393fd081c6bf067f05bf9" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/doctrine/collections/zipball/866e100a425b8b73d15393fd081c6bf067f05bf9", - "reference": "bcb53776a096a0c64579cc8d8ec0db62f1109fbc", + "reference": "866e100a425b8b73d15393fd081c6bf067f05bf9", "shasum": "" }, "require": { "php": ">=5.3.2" }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -198,16 +198,6 @@ "MIT" ], "authors": [ - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -216,11 +206,17 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, { "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "http://jmsyst.com", - "role": "Developer of wrapped JMSSerializerBundle" + "email": "schmittjoh@gmail.com" } ], "description": "Collections Abstraction library", @@ -230,7 +226,7 @@ "collections", "iterator" ], - "time": "2013-08-29 16:56:45" + "time": "2015-09-11 15:24:21" }, { "name": "doctrine/common", @@ -238,12 +234,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "6a39bb947b20d12a16820f2709509e41e28af005" + "reference": "9f35e74fcbe9011b660e0b423e98c83b7a8699c0" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/doctrine/common/zipball/9f35e74fcbe9011b660e0b423e98c83b7a8699c0", - "reference": "6a39bb947b20d12a16820f2709509e41e28af005", + "reference": "9f35e74fcbe9011b660e0b423e98c83b7a8699c0", "shasum": "" }, "require": { @@ -254,10 +250,13 @@ "doctrine/lexer": "1.*", "php": ">=5.3.2" }, + "require-dev": { + "phpunit/phpunit": "~4.7" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4.x-dev" + "dev-master": "2.6.x-dev" } }, "autoload": { @@ -270,16 +269,6 @@ "MIT" ], "authors": [ - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -288,11 +277,17 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, { "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "http://jmsyst.com", - "role": "Developer of wrapped JMSSerializerBundle" + "email": "schmittjoh@gmail.com" } ], "description": "Common Library for Doctrine projects", @@ -304,7 +299,7 @@ "persistence", "spl" ], - "time": "2013-07-02 11:26:20" + "time": "2015-09-16 13:21:47" }, { "name": "doctrine/dbal", @@ -312,29 +307,32 @@ "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "fbce4b50a89352cfe600116ea7267bd1066dc972" + "reference": "f44782e91c8c910736272986f543989d214daf1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/fbce4b50a89352cfe600116ea7267bd1066dc972", - "reference": "fbce4b50a89352cfe600116ea7267bd1066dc972", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/f44782e91c8c910736272986f543989d214daf1c", + "reference": "f44782e91c8c910736272986f543989d214daf1c", "shasum": "" }, "require": { - "doctrine/common": ">=2.4,<2.6-dev", - "php": ">=5.3.2" + "doctrine/common": "~2.4", + "php": ">=5.4" }, "require-dev": { - "phpunit/phpunit": "3.7.*", + "phpunit/phpunit": "4.*", "symfony/console": "2.*" }, "suggest": { - "symfony/console": "Allows use of the command line interface" + "symfony/console": "For helpful console commands such as SQL execution and import of files." }, + "bin": [ + "bin/doctrine-dbal" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4.x-dev" + "dev-master": "2.6.x-dev" } }, "autoload": { @@ -347,16 +345,6 @@ "MIT" ], "authors": [ - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -364,6 +352,14 @@ { "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" } ], "description": "Database Abstraction Layer", @@ -374,7 +370,7 @@ "persistence", "queryobject" ], - "time": "2013-07-29 00:10:38" + "time": "2015-09-11 16:01:12" }, { "name": "doctrine/inflector", @@ -382,17 +378,20 @@ "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "8b4b3ccec7aafc596e2fc1e593c9f2e78f939c8c" + "reference": "097e7ba84f64a427e55008117ef2bb94096731dc" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/doctrine/inflector/zipball/097e7ba84f64a427e55008117ef2bb94096731dc", - "reference": "8b4b3ccec7aafc596e2fc1e593c9f2e78f939c8c", + "reference": "097e7ba84f64a427e55008117ef2bb94096731dc", "shasum": "" }, "require": { "php": ">=5.3.2" }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, "type": "library", "extra": { "branch-alias": { @@ -409,16 +408,6 @@ "MIT" ], "authors": [ - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -428,10 +417,16 @@ "email": "kontakt@beberlei.de" }, { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh", - "role": "Developer of wrapped JMSSerializerBundle" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], "description": "Common String Manipulations with regard to casing and singular/plural rules.", @@ -442,7 +437,7 @@ "singularize", "string" ], - "time": "2013-04-10 16:14:30" + "time": "2015-10-07 18:00:26" }, { "name": "doctrine/lexer", @@ -450,12 +445,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "bc0e1f0cc285127a38c6c8ea88bc5dba2fd53e94" + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "bc0e1f0cc285127a38c6c8ea88bc5dba2fd53e94", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", "shasum": "" }, "require": { @@ -477,20 +472,17 @@ "MIT" ], "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, { "name": "Roman Borschel", "email": "roman@code-factory.org" }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh", - "role": "Developer of wrapped JMSSerializerBundle" + "email": "schmittjoh@gmail.com" } ], "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", @@ -499,7 +491,7 @@ "lexer", "parser" ], - "time": "2013-03-07 12:15:25" + "time": "2014-09-09 13:34:57" }, { "name": "fortawesome/font-awesome", @@ -665,22 +657,30 @@ }, { "name": "psr/log", - "version": "1.0.0", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "1.0.0" + "reference": "9e45edca52cc9c954680072c93e621f8b71fab26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", - "reference": "1.0.0", + "url": "https://api.github.com/repos/php-fig/log/zipball/9e45edca52cc9c954680072c93e621f8b71fab26", + "reference": "9e45edca52cc9c954680072c93e621f8b71fab26", "shasum": "" }, + "require": { + "php": ">=5.3.0" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "psr-0": { - "Psr\\Log\\": "" + "psr-4": { + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -699,7 +699,7 @@ "psr", "psr-3" ], - "time": "2012-12-21 11:40:51" + "time": "2015-06-02 13:48:41" }, { "name": "silex/silex", @@ -707,12 +707,12 @@ "source": { "type": "git", "url": "https://github.com/silexphp/Silex.git", - "reference": "4787bf21e416b9abd5cbf41daf136dae20d56f5c" + "reference": "75b8714f00bf4e64eedc0d9283b03eb05af67196" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/silexphp/Silex/zipball/75b8714f00bf4e64eedc0d9283b03eb05af67196", - "reference": "4787bf21e416b9abd5cbf41daf136dae20d56f5c", + "reference": "75b8714f00bf4e64eedc0d9283b03eb05af67196", "shasum": "" }, "require": { @@ -768,7 +768,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Igor Wiedler", @@ -781,7 +783,7 @@ "keywords": [ "microframework" ], - "time": "2013-09-08 05:31:36" + "time": "2014-06-06 05:48:07" }, { "name": "swiftmailer/swiftmailer", @@ -846,7 +848,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/browser-kit/zipball/0bb8f07107a2911db0fe49c39f96b5018e5ab678", - "reference": "v2.1.11", + "reference": "0bb8f07107a2911db0fe49c39f96b5018e5ab678", "shasum": "" }, "require": { @@ -871,13 +873,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony BrowserKit Component", @@ -896,7 +898,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/class-loader/zipball/0e9d7c12151d4c9942865a049d38e97c6c7288cb", - "reference": "v2.1.11", + "reference": "0e9d7c12151d4c9942865a049d38e97c6c7288cb", "shasum": "" }, "require": { @@ -916,13 +918,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony ClassLoader Component", @@ -941,7 +943,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/config/zipball/51909bf7f5d763d125a67781942d9293f65afae7", - "reference": "v2.1.11", + "reference": "51909bf7f5d763d125a67781942d9293f65afae7", "shasum": "" }, "require": { @@ -958,13 +960,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Config Component", @@ -1000,13 +1002,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Console Component", @@ -1025,7 +1027,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/css-selector/zipball/bf7bb82a099dfb26b018daf70ad1985fea4d2997", - "reference": "v2.1.11", + "reference": "bf7bb82a099dfb26b018daf70ad1985fea4d2997", "shasum": "" }, "require": { @@ -1042,13 +1044,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony CssSelector Component", @@ -1057,38 +1059,38 @@ }, { "name": "symfony/debug", - "version": "dev-master", - "target-dir": "Symfony/Component/Debug", + "version": "2.8.x-dev", "source": { "type": "git", - "url": "https://github.com/symfony/Debug.git", - "reference": "af5033bc37aae356ab04b0f581795d60262fd77e" + "url": "https://github.com/symfony/debug.git", + "reference": "a688bc1aeeb53ee4ed16b8f28de6768fdb8931fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Debug/zipball/af5033bc37aae356ab04b0f581795d60262fd77e", - "reference": "af5033bc37aae356ab04b0f581795d60262fd77e", + "url": "https://api.github.com/repos/symfony/debug/zipball/a688bc1aeeb53ee4ed16b8f28de6768fdb8931fc", + "reference": "a688bc1aeeb53ee4ed16b8f28de6768fdb8931fc", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9", + "psr/log": "~1.0" }, - "require-dev": { - "symfony/http-foundation": "~2.1", - "symfony/http-kernel": "~2.1" + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, - "suggest": { - "symfony/http-foundation": "", - "symfony/http-kernel": "" + "require-dev": { + "symfony/class-loader": "~2.2|~3.0.0", + "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2|~3.0.0", + "symfony/phpunit-bridge": "~2.7|~3.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.8-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Debug\\": "" } }, @@ -1103,12 +1105,12 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Debug Component", - "homepage": "http://symfony.com", - "time": "2013-09-13 12:20:47" + "homepage": "https://symfony.com", + "time": "2015-10-02 16:37:57" }, { "name": "symfony/dom-crawler", @@ -1122,7 +1124,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/bedfd7eb44e3b1224d1e18335d2e36bbbed26cbe", - "reference": "v2.1.11", + "reference": "bedfd7eb44e3b1224d1e18335d2e36bbbed26cbe", "shasum": "" }, "require": { @@ -1145,13 +1147,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony DomCrawler Component", @@ -1170,7 +1172,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e1d18ff0ff6f3e45ac82f000bc221135df635527", - "reference": "v2.1.11", + "reference": "e1d18ff0ff6f3e45ac82f000bc221135df635527", "shasum": "" }, "require": { @@ -1194,13 +1196,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony EventDispatcher Component", @@ -1219,7 +1221,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/Form/zipball/d2edecec0d0f854ed176f7ac32332d44fa31c696", - "reference": "v2.1.11", + "reference": "d2edecec0d0f854ed176f7ac32332d44fa31c696", "shasum": "" }, "require": { @@ -1249,7 +1251,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1272,12 +1276,15 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f9aad386aa4a27ef7b35ba6665afae6689de0a32", - "reference": "329b059893fdcc9399962ca5881d988264123d23", + "reference": "f9aad386aa4a27ef7b35ba6665afae6689de0a32", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, "type": "library", "extra": { "branch-alias": { @@ -1303,11 +1310,11 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony HttpFoundation Component", - "homepage": "http://symfony.com", + "homepage": "https://symfony.com", "time": "2015-09-28 17:11:22" }, { @@ -1322,26 +1329,29 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/703a8e941aae3adf50fea0780d90ab141ddba27f", - "reference": "f42c09457e6cdebdc34bb1603178c8e69be1565a", + "reference": "703a8e941aae3adf50fea0780d90ab141ddba27f", "shasum": "" }, "require": { "php": ">=5.3.3", "psr/log": "~1.0", - "symfony/debug": "~2.3", + "symfony/debug": "~2.3.24|~2.5.9|~2.6,>=2.6.2", "symfony/event-dispatcher": "~2.1", - "symfony/http-foundation": "~2.2" + "symfony/http-foundation": "~2.3,>=2.3.4" }, "require-dev": { - "symfony/browser-kit": "~2.2", + "symfony/browser-kit": "~2.3", "symfony/class-loader": "~2.1", - "symfony/config": "~2.0", + "symfony/config": "~2.0,>=2.0.5", "symfony/console": "~2.2", - "symfony/dependency-injection": "~2.0", - "symfony/finder": "~2.0", - "symfony/process": "~2.0", + "symfony/css-selector": "~2.0,>=2.0.5", + "symfony/dependency-injection": "~2.2", + "symfony/dom-crawler": "~2.0,>=2.0.5", + "symfony/finder": "~2.0,>=2.0.5", + "symfony/phpunit-bridge": "~2.7", + "symfony/process": "~2.0,>=2.0.5", "symfony/routing": "~2.2", - "symfony/stopwatch": "~2.2", + "symfony/stopwatch": "~2.3", "symfony/templating": "~2.2" }, "suggest": { @@ -1374,12 +1384,12 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony HttpKernel Component", - "homepage": "http://symfony.com", - "time": "2013-09-13 12:20:37" + "homepage": "https://symfony.com", + "time": "2015-10-05 17:32:31" }, { "name": "symfony/locale", @@ -1393,7 +1403,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/Locale/zipball/3ad6a5129809b3815a2b9056eee470dc2877717f", - "reference": "v2.1.11", + "reference": "3ad6a5129809b3815a2b9056eee470dc2877717f", "shasum": "" }, "require": { @@ -1415,7 +1425,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1438,7 +1450,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1a1319747462c2d457c3e1c8c2c9a26ad4bcb67b", - "reference": "v2.1.11", + "reference": "1a1319747462c2d457c3e1c8c2c9a26ad4bcb67b", "shasum": "" }, "require": { @@ -1455,13 +1467,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony OptionsResolver Component", @@ -1485,7 +1497,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/routing/zipball/8549a3faebaef87d2b938641e5d59beb6912be4b", - "reference": "3085975262bc36dc89929a936056dc6e5cb8a100", + "reference": "8549a3faebaef87d2b938641e5d59beb6912be4b", "shasum": "" }, "require": { @@ -1495,7 +1507,9 @@ "doctrine/common": "~2.2", "psr/log": "~1.0", "symfony/config": "~2.2", - "symfony/yaml": "~2.0" + "symfony/http-foundation": "~2.3", + "symfony/phpunit-bridge": "~2.7", + "symfony/yaml": "~2.0,>=2.0.5" }, "suggest": { "doctrine/common": "", @@ -1524,11 +1538,11 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Routing Component", - "homepage": "http://symfony.com", + "homepage": "https://symfony.com", "time": "2015-10-01 13:23:50" }, { @@ -1543,7 +1557,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/Translation/zipball/39ba7a5dc560959667c45c9353b70f43182ca4b3", - "reference": "v2.1.11", + "reference": "39ba7a5dc560959667c45c9353b70f43182ca4b3", "shasum": "" }, "require": { @@ -1570,7 +1584,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1593,7 +1609,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/e3a48a99971c35ad8d1c5bf36b6b3d22b15df306", - "reference": "v2.1.11", + "reference": "e3a48a99971c35ad8d1c5bf36b6b3d22b15df306", "shasum": "" }, "require": { @@ -1627,13 +1643,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Twig Bridge", @@ -1652,7 +1668,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/Validator/zipball/20e121114768672e0a90a25a378e5b14e1331ec0", - "reference": "v2.1.11", + "reference": "20e121114768672e0a90a25a378e5b14e1331ec0", "shasum": "" }, "require": { @@ -1681,7 +1697,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1753,21 +1771,27 @@ "source": { "type": "git", "url": "https://github.com/twigphp/Twig-extensions.git", - "reference": "f5b0c84f3699e494c84ee627d7d583e115d2c4a2" + "reference": "449e3c8a9ffad7c2479c7864557275a32b037499" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/449e3c8a9ffad7c2479c7864557275a32b037499", - "reference": "f5b0c84f3699e494c84ee627d7d583e115d2c4a2", + "reference": "449e3c8a9ffad7c2479c7864557275a32b037499", "shasum": "" }, "require": { - "twig/twig": "~1.0" + "twig/twig": "~1.20|~2.0" + }, + "require-dev": { + "symfony/translation": "~2.3" + }, + "suggest": { + "symfony/translation": "Allow the time_diff output to be translated" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -1786,35 +1810,38 @@ } ], "description": "Common additional features for Twig that do not directly belong in core", - "homepage": "https://github.com/fabpot/Twig-extensions", + "homepage": "http://twig.sensiolabs.org/doc/extensions/index.html", "keywords": [ - "debug", "i18n", "text" ], - "time": "2013-07-02 11:21:55" + "time": "2015-08-22 16:38:35" }, { "name": "twig/twig", - "version": "v1.12.3", + "version": "1.x-dev", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "27f3428b08c7f656d6824359a9d9dee3f5fce31b" + "reference": "efaf5036e6857616379b78648ffdb5fdafb92c87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/27f3428b08c7f656d6824359a9d9dee3f5fce31b", - "reference": "27f3428b08c7f656d6824359a9d9dee3f5fce31b", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/efaf5036e6857616379b78648ffdb5fdafb92c87", + "reference": "efaf5036e6857616379b78648ffdb5fdafb92c87", "shasum": "" }, "require": { - "php": ">=5.2.4" + "php": ">=5.2.7" + }, + "require-dev": { + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~2.7" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.22-dev" } }, "autoload": { @@ -1824,16 +1851,24 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3" + "BSD-3-Clause" ], "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com" + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", @@ -1841,7 +1876,7 @@ "keywords": [ "templating" ], - "time": "2013-04-08 12:40:11" + "time": "2015-10-04 08:38:04" } ], "packages-dev": [ @@ -1851,12 +1886,12 @@ "source": { "type": "git", "url": "https://github.com/atoum/atoum.git", - "reference": "d72a56e361142ea16a78924136657db0e65b6b85" + "reference": "8295a17544e0118720debbbff845a84b6f44396e" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/atoum/atoum/zipball/8295a17544e0118720debbbff845a84b6f44396e", - "reference": "d72a56e361142ea16a78924136657db0e65b6b85", + "reference": "8295a17544e0118720debbbff845a84b6f44396e", "shasum": "" }, "require": { @@ -1871,12 +1906,18 @@ "mageekguy/atoum": "*" }, "suggest": { + "atoum/stubs": "Provides IDE support (like autocompletion) for atoum", "ext-mbstring": "Provides support for UTF-8 strings" }, "bin": [ "bin/atoum" ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, "autoload": { "classmap": [ "classes/" @@ -1917,15 +1958,1583 @@ "test", "unit testing" ], - "time": "2013-09-13 08:51:09" + "time": "2015-10-07 07:58:48" + }, + { + "name": "behat/behat", + "version": "v2.5.4", + "source": { + "type": "git", + "url": "https://github.com/Behat/Behat.git", + "reference": "ba257dd19d47b6e196c4e43995a2d2db4dd95991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Behat/zipball/ba257dd19d47b6e196c4e43995a2d2db4dd95991", + "reference": "ba257dd19d47b6e196c4e43995a2d2db4dd95991", + "shasum": "" + }, + "require": { + "behat/gherkin": "~2.3.0", + "php": ">=5.3.1", + "symfony/config": "~2.0", + "symfony/console": "~2.0", + "symfony/dependency-injection": "~2.0", + "symfony/event-dispatcher": "~2.0", + "symfony/finder": "~2.0", + "symfony/translation": "~2.0", + "symfony/yaml": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.19" + }, + "suggest": { + "behat/mink-extension": "for integration with Mink testing framework", + "behat/symfony2-extension": "for integration with Symfony2 web framework", + "behat/yii-extension": "for integration with Yii web framework" + }, + "bin": [ + "bin/behat" + ], + "type": "library", + "autoload": { + "psr-0": { + "Behat\\Behat": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Scenario-oriented BDD framework for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Symfony2" + ], + "time": "2015-01-23 22:18:15" + }, + { + "name": "behat/gherkin", + "version": "2.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "c32e15d92e1a2ce399a1a1c5be7afd965176e86c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/c32e15d92e1a2ce399a1a1c5be7afd965176e86c", + "reference": "c32e15d92e1a2ce399a1a1c5be7afd965176e86c", + "shasum": "" + }, + "require": { + "php": ">=5.3.1", + "symfony/finder": "~2.0" + }, + "require-dev": { + "symfony/config": "~2.0", + "symfony/translation": "~2.0", + "symfony/yaml": "~2.0" + }, + "suggest": { + "symfony/config": "If you want to use Config component to manage resources", + "symfony/translation": "If you want to use Symfony2 translations adapter", + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "2.2-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "DSL", + "Symfony2", + "parser" + ], + "time": "2014-06-06 00:48:18" + }, + { + "name": "behat/mink", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/minkphp/Mink.git", + "reference": "0769e6d9726c140a54dbf827a438c0f9912749fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/Mink/zipball/0769e6d9726c140a54dbf827a438c0f9912749fe", + "reference": "0769e6d9726c140a54dbf827a438c0f9912749fe", + "shasum": "" + }, + "require": { + "php": ">=5.3.1", + "symfony/css-selector": "~2.0" + }, + "suggest": { + "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", + "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", + "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", + "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "1.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Mink": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Web acceptance testing framework for PHP 5.3", + "homepage": "http://mink.behat.org/", + "keywords": [ + "browser", + "testing", + "web" + ], + "time": "2013-04-13 23:39:27" + }, + { + "name": "behat/mink-browserkit-driver", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkBrowserKitDriver.git", + "reference": "63960c8fcad4529faad1ff33e950217980baa64c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/63960c8fcad4529faad1ff33e950217980baa64c", + "reference": "63960c8fcad4529faad1ff33e950217980baa64c", + "shasum": "" + }, + "require": { + "behat/mink": "~1.5.0", + "php": ">=5.3.1", + "symfony/browser-kit": "~2.0", + "symfony/dom-crawler": "~2.0" + }, + "require-dev": { + "silex/silex": "@dev" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Mink\\Driver": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Symfony2 BrowserKit driver for Mink framework", + "homepage": "http://mink.behat.org/", + "keywords": [ + "Mink", + "Symfony2", + "browser", + "testing" + ], + "time": "2013-04-13 23:46:30" + }, + { + "name": "behat/mink-extension", + "version": "1.2.x-dev", + "source": { + "type": "git", + "url": "https://github.com/Behat/MinkExtension.git", + "reference": "c5a47aced3fd3c2a86fe2164264a6dd058b5010d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/c5a47aced3fd3c2a86fe2164264a6dd058b5010d", + "reference": "c5a47aced3fd3c2a86fe2164264a6dd058b5010d", + "shasum": "" + }, + "require": { + "behat/behat": "~2.5.0", + "behat/mink": ">=1.4.3,<1.6-dev", + "php": ">=5.3.2" + }, + "require-dev": { + "behat/mink-goutte-driver": "~1.0" + }, + "type": "behat-extension", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\MinkExtension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "Mink extension for Behat", + "homepage": "http://mink.behat.org", + "keywords": [ + "browser", + "gui", + "test", + "web" + ], + "time": "2014-08-05 06:10:35" + }, + { + "name": "behat/mink-goutte-driver", + "version": "v1.0.9", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkGoutteDriver.git", + "reference": "fa1b073b48761464feb0b05e6825da44b20118d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/fa1b073b48761464feb0b05e6825da44b20118d8", + "reference": "fa1b073b48761464feb0b05e6825da44b20118d8", + "shasum": "" + }, + "require": { + "behat/mink-browserkit-driver": ">=1.0.5,<1.2.0", + "fabpot/goutte": "~1.0.1", + "php": ">=5.3.1" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Mink\\Driver": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Goutte driver for Mink framework", + "homepage": "http://mink.behat.org/", + "keywords": [ + "browser", + "goutte", + "headless", + "testing" + ], + "time": "2013-07-03 18:43:54" + }, + { + "name": "bossa/phpspec2-expect", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/BossaConsulting/phpspec2-expect.git", + "reference": "f3a80b7fa743b8a1078a7e320bd3e8b8b6283780" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/BossaConsulting/phpspec2-expect/zipball/f3a80b7fa743b8a1078a7e320bd3e8b8b6283780", + "reference": "f3a80b7fa743b8a1078a7e320bd3e8b8b6283780", + "shasum": "" + }, + "require": { + "phpspec/phpspec": "~2.0" + }, + "type": "library", + "autoload": { + "files": [ + "expect.php" + ], + "psr-0": { + "Bossa\\PhpSpec\\Expect\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marcello Duarte", + "homepage": "http://marcelloduarte.net/" + } + ], + "description": "Helper that decorates any SUS with a phpspec lazy object wrapper", + "keywords": [ + "BDD", + "SpecBDD", + "TDD", + "spec", + "specification" + ], + "time": "2014-09-12 09:25:51" + }, + { + "name": "doctrine/instantiator", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14 21:17:01" + }, + { + "name": "fabpot/goutte", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/Goutte.git", + "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/751a3dc5c4d86ec3e97c9f27133ef9694d9243cc", + "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0", + "symfony/browser-kit": "~2.1", + "symfony/css-selector": "~2.1", + "symfony/dom-crawler": "~2.1" + }, + "type": "application", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Goutte\\": "Goutte" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A simple PHP Web Scraper", + "homepage": "https://github.com/FriendsOfPHP/Goutte", + "keywords": [ + "scraper" + ], + "time": "2015-08-29 16:16:56" + }, + { + "name": "guzzle/common", + "version": "dev-master", + "target-dir": "Guzzle/Common", + "source": { + "type": "git", + "url": "https://github.com/Guzzle3/common.git", + "reference": "2e36af7cf2ce3ea1f2d7c2831843b883a8e7b7dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Guzzle3/common/zipball/2e36af7cf2ce3ea1f2d7c2831843b883a8e7b7dc", + "reference": "2e36af7cf2ce3ea1f2d7c2831843b883a8e7b7dc", + "shasum": "" + }, + "require": { + "php": ">=5.3.2", + "symfony/event-dispatcher": ">=2.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle\\Common": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Common libraries used by Guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "collection", + "common", + "event", + "exception" + ], + "abandoned": "guzzle/guzzle", + "time": "2014-08-11 04:32:36" + }, + { + "name": "guzzle/http", + "version": "dev-master", + "target-dir": "Guzzle/Http", + "source": { + "type": "git", + "url": "https://github.com/Guzzle3/http.git", + "reference": "1e8dd1e2ba9dc42332396f39fbfab950b2301dc5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Guzzle3/http/zipball/1e8dd1e2ba9dc42332396f39fbfab950b2301dc5", + "reference": "1e8dd1e2ba9dc42332396f39fbfab950b2301dc5", + "shasum": "" + }, + "require": { + "guzzle/common": "self.version", + "guzzle/parser": "self.version", + "guzzle/stream": "self.version", + "php": ">=5.3.2" + }, + "suggest": { + "ext-curl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle\\Http": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "HTTP libraries used by Guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "Guzzle", + "client", + "curl", + "http", + "http client" + ], + "abandoned": "guzzle/guzzle", + "time": "2014-08-11 04:32:36" + }, + { + "name": "guzzle/parser", + "version": "dev-master", + "target-dir": "Guzzle/Parser", + "source": { + "type": "git", + "url": "https://github.com/Guzzle3/parser.git", + "reference": "6874d171318a8e93eb6d224cf85e4678490b625c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Guzzle3/parser/zipball/6874d171318a8e93eb6d224cf85e4678490b625c", + "reference": "6874d171318a8e93eb6d224cf85e4678490b625c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle\\Parser": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Interchangeable parsers used by Guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "URI Template", + "cookie", + "http", + "message", + "url" + ], + "abandoned": "guzzle/guzzle", + "time": "2014-02-05 18:29:46" + }, + { + "name": "guzzle/stream", + "version": "dev-master", + "target-dir": "Guzzle/Stream", + "source": { + "type": "git", + "url": "https://github.com/Guzzle3/stream.git", + "reference": "60c7fed02e98d2c518dae8f97874c8f4622100f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Guzzle3/stream/zipball/60c7fed02e98d2c518dae8f97874c8f4622100f0", + "reference": "60c7fed02e98d2c518dae8f97874c8f4622100f0", + "shasum": "" + }, + "require": { + "guzzle/common": "self.version", + "php": ">=5.3.2" + }, + "suggest": { + "guzzle/http": "To convert Guzzle request objects to PHP streams" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle\\Stream": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle stream wrapper component", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "Guzzle", + "component", + "stream" + ], + "abandoned": "guzzle/guzzle", + "time": "2014-05-01 21:36:02" + }, + { + "name": "guzzlehttp/guzzle", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "6d6c3a68fbea09c50b251553d59b9209b475e272" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/6d6c3a68fbea09c50b251553d59b9209b475e272", + "reference": "6d6c3a68fbea09c50b251553d59b9209b475e272", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "~1.0", + "guzzlehttp/psr7": "~1.1", + "php": ">=5.5.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "~4.0", + "psr/log": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2015-10-05 21:30:32" + }, + { + "name": "guzzlehttp/promises", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "97fe7210def29451ec74923b27e552238defd75a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/97fe7210def29451ec74923b27e552238defd75a", + "reference": "97fe7210def29451ec74923b27e552238defd75a", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2015-08-15 19:37:21" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/4ef919b0cf3b1989523138b60163bbcb7ba1ff7e", + "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2015-08-15 19:32:36" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2015-02-03 12:10:50" + }, + { + "name": "phpspec/php-diff", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/phpspec/php-diff.git", + "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/php-diff/zipball/30e103d19519fe678ae64a60d77884ef3d71b28a", + "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Diff": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Chris Boulton", + "homepage": "http://github.com/chrisboulton" + } + ], + "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", + "time": "2013-11-01 13:02:21" + }, + { + "name": "phpspec/phpspec", + "version": "2.1.0-RC1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/phpspec.git", + "reference": "fbd1e6c577cb64302df2b416407fda396db7e102" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/fbd1e6c577cb64302df2b416407fda396db7e102", + "reference": "fbd1e6c577cb64302df2b416407fda396db7e102", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "~1.0,>=1.0.1", + "php": ">=5.3.3", + "phpspec/php-diff": "~1.0.0", + "phpspec/prophecy": "~1.1", + "sebastian/exporter": "~1.0", + "symfony/console": "~2.1", + "symfony/event-dispatcher": "~2.1", + "symfony/finder": "~2.1", + "symfony/process": "~2.1", + "symfony/yaml": "~2.1" + }, + "require-dev": { + "behat/behat": "~3.0", + "bossa/phpspec2-expect": "~1.0", + "symfony/filesystem": "~2.1" + }, + "suggest": { + "phpspec/nyan-formatters": "~1.0 – Adds Nyan formatters" + }, + "bin": [ + "bin/phpspec" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "PhpSpec": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "homepage": "http://marcelloduarte.net/" + } + ], + "description": "Specification-oriented BDD framework for PHP 5.3+", + "homepage": "http://phpspec.net/", + "keywords": [ + "BDD", + "SpecBDD", + "TDD", + "spec", + "specification", + "testing", + "tests" + ], + "time": "2014-09-14 12:22:14" + }, + { + "name": "phpspec/prophecy", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4f9b1eaf0a7da77c362f8d91cbc68ab1f4718d62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4f9b1eaf0a7da77c362f8d91cbc68ab1f4718d62", + "reference": "4f9b1eaf0a7da77c362f8d91cbc68ab1f4718d62", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "phpdocumentor/reflection-docblock": "~2.0", + "sebastian/comparator": "~1.1" + }, + "require-dev": { + "phpspec/phpspec": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2015-09-22 14:49:23" + }, + { + "name": "psr/http-message", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", + "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2015-05-04 20:22:00" + }, + { + "name": "sebastian/comparator", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2015-07-26 15:48:44" + }, + { + "name": "sebastian/diff", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "6899b3e33bfbd386d88b5eea5f65f563e8793051" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6899b3e33bfbd386d88b5eea5f65f563e8793051", + "reference": "6899b3e33bfbd386d88b5eea5f65f563e8793051", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "http://www.github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-06-22 14:15:55" + }, + { + "name": "sebastian/exporter", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "f88f8936517d54ae6d589166810877fb2015d0a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f88f8936517d54ae6d589166810877fb2015d0a2", + "reference": "f88f8936517d54ae6d589166810877fb2015d0a2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2015-08-09 04:23:41" + }, + { + "name": "sebastian/recursion-context", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "994d4a811bafe801fb06dccbee797863ba2792ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba", + "reference": "994d4a811bafe801fb06dccbee797863ba2792ba", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-06-21 08:04:50" + }, + { + "name": "symfony/dependency-injection", + "version": "2.8.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "70760d20f55ae20f34332ced5b49de7b3fedc21c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/70760d20f55ae20f34332ced5b49de7b3fedc21c", + "reference": "70760d20f55ae20f34332ced5b49de7b3fedc21c", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/expression-language": "<2.6" + }, + "require-dev": { + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/phpunit-bridge": "~2.7|~3.0.0", + "symfony/yaml": "~2.1|~3.0.0" + }, + "suggest": { + "symfony/config": "", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2015-10-06 07:36:27" + }, + { + "name": "symfony/finder", + "version": "2.8.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "dc3598fe55e1016a04479387cef13cd703050560" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/dc3598fe55e1016a04479387cef13cd703050560", + "reference": "dc3598fe55e1016a04479387cef13cd703050560", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7|~3.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2015-10-06 17:12:59" + }, + { + "name": "symfony/process", + "version": "2.8.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "69d7a410cf97857296f62f662105db4101fabdc5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/69d7a410cf97857296f62f662105db4101fabdc5", + "reference": "69d7a410cf97857296f62f662105db4101fabdc5", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7|~3.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2015-10-06 17:12:59" + }, + { + "name": "symfony/yaml", + "version": "2.8.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "36ddab7971364b20229155cd972631a2257d7dac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/36ddab7971364b20229155cd972631a2257d7dac", + "reference": "36ddab7971364b20229155cd972631a2257d7dac", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7|~3.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2015-10-02 12:38:01" } ], "aliases": [], "minimum-stability": "dev", "stability-flags": { - "twig/extensions": 20, "michelf/php-markdown": 20, - "atoum/atoum": 20 + "bossa/phpspec2-expect": 20 }, "prefer-stable": false, "prefer-lowest": false, From cbfb8f08ce90e5ad41842d0bc7a40fdfa26dca21 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Fri, 22 Nov 2013 00:16:02 +0100 Subject: [PATCH 10/16] Mod: form->get is deprecated --- src/Resources/views/drink/_participate.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Resources/views/drink/_participate.html.twig b/src/Resources/views/drink/_participate.html.twig index c3634c0..05918f2 100644 --- a/src/Resources/views/drink/_participate.html.twig +++ b/src/Resources/views/drink/_participate.html.twig @@ -39,7 +39,7 @@
{{ form_errors(participationForm.reminder) }}
From 1f74a754c6bd304cb7aecb72d66100aaec61c978 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Fri, 22 Nov 2013 00:20:56 +0100 Subject: [PATCH 11/16] Rem: Delete Controllers test from atoum --- .../Aperophp/Provider/Controller/Comment.php | 79 ---- .../Aperophp/Provider/Controller/Drink.php | 226 ---------- .../Aperophp/Provider/Controller/Member.php | 400 ------------------ .../Provider/Controller/Participate.php | 391 ----------------- 4 files changed, 1096 deletions(-) delete mode 100644 tests/units/Aperophp/Provider/Controller/Comment.php delete mode 100644 tests/units/Aperophp/Provider/Controller/Drink.php delete mode 100644 tests/units/Aperophp/Provider/Controller/Member.php delete mode 100644 tests/units/Aperophp/Provider/Controller/Participate.php diff --git a/tests/units/Aperophp/Provider/Controller/Comment.php b/tests/units/Aperophp/Provider/Controller/Comment.php deleted file mode 100644 index 5a1ba2e..0000000 --- a/tests/units/Aperophp/Provider/Controller/Comment.php +++ /dev/null @@ -1,79 +0,0 @@ - '', - 'drink_comment[user][firstname]' => 'Foo', - 'drink_comment[user][lastname]' => 'Bar', - 'drink_comment[user][email]' => 'foobar@example.org', - 'drink_comment[content]' => 'Super apéro.', - ), - $data_overload - ); - } - - public function testCommentDrinkWithUnanonymousUser() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/1/view.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('blockquote')->count()-1)->isEqualTo(2) - ->if($form = $crawler->selectButton('comment')->form()) - ->and($crawler = $client->submit($form, $this->getDefaultDatas())) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ->integer($crawler->filter('blockquote')->count()-1)->isEqualTo(3) - ; - } - - public function testNewCommentDrink_withNoCaptcha_isNotCreated() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/1/view.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('blockquote')->count()-1)->isEqualTo(2) - ->if($form = $crawler->selectButton('comment')->form()) - ->and($crawler = $client->submit($form, $this->getDefaultDatas(array('drink_comment[user][firstname]' => 'DO NOT FEED')))) - ->then() - ->boolean($client->getResponse()->isRedirect('/drink/1/view.html'))->isFalse() - ; - } - - public function testCommentDrinkWithNoData() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/1/view.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('blockquote')->count()-1)->isEqualTo(2) - ->if($form = $crawler->selectButton('comment')->form()) - ->and($crawler = $client->submit($form, $this->getDefaultDatas(array( - 'drink_comment[user][firstname]' => '', - 'drink_comment[user][lastname]' => '', - 'drink_comment[user][email]' => '', - 'drink_comment[content]' => '', - )))) - ->then() - ->boolean($client->getResponse()->isRedirect('/drink/1/view.html'))->isFalse() - ; - } -} diff --git a/tests/units/Aperophp/Provider/Controller/Drink.php b/tests/units/Aperophp/Provider/Controller/Drink.php deleted file mode 100644 index c6dcf84..0000000 --- a/tests/units/Aperophp/Provider/Controller/Drink.php +++ /dev/null @@ -1,226 +0,0 @@ - '', - 'drink[hour]' => '19:30:00', - 'drink[description]' => 'ApéroPHP au père tranquille.', - 'drink[city_id]' => '5', - 'drink[kind]' => 'drink', - 'drink[place]' => 'Au père tranquille', - 'drink[address]' => '16 Rue Pierre Lescot, Paris, France', - 'drink[latitude]' => '48.86214', - 'drink[longitude]' => '2.34843', - 'drink[day]' => '2016-07-19', - ), - $data_overload - ); - } - - public function testDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ; - } - - public function testNewDrink_withNoCaptcha_isNotCreated() - { - $this->assert - ->if($client = $this->createClient()) - ->and(true === $client->connect()) - ->and($crawler = $client->request('GET', '/new.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('create')->form()) - ->and($crawler = $client->submit($form, $this->getDefaultDatas(array('drink[captcha]' => 'DO NOT FEED')))) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ; - } - - public function testNewDrink_withValidData_isCreated() - { - $this->assert - ->if($client = $this->createClient()) - ->and(true === $client->connect()) - ->and($crawler = $client->request('GET', '/new.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('create')->form()) - ->and($crawler = $client->submit($form, $this->getDefaultDatas())) - ->then() - ->boolean($client->getResponse()->isRedirect())->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer(preg_match('#^/(\d+)/view\.html$#', $client->getRequest()->getRequestUri()))->isEqualTo(1) - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ; - } - - public function testNewDrink_withAnonymousUser_isRedirectedToLoginform() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/new.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/signin.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testEditDrink_withValidData_isUpdated() - { - $this->assert - ->if($client = $this->createClient()) - ->and(true == $client->connect()) - ->and($crawler = $client->request('GET', '/1/edit.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('update')->form()) - ->then() - ->if($crawler = $client->submit($form, $this->getDefaultDatas(array( - 'drink[hour]' => '20:00:00', - 'drink[description]' => 'ApéroPHP au père tranquille [Edited].', - 'drink[kind]' => 'talk', - 'drink[day]' => '2016-07-20', - )))) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ->integer($crawler->filter('p:contains("[Edited]")')->count())->isEqualTo(1) - ->integer($crawler->filter('h1:contains("Mini-conf")')->count())->isEqualTo(1) - ; - } - - public function testEditDrink_withBadData_isUpdated() - { - $this->assert - ->if($client = $this->createClient()) - ->and(true == $client->connect()) - ->then() - ->if($crawler = $client->request('GET', '/1/edit.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('update')->form()) - ->then() - ->if($crawler = $client->submit($form, $this->getDefaultDatas(array( - 'drink[captcha]' => '', - 'drink[hour]' => '00:00:00', - 'drink[description]' => '', - 'drink[place]' => '', - 'drink[address]' => '', - 'drink[latitude]' => '', - 'drink[longitude]' => '', - 'drink[day]' => '', - )))) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/edit.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testEditDrink_withAnonymousUser_isRedirectedToLoginForm() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/1/edit.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/signin.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testEditDrink_withWrongUser_isRedirectedToLoginForm() - { - $this->assert - ->if($client = $this->createClient()) - ->and(true == $client->connect('user2', 'password')) - ->and($crawler = $client->request('GET', '/1/edit.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testEditDrink_withOldDrink_isRedirectedToDrinkView() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/2/edit.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/2/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testEditDrink_withUnknowDrink_isRedirectedTo404() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/1456/edit.html')) - ->then() - ->boolean($client->getResponse()->isNotFound())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testDrinkList() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/list.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ; - } - - public function testViewDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/1/view.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ; - } - - public function testViewUnexistentDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->and($crawler = $client->request('GET', '/987/view.html')) - ->then() - ->boolean($client->getResponse()->isNotFound())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } -} diff --git a/tests/units/Aperophp/Provider/Controller/Member.php b/tests/units/Aperophp/Provider/Controller/Member.php deleted file mode 100644 index bead9fd..0000000 --- a/tests/units/Aperophp/Provider/Controller/Member.php +++ /dev/null @@ -1,400 +0,0 @@ -assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/signup.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('register')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'signup[user][lastname]' => 'Foo', - 'signup[user][firstname]' => 'Bar', - 'signup[member][username]' => 'foobar', - 'signup[user][email]' => 'foobar@example.com', - 'signup[member][password]' => 'foobar', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/signin.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ; - } - - public function testSignup_withIncorrectData_formIsDisplayedWithErrors() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/signup.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('register')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'signup[user][lastname]' => '', - 'signup[user][firstname]' => '', - 'signup[member][username]' => '', - 'signup[user][email]' => 'foobar', - 'signup[member][password]' => 'f', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect())->isFalse() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ->integer($crawler->filter('span.help-inline')->count())->isEqualTo(3) - ; - } - - public function testSignup_connected() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if(true == $client->connect()) - ->then() - ->if($crawler = $client->request('GET', '/member/signup.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testEditProfile_withValidData_isModified() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if(true == $client->connect()) - ->then() - ->if($crawler = $client->request('GET', '/member/edit.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('edit')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'member_edit[user][lastname]' => 'Foo', - 'member_edit[user][firstname]' => 'Bar', - 'member_edit[user][email]' => 'foobar@example.com', - 'member_edit[member][password]' => '', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/edit.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ; - } - - public function testEditProfile_withInvalidData_isNotModified() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if(true == $client->connect()) - ->then() - ->if($crawler = $client->request('GET', '/member/edit.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('edit')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'member_edit[user][lastname]' => '', - 'member_edit[user][firstname]' => '', - 'member_edit[user][email]' => '', - 'member_edit[member][password]' => '', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/edit.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testEditProfile_withAnonymousUser_isRedirectedToLoginform() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/edit.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/signin.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testSignin_badPassword() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/signin.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('login')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'signin[username]' => 'user2', - 'signin[password]' => 'badpassword', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect())->isFalse() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testSignin_connected() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if(true == $client->connect()) - ->then() - ->if($crawler = $client->request('GET', '/member/signin.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testForget_goodMail() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/forget.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('remember')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'member_forget[email]' => 'user3@example.org', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ->boolean(true == $client->connect())->isTrue() - ; - } - - public function testForget_badMail() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/forget.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('remember')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'member_forget[email]' => 'user42@example.org', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/forget.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testForget_user() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/forget.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('remember')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'member_forget[email]' => 'user2@example.org', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/forget.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testForget_connected() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if(true == $client->connect()) - ->then() - ->if($crawler = $client->request('GET', '/member/forget.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testForget_noData() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/forget.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('remember')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'member_forget[email]' => '', - ))) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testRemember_goodData() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/remember.html/user3@example.org/token')) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/signin.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ; - } - - public function testRemember_badToken() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/remember.html/user3@example.org/token42')) - ->then() - ->boolean($client->getResponse()->isRedirect('/'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testRemember_badEmail() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/remember.html/user42@example.org/token')) - ->then() - ->boolean($client->getResponse()->isRedirect('/'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testRemember_anonymous() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/remember.html/user2@example.org/token')) - ->then() - ->boolean($client->getResponse()->isRedirect('/'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testRemember_connected() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if(true == $client->connect()) - ->then() - ->if($crawler = $client->request('GET', '/member/remember.html/user@example.org/token')) - ->then() - ->boolean($client->getResponse()->isRedirect('/'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testSignup_withExistingEmail_areParticipationsChanged() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/member/signup.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('register')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'signup[user][lastname]' => 'Foo', - 'signup[user][firstname]' => 'Bar', - 'signup[member][username]' => 'marvin', - 'signup[user][email]' => 'user4@example.org', - 'signup[member][password]' => 'user4', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/member/signin.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ->if(true === $client->connect('marvin', 'user4')) - ->then - ->if($crawler = $client->request('GET', '/1/view.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('td.vleft:contains("marvin")')->count())->isEqualTo(1) - ->integer($crawler->filter('small:contains("marvin")')->count())->isEqualTo(1) - ; - } -} diff --git a/tests/units/Aperophp/Provider/Controller/Participate.php b/tests/units/Aperophp/Provider/Controller/Participate.php deleted file mode 100644 index 467d1e7..0000000 --- a/tests/units/Aperophp/Provider/Controller/Participate.php +++ /dev/null @@ -1,391 +0,0 @@ -assert - ->if($client = $this->createClient()) - ->then - ->if(true === $client->connect()) - ->then - ->if($crawler = $client->request('GET', '/1/view.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.participation a.btn:contains("Modifier")')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("Se désinscrire")')->count())->isEqualTo(1) - ->if($form = $crawler->selectButton('participate')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'drink_participate[percentage]' => '30', - 'drink_participate[reminder]' => true, - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("Modifier")')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("Se désinscrire")')->count())->isEqualTo(1) - // Now, I participate to the drink. - // CHeck if all fields have been prefilled - ->string($crawler->filter('select#drink_participate_percentage option[selected=selected]')->first()->attr('value'))->isEqualTo('30') - ->string($crawler->filter('input#drink_participate_reminder')->first()->attr('value'))->isEqualTo(1) - // Submit the form again to modified participation - ->if($crawler = $client->submit($form, array( - 'drink_participate[percentage]' => '70', - 'drink_participate[reminder]' => true, - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ->string($crawler->filter('select#drink_participate_percentage option[selected=selected]')->first()->attr('value'))->isEqualTo('70') - ->integer($crawler->filter('div.participation a.btn:contains("Modifier")')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("Se désinscrire")')->count())->isEqualTo(1) - // Delete an existing participation - ->if($crawler = $client->request('GET', '/participation/1/delete.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("S\'inscrire")')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("Jeton perdu ?")')->count())->isEqualTo(0) - // Delete a non-existing participation - ->if($crawler = $client->request('GET', '/participation/1/delete.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testEditParticipationToADrink_withUnanonymousUser_participationSaved() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/1/view.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.participation a.btn:contains("S\'inscrire")')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("Jeton perdu ?")')->count())->isEqualTo(1) - ->if($form = $crawler->selectButton('participate')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'drink_participate[user][firstname]' => 'Foo', - 'drink_participate[user][lastname]' => 'Bar', - 'drink_participate[user][email]' => 'foobar@example.org', - 'drink_participate[percentage]' => '30', - 'drink_participate[reminder]' => true, - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - // Now, I participate to the drink. - ->integer($crawler->filter('div.participation a.btn:contains("Modifier")')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("Se désinscrire")')->count())->isEqualTo(1) - // CHeck if all fields have been prefilled - ->string($crawler->filter('input#drink_participate_user_firstname')->first()->attr('value'))->isEqualTo('Foo') - ->string($crawler->filter('input#drink_participate_user_lastname')->first()->attr('value'))->isEqualTo('Bar') - ->string($crawler->filter('input#drink_participate_user_email')->first()->attr('value'))->isEqualTo('foobar@example.org') - ->string($crawler->filter('select#drink_participate_percentage option[selected=selected]')->first()->attr('value'))->isEqualTo('30') - ->string($crawler->filter('input#drink_participate_reminder')->first()->attr('value'))->isEqualTo(1) - // Submit the form again to modified participation - ->if($crawler = $client->submit($form, array( - 'drink_participate[user][firstname]' => 'Foo', - 'drink_participate[user][lastname]' => 'Bar', - 'drink_participate[user][email]' => 'foobar@example.org', - 'drink_participate[percentage]' => '70', - 'drink_participate[reminder]' => true, - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ->string($crawler->filter('select#drink_participate_percentage option[selected=selected]')->first()->attr('value'))->isEqualTo('70') - ->integer($crawler->filter('div.participation a.btn:contains("Modifier")')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("Se désinscrire")')->count())->isEqualTo(1) - // Delete an existing participation - ->if($crawler = $client->request('GET', '/participation/1/delete.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.participation a.btn:contains("Modifier")')->count())->isEqualTo(0) - ->integer($crawler->filter('div.participation a.btn:contains("Se désinscrire")')->count())->isEqualTo(0) - ->integer($crawler->filter('div.participation a.btn:contains("S\'inscrire")')->count())->isEqualTo(1) - ->integer($crawler->filter('div.participation a.btn:contains("Jeton perdu ?")')->count())->isEqualTo(0) - // Delete a non-existing participation - ->if($crawler = $client->request('GET', '/participation/1/delete.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - - } - - public function testDelete_withUnknowDrink_isRedirectedTo404() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/42/delete.html')) - ->then() - ->boolean($client->getResponse()->isNotFound())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testDelete_withFinishedDrink_isRedirectedToDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/2/delete.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/2/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testDelete_withNoUser_isRedirectedToDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/2/delete.html/marvin/42')) - ->then() - ->boolean($client->getResponse()->isRedirect('/2/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testDelete_withUnknownUser_isRedirectedToDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/1/delete.html/marvin/42')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testDelete_withNoUserToken_isRedirectedToDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/1/delete.html/user1@example.org')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testDelete_withBadUserToken_isRedirectedToDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/1/delete.html/user1@example.org/42')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testParticipateToADrink_withUnanonymousUser_badData() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/1/view.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('participate')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'drink_participate[user][firstname]' => '', - 'drink_participate[user][lastname]' => '', - 'drink_participate[user][email]' => '', - 'drink_participate[percentage]' => 0, - 'drink_participate[reminder]' => true, - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testDelete_withGoodUserToken_isRedirectedToDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/1/delete.html/user1@example.org/token')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ; - } - - public function testForget_goodMail() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/1/forget.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('remember')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'participation_forget[email]' => 'user3@example.org', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) - ->boolean(true == $client->connect())->isTrue() - ; - } - - public function testForget_badMail() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/1/forget.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('remember')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'participation_forget[email]' => 'user42@example.org', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/participation/1/forget.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testForget_user() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/1/forget.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('remember')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'participation_forget[email]' => 'user2@example.org', - ))) - ->then() - ->boolean($client->getResponse()->isRedirect('/participation/1/forget.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testForget_connected() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if(true == $client->connect()) - ->then() - ->if($crawler = $client->request('GET', '/participation/1/forget.html')) - ->then() - ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() - ->if($crawler = $client->followRedirect()) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testForget_withunknownDrink_isRedirectedToDrink() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/42/forget.html')) - ->then() - ->boolean($client->getResponse()->isNotFound())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } - - public function testForget_noData() - { - $this->assert - ->if($client = $this->createClient()) - ->then - ->if($crawler = $client->request('GET', '/participation/1/forget.html')) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->if($form = $crawler->selectButton('remember')->form()) - ->then() - ->if($crawler = $client->submit($form, array( - 'participation_forget[email]' => '', - ))) - ->then() - ->boolean($client->getResponse()->isOk())->isTrue() - ->integer($crawler->filter('div.alert-error')->count())->isEqualTo(1) - ; - } -} From 76a48c618151d002570718afe35b40512007dd33 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Sat, 29 Aug 2015 14:41:55 +0200 Subject: [PATCH 12/16] Mod: update test dependencies Use atoum version number Install behat, page-object --- composer.lock | 322 ++++++++++++++------------------------------------ 1 file changed, 86 insertions(+), 236 deletions(-) diff --git a/composer.lock b/composer.lock index 6c0303e..09ba471 100644 --- a/composer.lock +++ b/composer.lock @@ -2399,34 +2399,41 @@ }, { "name": "fabpot/goutte", - "version": "dev-master", + "version": "1.0.x-dev", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/Goutte.git", - "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc" + "reference": "794b196e76bdd37b5155cdecbad311f0a3b07625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/751a3dc5c4d86ec3e97c9f27133ef9694d9243cc", - "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc", + "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/794b196e76bdd37b5155cdecbad311f0a3b07625", + "reference": "794b196e76bdd37b5155cdecbad311f0a3b07625", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", + "ext-curl": "*", + "guzzle/http": "~3.1", + "php": ">=5.3.0", "symfony/browser-kit": "~2.1", "symfony/css-selector": "~2.1", - "symfony/dom-crawler": "~2.1" + "symfony/dom-crawler": "~2.1", + "symfony/finder": "~2.1", + "symfony/process": "~2.1" + }, + "require-dev": { + "guzzle/plugin-history": "~3.1", + "guzzle/plugin-mock": "~3.1" }, "type": "application", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "1.0-dev" } }, "autoload": { - "psr-4": { - "Goutte\\": "Goutte" + "psr-0": { + "Goutte": "." } }, "notification-url": "https://packagist.org/downloads/", @@ -2440,15 +2447,15 @@ } ], "description": "A simple PHP Web Scraper", - "homepage": "https://github.com/FriendsOfPHP/Goutte", + "homepage": "https://github.com/fabpot/Goutte", "keywords": [ "scraper" ], - "time": "2015-08-29 16:16:56" + "time": "2014-10-09 15:52:51" }, { "name": "guzzle/common", - "version": "dev-master", + "version": "v3.9.2", "target-dir": "Guzzle/Common", "source": { "type": "git", @@ -2493,7 +2500,7 @@ }, { "name": "guzzle/http", - "version": "dev-master", + "version": "v3.9.2", "target-dir": "Guzzle/Http", "source": { "type": "git", @@ -2551,7 +2558,7 @@ }, { "name": "guzzle/parser", - "version": "dev-master", + "version": "v3.9.2", "target-dir": "Guzzle/Parser", "source": { "type": "git", @@ -2596,7 +2603,7 @@ }, { "name": "guzzle/stream", - "version": "dev-master", + "version": "v3.9.2", "target-dir": "Guzzle/Stream", "source": { "type": "git", @@ -2648,177 +2655,6 @@ "abandoned": "guzzle/guzzle", "time": "2014-05-01 21:36:02" }, - { - "name": "guzzlehttp/guzzle", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "6d6c3a68fbea09c50b251553d59b9209b475e272" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/6d6c3a68fbea09c50b251553d59b9209b475e272", - "reference": "6d6c3a68fbea09c50b251553d59b9209b475e272", - "shasum": "" - }, - "require": { - "guzzlehttp/promises": "~1.0", - "guzzlehttp/psr7": "~1.1", - "php": ">=5.5.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "~4.0", - "psr/log": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.1-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2015-10-05 21:30:32" - }, - { - "name": "guzzlehttp/promises", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "97fe7210def29451ec74923b27e552238defd75a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/97fe7210def29451ec74923b27e552238defd75a", - "reference": "97fe7210def29451ec74923b27e552238defd75a", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2015-08-15 19:37:21" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/4ef919b0cf3b1989523138b60163bbcb7ba1ff7e", - "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "PSR-7 message implementation", - "keywords": [ - "http", - "message", - "stream", - "uri" - ], - "time": "2015-08-15 19:32:36" - }, { "name": "phpdocumentor/reflection-docblock", "version": "2.0.4", @@ -3037,55 +2873,6 @@ ], "time": "2015-09-22 14:49:23" }, - { - "name": "psr/http-message", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", - "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2015-05-04 20:22:00" - }, { "name": "sebastian/comparator", "version": "dev-master", @@ -3322,6 +3109,69 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "time": "2015-06-21 08:04:50" }, + { + "name": "sensiolabs/behat-page-object-extension", + "version": "1.0.x-dev", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/BehatPageObjectExtension.git", + "reference": "e0789422d3ab2f50059597cdafbef637db7432d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/BehatPageObjectExtension/zipball/e0789422d3ab2f50059597cdafbef637db7432d4", + "reference": "e0789422d3ab2f50059597cdafbef637db7432d4", + "shasum": "" + }, + "require": { + "behat/behat": "~2.4", + "behat/mink-extension": "~1.0", + "php": ">=5.3.0" + }, + "require-dev": { + "behat/mink-goutte-driver": "~1.0", + "bossa/phpspec2-expect": "~1.0", + "phpspec/phpspec": "~2.0", + "symfony/filesystem": "~2.3", + "symfony/process": "~2.3" + }, + "suggest": { + "bossa/phpspec2-expect": "Allows to use PHPSpec2 matchers in Behat context files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "SensioLabs\\Behat\\PageObjectExtension\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marcello Duarte", + "email": "mduarte@inviqa.com" + }, + { + "name": "Jakub Zalas", + "email": "jzalas@sensiolabs.co.uk" + } + ], + "description": "Page object extension for Behat", + "homepage": "https://github.com/sensiolabs/BehatPageObjectExtension", + "keywords": [ + "BDD", + "Behat", + "page" + ], + "time": "2014-05-21 21:55:29" + }, { "name": "symfony/dependency-injection", "version": "2.8.x-dev", From 0ae11281081593b5113f68cf57385fcdeca2e040 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Sat, 29 Aug 2015 14:45:00 +0200 Subject: [PATCH 13/16] Fix: update tests to work with atoum 2.0+ --- .atoum.php | 26 -------------------------- bin/tests.sh | 2 +- src/Aperophp/Test/Test.php | 10 ++++++++++ 3 files changed, 11 insertions(+), 27 deletions(-) diff --git a/.atoum.php b/.atoum.php index 3470bed..ce95bfe 100644 --- a/.atoum.php +++ b/.atoum.php @@ -2,29 +2,3 @@ $runner->disableCodeCoverage(); $runner->addTestsFromDirectory(__DIR__ . '/tests/units'); - -## Notifier (growlnotify) -$images = __DIR__ . '/vendor/atoum/atoum/resources/images/logo'; - -$report = $script->AddDefaultReport(); - -if(syslibExist('growlnotify') ) -{ - $notifier = new \mageekguy\atoum\report\fields\runner\result\notifier\image\growl(); - $notifier - ->setSuccessImage($images . DIRECTORY_SEPARATOR . 'success.png') - ->setFailureImage($images . DIRECTORY_SEPARATOR . 'failure.png') - ; - $report->addField($notifier, array(atoum\runner::runStop)); -} - -/** - * Return true if library is available on system - * - * @param string $libName - * @return boolean - */ -function syslibExist($libName) -{ - return !is_null(shell_exec(sprintf('command -v %s 2>/dev/null', $libName))); -} diff --git a/bin/tests.sh b/bin/tests.sh index 1cd6b8c..601c4de 100755 --- a/bin/tests.sh +++ b/bin/tests.sh @@ -2,4 +2,4 @@ php app/console db:install --env=test --load-fixtures -./vendor/bin/atoum +./bin/atoum diff --git a/src/Aperophp/Test/Test.php b/src/Aperophp/Test/Test.php index f4c4964..193fec7 100644 --- a/src/Aperophp/Test/Test.php +++ b/src/Aperophp/Test/Test.php @@ -6,6 +6,16 @@ class Test extends atoum\test { + /** + * @var \Silex\Application + */ + protected $app; + + /** + * Initialize application + * + * @param $method Method name + */ public function beforeTestMethod($method) { $this->app = require __DIR__.'/../../../app/app.php'; From bd59cb11a408097ba6032e6b86f7a7e7ffb93057 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Sun, 10 Aug 2014 22:25:29 +0200 Subject: [PATCH 14/16] WIP --- app/config_behat.php | 3 ++ behat.local.yml | 4 +- src/Aperophp/Provider/Controller/Member.php | 2 +- src/Resources/views/member/signup.html.twig | 2 +- tests/functional/0010-account.feature | 18 +++++++ tests/functional/TODO.md | 24 ++++++++++ .../bootstrap/Context/SigninContext.php | 36 ++++++++++++++ .../bootstrap/Context/SignupContext.php | 36 ++++++++++++++ .../bootstrap/Context/WebContext.php | 2 +- tests/functional/bootstrap/FeatureContext.php | 20 ++++++++ tests/functional/bootstrap/Page/Signin.php | 15 ++++++ tests/functional/bootstrap/Page/Signup.php | 48 +++++++++++++++++++ web/index.php | 2 +- web/index_behat.php | 5 ++ 14 files changed, 211 insertions(+), 6 deletions(-) create mode 100644 app/config_behat.php create mode 100644 tests/functional/0010-account.feature create mode 100644 tests/functional/TODO.md create mode 100644 tests/functional/bootstrap/Context/SigninContext.php create mode 100644 tests/functional/bootstrap/Context/SignupContext.php create mode 100644 tests/functional/bootstrap/Page/Signin.php create mode 100644 tests/functional/bootstrap/Page/Signup.php create mode 100644 web/index_behat.php diff --git a/app/config_behat.php b/app/config_behat.php new file mode 100644 index 0000000..af3894f --- /dev/null +++ b/app/config_behat.php @@ -0,0 +1,3 @@ +rollback(); } catch (\Exception $e) { } - $app->abort(500, 'Impossible de vous inscrire. Merci de réessayer plus tard.'); + $app->abort(500, 'Impossible de vous inscrire. Merci de réessayer plus tard. ['.$e->getMessage().']'); } $app['session']->getFlashBag()->add('success', 'Votre compte a été créé avec succès.'); diff --git a/src/Resources/views/member/signup.html.twig b/src/Resources/views/member/signup.html.twig index d4a9724..43afe82 100644 --- a/src/Resources/views/member/signup.html.twig +++ b/src/Resources/views/member/signup.html.twig @@ -10,7 +10,7 @@

Inscription

-
+
{{ form_label(form.user.lastname, null, { 'label_attr': {'class': 'control-label'} }) }} diff --git a/tests/functional/0010-account.feature b/tests/functional/0010-account.feature new file mode 100644 index 0000000..cb676f1 --- /dev/null +++ b/tests/functional/0010-account.feature @@ -0,0 +1,18 @@ +# language: fr + +Fonctionnalité: La gestion des comptes est fonctionnelle + + Scénario: Il est possible de s'inscrire + Quand je vais sur la page d'inscription + Alors la page d'inscription s'affiche correctement + Quand je me créé un compte "test_behat"/"password"/"test_behat@test.fr" + Alors imprimer la dernière réponse + Alors la page de connexion s'affiche correctement + Et le message de succès "Votre compte a été créé avec succès." s'affiche + + # Scénario: Il est possible de se connecter + # Quand je vais sur la page de connexion + # Alors la page de connexion s'affiche correctement + # Quand je me connecte avec les identifiants "test_behat"/"password" + # Alors je suis sur la page d'accueil + # Et je suis connecté en tant que "test_behat" diff --git a/tests/functional/TODO.md b/tests/functional/TODO.md new file mode 100644 index 0000000..472b8e7 --- /dev/null +++ b/tests/functional/TODO.md @@ -0,0 +1,24 @@ +Pré-requis + + * DONE Reprendre le process de création de schéma de bdd pour être plus indépendant de la ligne de commande + * DONE Créer un controler Behat qui se connecte sur une BDD de dev + * DONE Monter la volée une base de données SQLite avant chaque test Behat + +Tests Behat + + * Compte + * S'incrire + * Se connecter + * Se déconnecter + + * Apéro + * Liste des apéros + * Consulter un apéro + * S'inscrire à un apéro + * Déposer un commentaire + * Créer un apéro + * Modifier un apéro + +MEP + + * Modifier Capistrano pour ne pas déployer le controler Behat diff --git a/tests/functional/bootstrap/Context/SigninContext.php b/tests/functional/bootstrap/Context/SigninContext.php new file mode 100644 index 0000000..c0ef778 --- /dev/null +++ b/tests/functional/bootstrap/Context/SigninContext.php @@ -0,0 +1,36 @@ +getPage('Signin')->open(); + } + + /** + * @Given /^la page de connexion s\'affiche correctement$/ + */ + public function laPageDeConnexionSAfficheCorrectement() + { + return array( + new Step\Then(sprintf('la page "%s" s\'affiche correctement', $this->getPage('Signin')->path)), + ); + } + + /** + * @Given /^je me connecte avec les identifiants "([^"]*)"\/"([^"]*)"$/ + */ + public function jeMeConnecteAvecLesIdentifiants($login, $password) + { + + } +} diff --git a/tests/functional/bootstrap/Context/SignupContext.php b/tests/functional/bootstrap/Context/SignupContext.php new file mode 100644 index 0000000..b6fd7a1 --- /dev/null +++ b/tests/functional/bootstrap/Context/SignupContext.php @@ -0,0 +1,36 @@ +getPage('Signup')->open(); + } + + /** + * @Given /^la page d\'inscription s\'affiche correctement$/ + */ + public function laPageDInscriptionSAfficheCorrectement() + { + return array( + new Step\Then(sprintf('la page "%s" s\'affiche correctement', $this->getPage('Signup')->path)), + ); + } + + /** + * @Given /^je me créé un compte "([^"]*)"\/"([^"]*)"\/"([^"]*)"$/ + */ + public function jeMeCreeUnCompte($login, $password, $email) + { + $this->getPage('Signup')->createAccount($login, $password, $email); + } +} diff --git a/tests/functional/bootstrap/Context/WebContext.php b/tests/functional/bootstrap/Context/WebContext.php index 6f7f614..e88cb7d 100644 --- a/tests/functional/bootstrap/Context/WebContext.php +++ b/tests/functional/bootstrap/Context/WebContext.php @@ -29,7 +29,7 @@ protected function getMink() public function laPageSAfficheCorrectement($url) { return array( - new Step\Then("je suis sur \"$url\""), + new Step\Then("je devrais être sur \"$url\""), new Step\Then("le code de status de la réponse devrait être 200"), ); } diff --git a/tests/functional/bootstrap/FeatureContext.php b/tests/functional/bootstrap/FeatureContext.php index 52f3494..e116dcf 100644 --- a/tests/functional/bootstrap/FeatureContext.php +++ b/tests/functional/bootstrap/FeatureContext.php @@ -4,6 +4,7 @@ use Behat\MinkExtension\Context\MinkContext; use Aperophp\Test\Functional\Context; +use Aperophp\Database\Tool as DatabaseTool; /** * Features context. @@ -20,6 +21,25 @@ public function __construct(array $parameters) { $this->useContext('view', new Context\WebContext($parameters)); $this->useContext('homepage', new Context\HomepageContext($parameters)); + $this->useContext('signup', new Context\SignupContext($parameters)); + $this->useContext('signin', new Context\SigninContext($parameters)); $this->useContext('mink', new MinkContext($parameters)); } + + /** + * Reset database for testing on fresh fixtures import + * + * @BeforeFeature + */ + public static function resetDatabase() + { + // Load application to have db connection + $app = require __DIR__.'/../../../app/bootstrap.php'; + require __DIR__.'/../../../app/config_behat.php'; + + // Reseting database + $databaseTool = new DatabaseTool($app['db']); + $databaseTool->createSchema(__DIR__.'/../../../data/sql/schema.mysql.sql'); + $databaseTool->loadFixtures(__DIR__.'/../../../data/sql/fixtures.sql'); + } } diff --git a/tests/functional/bootstrap/Page/Signin.php b/tests/functional/bootstrap/Page/Signin.php new file mode 100644 index 0000000..aea4937 --- /dev/null +++ b/tests/functional/bootstrap/Page/Signin.php @@ -0,0 +1,15 @@ + array('css' => 'form#signup') + ); + + /** + * Create an account + * + * @param string $username + * @param string $password + * @param string $email + * @param string $firstname + * @param string $lastname + * + * @return void + */ + public function createAccount($username, $password, $email, $firstname=null, $lastname=null) + { + $signupForm = $this->getElement('form'); + + $signupForm->fillField('signup_member_username', $username); + $signupForm->fillField('signup_member_password', $password); + $signupForm->fillField('signup_user_email', $email); + $signupForm->fillField('signup_user_lastname', $lastname); + $signupForm->fillField('signup_user_firstname', $firstname); + + return $signupForm->pressButton('S\'inscrire'); + } +} diff --git a/web/index.php b/web/index.php index 796734d..f2de07d 100644 --- a/web/index.php +++ b/web/index.php @@ -1,4 +1,4 @@ run(); \ No newline at end of file +$app->run(); diff --git a/web/index_behat.php b/web/index_behat.php new file mode 100644 index 0000000..00b5860 --- /dev/null +++ b/web/index_behat.php @@ -0,0 +1,5 @@ +run(); From a806fe3f27c712c6c5b6a7dcbcc13605d8d80b33 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Wed, 8 Jul 2015 22:16:46 +0200 Subject: [PATCH 15/16] WIP --- .../Provider/Controller/Participate.php | 2 +- .../Aperophp/Provider/Controller/Comment.php | 80 ++ web/css/bootstrap-responsive.css | 860 ------------------ web/css/bootstrap-responsive.min.css | 9 - 4 files changed, 81 insertions(+), 870 deletions(-) create mode 100644 tests/units/Aperophp/Provider/Controller/Comment.php diff --git a/src/Aperophp/Provider/Controller/Participate.php b/src/Aperophp/Provider/Controller/Participate.php index d0b7bc7..9063b80 100644 --- a/src/Aperophp/Provider/Controller/Participate.php +++ b/src/Aperophp/Provider/Controller/Participate.php @@ -103,7 +103,7 @@ public function connect(Application $app) $app['session']->getFlashBag()->add('success', 'Participation ajoutée.'); if ($participation['percentage'] > 0) { - $app['mailer']->send($app['mail_factory']->createParticipation($user, $drink)); + $app['mailer']->send($app['mail_factory']->createParticipation($user, $drink)); } return $returnValue; diff --git a/tests/units/Aperophp/Provider/Controller/Comment.php b/tests/units/Aperophp/Provider/Controller/Comment.php new file mode 100644 index 0000000..fda209b --- /dev/null +++ b/tests/units/Aperophp/Provider/Controller/Comment.php @@ -0,0 +1,80 @@ + '', + 'drink_comment[user][firstname]' => 'Foo', + 'drink_comment[user][lastname]' => 'Bar', + 'drink_comment[user][email]' => 'foobar@example.org', + 'drink_comment[content]' => 'Super apéro.', + ), + $data_overload + ); + } + + public function testCommentDrinkWithUnanonymousUser() + { + $this->assert + ->if($client = $this->createClient()) + ->and($crawler = $client->request('GET', '/1/view.html')) + ->then() + ->boolean($client->getResponse()->isOk())->isTrue() + ->integer($crawler->filter('blockquote')->count()-1)->isEqualTo(2) + ->if($form = $crawler->selectButton('comment')->form()) + ->and($crawler = $client->submit($form, $this->getDefaultDatas())) + ->then() + ->dump($client->getResponse()->getContent()) + ->boolean($client->getResponse()->isRedirect('/1/view.html'))->isTrue() + ->if($crawler = $client->followRedirect()) + ->then() + ->boolean($client->getResponse()->isOk())->isTrue() + ->integer($crawler->filter('div.alert-success')->count())->isEqualTo(1) + ->integer($crawler->filter('blockquote')->count()-1)->isEqualTo(3) + ; + } + + public function testNewCommentDrink_withNoCaptcha_isNotCreated() + { + $this->assert + ->if($client = $this->createClient()) + ->and($crawler = $client->request('GET', '/1/view.html')) + ->then() + ->boolean($client->getResponse()->isOk())->isTrue() + ->integer($crawler->filter('blockquote')->count()-1)->isEqualTo(2) + ->if($form = $crawler->selectButton('comment')->form()) + ->and($crawler = $client->submit($form, $this->getDefaultDatas(array('drink_comment[user][firstname]' => 'DO NOT FEED')))) + ->then() + ->boolean($client->getResponse()->isRedirect('/drink/1/view.html'))->isFalse() + ; + } + + public function testCommentDrinkWithNoData() + { + $this->assert + ->if($client = $this->createClient()) + ->and($crawler = $client->request('GET', '/1/view.html')) + ->then() + ->boolean($client->getResponse()->isOk())->isTrue() + ->integer($crawler->filter('blockquote')->count()-1)->isEqualTo(2) + ->if($form = $crawler->selectButton('comment')->form()) + ->and($crawler = $client->submit($form, $this->getDefaultDatas(array( + 'drink_comment[user][firstname]' => '', + 'drink_comment[user][lastname]' => '', + 'drink_comment[user][email]' => '', + 'drink_comment[content]' => '', + )))) + ->then() + ->boolean($client->getResponse()->isRedirect('/drink/1/view.html'))->isFalse() + ; + } +} diff --git a/web/css/bootstrap-responsive.css b/web/css/bootstrap-responsive.css index 4394cc4..e69de29 100644 --- a/web/css/bootstrap-responsive.css +++ b/web/css/bootstrap-responsive.css @@ -1,860 +0,0 @@ -/*! - * Bootstrap Responsive v2.0.4 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ - -.clearfix { - *zoom: 1; -} - -.clearfix:before, -.clearfix:after { - display: table; - content: ""; -} - -.clearfix:after { - clear: both; -} - -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.input-block-level { - display: block; - width: 100%; - min-height: 28px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.hidden { - display: none; - visibility: hidden; -} - -.visible-phone { - display: none !important; -} - -.visible-tablet { - display: none !important; -} - -.hidden-desktop { - display: none !important; -} - -@media (max-width: 767px) { - .visible-phone { - display: inherit !important; - } - .hidden-phone { - display: none !important; - } - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important; - } -} - -@media (min-width: 768px) and (max-width: 979px) { - .visible-tablet { - display: inherit !important; - } - .hidden-tablet { - display: none !important; - } - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important ; - } -} - -@media (max-width: 480px) { - .nav-collapse { - -webkit-transform: translate3d(0, 0, 0); - } - .page-header h1 small { - display: block; - line-height: 18px; - } - input[type="checkbox"], - input[type="radio"] { - border: 1px solid #ccc; - } - .form-horizontal .control-group > label { - float: none; - width: auto; - padding-top: 0; - text-align: left; - } - .form-horizontal .controls { - margin-left: 0; - } - .form-horizontal .control-list { - padding-top: 0; - } - .form-horizontal .form-actions { - padding-right: 10px; - padding-left: 10px; - } - .modal { - position: absolute; - top: 10px; - right: 10px; - left: 10px; - width: auto; - margin: 0; - } - .modal.fade.in { - top: auto; - } - .modal-header .close { - padding: 10px; - margin: -10px; - } - .carousel-caption { - position: static; - } -} - -@media (max-width: 767px) { - body { - padding-right: 20px; - padding-left: 20px; - } - .navbar-fixed-top, - .navbar-fixed-bottom { - margin-right: -20px; - margin-left: -20px; - } - .container-fluid { - padding: 0; - } - .dl-horizontal dt { - float: none; - width: auto; - clear: none; - text-align: left; - } - .dl-horizontal dd { - margin-left: 0; - } - .container { - width: auto; - } - .row-fluid { - width: 100%; - } - .row, - .thumbnails { - margin-left: 0; - } - [class*="span"], - .row-fluid [class*="span"] { - display: block; - float: none; - width: auto; - margin-left: 0; - } - .input-large, - .input-xlarge, - .input-xxlarge, - input[class*="span"], - select[class*="span"], - textarea[class*="span"], - .uneditable-input { - display: block; - width: 100%; - min-height: 28px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - } - .input-prepend input, - .input-append input, - .input-prepend input[class*="span"], - .input-append input[class*="span"] { - display: inline-block; - width: auto; - } -} - -@media (min-width: 768px) and (max-width: 979px) { - .row { - margin-left: -20px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - content: ""; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - margin-left: 20px; - } - .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 724px; - } - .span12 { - width: 724px; - } - .span11 { - width: 662px; - } - .span10 { - width: 600px; - } - .span9 { - width: 538px; - } - .span8 { - width: 476px; - } - .span7 { - width: 414px; - } - .span6 { - width: 352px; - } - .span5 { - width: 290px; - } - .span4 { - width: 228px; - } - .span3 { - width: 166px; - } - .span2 { - width: 104px; - } - .span1 { - width: 42px; - } - .offset12 { - margin-left: 764px; - } - .offset11 { - margin-left: 702px; - } - .offset10 { - margin-left: 640px; - } - .offset9 { - margin-left: 578px; - } - .offset8 { - margin-left: 516px; - } - .offset7 { - margin-left: 454px; - } - .offset6 { - margin-left: 392px; - } - .offset5 { - margin-left: 330px; - } - .offset4 { - margin-left: 268px; - } - .offset3 { - margin-left: 206px; - } - .offset2 { - margin-left: 144px; - } - .offset1 { - margin-left: 82px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - float: left; - width: 100%; - min-height: 28px; - margin-left: 2.762430939%; - *margin-left: 2.709239449638298%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .span12 { - width: 99.999999993%; - *width: 99.9468085036383%; - } - .row-fluid .span11 { - width: 91.436464082%; - *width: 91.38327259263829%; - } - .row-fluid .span10 { - width: 82.87292817100001%; - *width: 82.8197366816383%; - } - .row-fluid .span9 { - width: 74.30939226%; - *width: 74.25620077063829%; - } - .row-fluid .span8 { - width: 65.74585634900001%; - *width: 65.6926648596383%; - } - .row-fluid .span7 { - width: 57.182320438000005%; - *width: 57.129128948638304%; - } - .row-fluid .span6 { - width: 48.618784527%; - *width: 48.5655930376383%; - } - .row-fluid .span5 { - width: 40.055248616%; - *width: 40.0020571266383%; - } - .row-fluid .span4 { - width: 31.491712705%; - *width: 31.4385212156383%; - } - .row-fluid .span3 { - width: 22.928176794%; - *width: 22.874985304638297%; - } - .row-fluid .span2 { - width: 14.364640883%; - *width: 14.311449393638298%; - } - .row-fluid .span1 { - width: 5.801104972%; - *width: 5.747913482638298%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 714px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 652px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 590px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 528px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 466px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 404px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 342px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 280px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 218px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 156px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 94px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 32px; - } -} - -@media (min-width: 1200px) { - .row { - margin-left: -30px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - content: ""; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - margin-left: 30px; - } - .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 1170px; - } - .span12 { - width: 1170px; - } - .span11 { - width: 1070px; - } - .span10 { - width: 970px; - } - .span9 { - width: 870px; - } - .span8 { - width: 770px; - } - .span7 { - width: 670px; - } - .span6 { - width: 570px; - } - .span5 { - width: 470px; - } - .span4 { - width: 370px; - } - .span3 { - width: 270px; - } - .span2 { - width: 170px; - } - .span1 { - width: 70px; - } - .offset12 { - margin-left: 1230px; - } - .offset11 { - margin-left: 1130px; - } - .offset10 { - margin-left: 1030px; - } - .offset9 { - margin-left: 930px; - } - .offset8 { - margin-left: 830px; - } - .offset7 { - margin-left: 730px; - } - .offset6 { - margin-left: 630px; - } - .offset5 { - margin-left: 530px; - } - .offset4 { - margin-left: 430px; - } - .offset3 { - margin-left: 330px; - } - .offset2 { - margin-left: 230px; - } - .offset1 { - margin-left: 130px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - float: left; - width: 100%; - min-height: 28px; - margin-left: 2.564102564%; - *margin-left: 2.510911074638298%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851063829%; - } - .row-fluid .span11 { - width: 91.45299145300001%; - *width: 91.3997999636383%; - } - .row-fluid .span10 { - width: 82.905982906%; - *width: 82.8527914166383%; - } - .row-fluid .span9 { - width: 74.358974359%; - *width: 74.30578286963829%; - } - .row-fluid .span8 { - width: 65.81196581200001%; - *width: 65.7587743226383%; - } - .row-fluid .span7 { - width: 57.264957265%; - *width: 57.2117657756383%; - } - .row-fluid .span6 { - width: 48.717948718%; - *width: 48.6647572286383%; - } - .row-fluid .span5 { - width: 40.170940171000005%; - *width: 40.117748681638304%; - } - .row-fluid .span4 { - width: 31.623931624%; - *width: 31.5707401346383%; - } - .row-fluid .span3 { - width: 23.076923077%; - *width: 23.0237315876383%; - } - .row-fluid .span2 { - width: 14.529914530000001%; - *width: 14.4767230406383%; - } - .row-fluid .span1 { - width: 5.982905983%; - *width: 5.929714493638298%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 1160px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 1060px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 960px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 860px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 760px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 660px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 560px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 460px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 360px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 260px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 160px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 60px; - } - .thumbnails { - margin-left: -30px; - } - .thumbnails > li { - margin-left: 30px; - } - .row-fluid .thumbnails { - margin-left: 0; - } -} - -@media (max-width: 979px) { - body { - padding-top: 0; - } - .navbar-fixed-top, - .navbar-fixed-bottom { - position: static; - } - .navbar-fixed-top { - margin-bottom: 18px; - } - .navbar-fixed-bottom { - margin-top: 18px; - } - .navbar-fixed-top .navbar-inner, - .navbar-fixed-bottom .navbar-inner { - padding: 5px; - } - .navbar .container { - width: auto; - padding: 0; - } - .navbar .brand { - padding-right: 10px; - padding-left: 10px; - margin: 0 0 0 -5px; - } - .nav-collapse { - clear: both; - } - .nav-collapse .nav { - float: none; - margin: 0 0 9px; - } - .nav-collapse .nav > li { - float: none; - } - .nav-collapse .nav > li > a { - margin-bottom: 2px; - } - .nav-collapse .nav > .divider-vertical { - display: none; - } - .nav-collapse .nav .nav-header { - color: #999999; - text-shadow: none; - } - .nav-collapse .nav > li > a, - .nav-collapse .dropdown-menu a { - padding: 6px 15px; - font-weight: bold; - color: #999999; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - } - .nav-collapse .btn { - padding: 4px 10px 4px; - font-weight: normal; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - } - .nav-collapse .dropdown-menu li + li a { - margin-bottom: 2px; - } - .nav-collapse .nav > li > a:hover, - .nav-collapse .dropdown-menu a:hover { - background-color: #222222; - } - .nav-collapse.in .btn-group { - padding: 0; - margin-top: 5px; - } - .nav-collapse .dropdown-menu { - position: static; - top: auto; - left: auto; - display: block; - float: none; - max-width: none; - padding: 0; - margin: 0 15px; - background-color: transparent; - border: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - } - .nav-collapse .dropdown-menu:before, - .nav-collapse .dropdown-menu:after { - display: none; - } - .nav-collapse .dropdown-menu .divider { - display: none; - } - .nav-collapse .navbar-form, - .nav-collapse .navbar-search { - float: none; - padding: 9px 15px; - margin: 9px 0; - border-top: 1px solid #222222; - border-bottom: 1px solid #222222; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - } - .navbar .nav-collapse .nav.pull-right { - float: none; - margin-left: 0; - } - .nav-collapse, - .nav-collapse.collapse { - height: 0; - overflow: hidden; - } - .navbar .btn-navbar { - display: block; - } - .navbar-static .navbar-inner { - padding-right: 10px; - padding-left: 10px; - } -} - -@media (min-width: 980px) { - .nav-collapse.collapse { - height: auto !important; - overflow: visible !important; - } -} - -@media (max-width: 767px) { - #main { - padding: 0 10px; - margin-right: -20px; - margin-left: -20px; - } - .subnavbar { - margin-right: -20px; - margin-left: -20px; - } - .subnavbar-inner { - height: auto; - } - .subnavbar .container > ul { - width: 100%; - height: auto; - border: none; - } - .subnavbar .container > ul > li { - width: 33%; - height: 70px; - margin-bottom: 0; - border: none; - } - .subnavbar .container > ul > li.active > a { - font-size: 11px; - background: transparent; - } - .subnavbar .container > ul > li > a > i { - display: inline-block; - margin-bottom: 0; - font-size: 20px; - } -} - -@media (max-width: 979px) { - .navbar-fixed-top { - position: static; - margin-bottom: 0; - } - .subnavbar .container { - width: auto; - } -} diff --git a/web/css/bootstrap-responsive.min.css b/web/css/bootstrap-responsive.min.css index 6539b65..e69de29 100644 --- a/web/css/bootstrap-responsive.min.css +++ b/web/css/bootstrap-responsive.min.css @@ -1,9 +0,0 @@ -/*! - * Bootstrap Responsive v2.0.4 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}@media(max-width:767px){.visible-phone{display:inherit!important}.hidden-phone{display:none!important}.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}}@media(min-width:768px) and (max-width:979px){.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:18px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.modal{position:absolute;top:10px;right:10px;left:10px;width:auto;margin:0}.modal.fade.in{top:auto}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:auto;margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.762430939%;*margin-left:2.709239449638298%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:99.999999993%;*width:99.9468085036383%}.row-fluid .span11{width:91.436464082%;*width:91.38327259263829%}.row-fluid .span10{width:82.87292817100001%;*width:82.8197366816383%}.row-fluid .span9{width:74.30939226%;*width:74.25620077063829%}.row-fluid .span8{width:65.74585634900001%;*width:65.6926648596383%}.row-fluid .span7{width:57.182320438000005%;*width:57.129128948638304%}.row-fluid .span6{width:48.618784527%;*width:48.5655930376383%}.row-fluid .span5{width:40.055248616%;*width:40.0020571266383%}.row-fluid .span4{width:31.491712705%;*width:31.4385212156383%}.row-fluid .span3{width:22.928176794%;*width:22.874985304638297%}.row-fluid .span2{width:14.364640883%;*width:14.311449393638298%}.row-fluid .span1{width:5.801104972%;*width:5.747913482638298%}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:714px}input.span11,textarea.span11,.uneditable-input.span11{width:652px}input.span10,textarea.span10,.uneditable-input.span10{width:590px}input.span9,textarea.span9,.uneditable-input.span9{width:528px}input.span8,textarea.span8,.uneditable-input.span8{width:466px}input.span7,textarea.span7,.uneditable-input.span7{width:404px}input.span6,textarea.span6,.uneditable-input.span6{width:342px}input.span5,textarea.span5,.uneditable-input.span5{width:280px}input.span4,textarea.span4,.uneditable-input.span4{width:218px}input.span3,textarea.span3,.uneditable-input.span3{width:156px}input.span2,textarea.span2,.uneditable-input.span2{width:94px}input.span1,textarea.span1,.uneditable-input.span1{width:32px}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:30px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.564102564%;*margin-left:2.510911074638298%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145300001%;*width:91.3997999636383%}.row-fluid .span10{width:82.905982906%;*width:82.8527914166383%}.row-fluid .span9{width:74.358974359%;*width:74.30578286963829%}.row-fluid .span8{width:65.81196581200001%;*width:65.7587743226383%}.row-fluid .span7{width:57.264957265%;*width:57.2117657756383%}.row-fluid .span6{width:48.717948718%;*width:48.6647572286383%}.row-fluid .span5{width:40.170940171000005%;*width:40.117748681638304%}.row-fluid .span4{width:31.623931624%;*width:31.5707401346383%}.row-fluid .span3{width:23.076923077%;*width:23.0237315876383%}.row-fluid .span2{width:14.529914530000001%;*width:14.4767230406383%}.row-fluid .span1{width:5.982905983%;*width:5.929714493638298%}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:1160px}input.span11,textarea.span11,.uneditable-input.span11{width:1060px}input.span10,textarea.span10,.uneditable-input.span10{width:960px}input.span9,textarea.span9,.uneditable-input.span9{width:860px}input.span8,textarea.span8,.uneditable-input.span8{width:760px}input.span7,textarea.span7,.uneditable-input.span7{width:660px}input.span6,textarea.span6,.uneditable-input.span6{width:560px}input.span5,textarea.span5,.uneditable-input.span5{width:460px}input.span4,textarea.span4,.uneditable-input.span4{width:360px}input.span3,textarea.span3,.uneditable-input.span3{width:260px}input.span2,textarea.span2,.uneditable-input.span2{width:160px}input.span1,textarea.span1,.uneditable-input.span1{width:60px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:18px}.navbar-fixed-bottom{margin-top:18px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 9px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#999;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#222}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:block;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222;border-bottom:1px solid #222;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}}@media(max-width:767px){#main{padding:0 10px;margin-right:-20px;margin-left:-20px}.subnavbar{margin-right:-20px;margin-left:-20px}.subnavbar-inner{height:auto}.subnavbar .container>ul{width:100%;height:auto;border:0}.subnavbar .container>ul>li{width:33%;height:70px;margin-bottom:0;border:0}.subnavbar .container>ul>li.active>a{font-size:11px;background:transparent}.subnavbar .container>ul>li>a>i{display:inline-block;margin-bottom:0;font-size:20px}}@media(max-width:979px){.navbar-fixed-top{position:static;margin-bottom:0}.subnavbar .container{width:auto}} From 651460645a1627b3f0262ba85ef3e4f802a28d49 Mon Sep 17 00:00:00 2001 From: Mikael Randy Date: Wed, 7 Oct 2015 23:36:14 +0200 Subject: [PATCH 16/16] Del: remove local composer.phar --- .travis.yml | 5 ++++- composer.phar | Bin 909086 -> 0 bytes 2 files changed, 4 insertions(+), 1 deletion(-) delete mode 100755 composer.phar diff --git a/.travis.yml b/.travis.yml index 46a7c12..469b7dd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,9 @@ env: php: - 5.3 - 5.4 + - 5.5 + - 5.6 + - 7 before_script: - wget -nc http://getcomposer.org/composer.phar @@ -14,6 +17,6 @@ before_script: - cp app/config_travis.php app/config.php - php app/console db:install --test --load-fixtures -script: ./vendor/bin/atoum -d tests/units +script: ./bin/atoum sudo: false diff --git a/composer.phar b/composer.phar deleted file mode 100755 index 548bef5dd186b77d76866ec4a851546ee9e58c83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909086 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 z 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 $?EPB=+{e6*heNjieajBE2;`z+^Jl(g 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 Pzx~U<{L8BsyD$D