mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-12 13:24:25 +00:00
Automatic styling correction
This commit is contained in:
parent
18369a6c0a
commit
4646795c2c
@ -26,7 +26,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* This class provide a set of tests for exports.
|
* This class provide a set of tests for exports.
|
||||||
*
|
*
|
||||||
* The tests provided by this class will check basic things, like
|
* The tests provided by this class will check basic things, like
|
||||||
* the type of value are conform to the expected, etc.
|
* the type of value are conform to the expected, etc.
|
||||||
*
|
*
|
||||||
@ -34,45 +34,45 @@ use Symfony\Component\HttpFoundation\Request;
|
|||||||
*/
|
*/
|
||||||
abstract class AbstractExportTest extends WebTestCase
|
abstract class AbstractExportTest extends WebTestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
use PrepareClientTrait;
|
use PrepareClientTrait;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an instance of the report to test
|
* Create an instance of the report to test
|
||||||
*
|
*
|
||||||
* @return \Chill\MainBundle\Export\ExportInterface an instance of the export to test
|
* @return \Chill\MainBundle\Export\ExportInterface an instance of the export to test
|
||||||
*/
|
*/
|
||||||
public abstract function getExport();
|
public abstract function getExport();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create possible combinaison of data (produced by the form).
|
* Create possible combinaison of data (produced by the form).
|
||||||
*
|
*
|
||||||
* This data will be used to generate data providers using this data.
|
* This data will be used to generate data providers using this data.
|
||||||
*
|
*
|
||||||
* @return array an array of data. Example : `array( array(), array('fields' => array(1,2,3), ...)` where an empty array and `array(1,2,3)` are possible values
|
* @return array an array of data. Example : `array( array(), array('fields' => array(1,2,3), ...)` where an empty array and `array(1,2,3)` are possible values
|
||||||
*/
|
*/
|
||||||
public abstract function getFormData();
|
public abstract function getFormData();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the possible modifiers which could apply in combination to this
|
* get the possible modifiers which could apply in combination to this
|
||||||
* export.
|
* export.
|
||||||
* .
|
* .
|
||||||
*
|
*
|
||||||
* @return array of string[] an array which contains an array of possible modifiers. Example : `array( array('modifier_1', 'modifier_2'), array('modifier_1'), ...)`
|
* @return array of string[] an array which contains an array of possible modifiers. Example : `array( array('modifier_1', 'modifier_2'), array('modifier_1'), ...)`
|
||||||
*/
|
*/
|
||||||
abstract public function getModifiersCombination();
|
abstract public function getModifiersCombination();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return an array usable as ACL
|
* Return an array usable as ACL
|
||||||
*
|
*
|
||||||
* If this method is overridden, the returned result must be an array
|
* If this method is overridden, the returned result must be an array
|
||||||
* with this form :
|
* with this form :
|
||||||
*
|
*
|
||||||
* ```
|
* ```
|
||||||
* array(
|
* array(
|
||||||
* array(
|
* array(
|
||||||
* 'center' => //center instance
|
* 'center' => //center instance
|
||||||
* 'circles' => array(// array of circles instances )
|
* 'circles' => array(// array of circles instances )
|
||||||
* )
|
* )
|
||||||
* );
|
* );
|
||||||
@ -84,15 +84,15 @@ abstract class AbstractExportTest extends WebTestCase
|
|||||||
if (static::$kernel === null) {
|
if (static::$kernel === null) {
|
||||||
static::bootKernel();
|
static::bootKernel();
|
||||||
}
|
}
|
||||||
|
|
||||||
$em = static::$kernel->getContainer()
|
$em = static::$kernel->getContainer()
|
||||||
->get('doctrine.orm.entity_manager');
|
->get('doctrine.orm.entity_manager');
|
||||||
|
|
||||||
$centers = $em->getRepository('ChillMainBundle:Center')
|
$centers = $em->getRepository('ChillMainBundle:Center')
|
||||||
->findAll();
|
->findAll();
|
||||||
$circles = $em->getRepository('ChillMainBundle:Scope')
|
$circles = $em->getRepository('ChillMainBundle:Scope')
|
||||||
->findAll();
|
->findAll();
|
||||||
|
|
||||||
if (count($centers) === 0) {
|
if (count($centers) === 0) {
|
||||||
throw new \RuntimeException("No center found. Did you forget to "
|
throw new \RuntimeException("No center found. Did you forget to "
|
||||||
. "run `doctrine:fixtures:load` command before ?");
|
. "run `doctrine:fixtures:load` command before ?");
|
||||||
@ -101,7 +101,7 @@ abstract class AbstractExportTest extends WebTestCase
|
|||||||
throw new \RuntimeException("No circle found. Did you forget to "
|
throw new \RuntimeException("No circle found. Did you forget to "
|
||||||
. "run `doctrine:fixtures:load` command before ?");
|
. "run `doctrine:fixtures:load` command before ?");
|
||||||
}
|
}
|
||||||
|
|
||||||
return array([
|
return array([
|
||||||
'center' => $centers[0],
|
'center' => $centers[0],
|
||||||
'circles' => [
|
'circles' => [
|
||||||
@ -115,204 +115,204 @@ abstract class AbstractExportTest extends WebTestCase
|
|||||||
public function testGetType()
|
public function testGetType()
|
||||||
{
|
{
|
||||||
$export = $this->getExport();
|
$export = $this->getExport();
|
||||||
|
|
||||||
$this->assertInternalType('string', $export->getType(),
|
$this->assertInternalType('string', $export->getType(),
|
||||||
"Assert that the `getType` method return a string");
|
"Assert that the `getType` method return a string");
|
||||||
$this->assertNotEmpty($export->getType(), "Assert that the `getType` method"
|
$this->assertNotEmpty($export->getType(), "Assert that the `getType` method"
|
||||||
. " does not return an empty string.");
|
. " does not return an empty string.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that the description is not empty
|
* Test that the description is not empty
|
||||||
*/
|
*/
|
||||||
public function testGetDescription()
|
public function testGetDescription()
|
||||||
{
|
{
|
||||||
$export = $this->getExport();
|
$export = $this->getExport();
|
||||||
|
|
||||||
$this->assertInternalType('string', $export->getDescription(),
|
$this->assertInternalType('string', $export->getDescription(),
|
||||||
"Assert that the `getDescription` method return a string");
|
"Assert that the `getDescription` method return a string");
|
||||||
$this->assertNotEmpty($export->getDescription(),
|
$this->assertNotEmpty($export->getDescription(),
|
||||||
"Assert that the `getDescription` method does not return an empty "
|
"Assert that the `getDescription` method does not return an empty "
|
||||||
. "string.");
|
. "string.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create data for `ìnitiateQuery` method
|
* create data for `ìnitiateQuery` method
|
||||||
*/
|
*/
|
||||||
public function dataProviderInitiateQuery()
|
public function dataProviderInitiateQuery()
|
||||||
{
|
{
|
||||||
$acl = $this->getAcl();
|
$acl = $this->getAcl();
|
||||||
|
|
||||||
foreach($this->getModifiersCombination() as $modifiers) {
|
foreach($this->getModifiersCombination() as $modifiers) {
|
||||||
|
|
||||||
foreach($this->getFormData() as $data) {
|
foreach($this->getFormData() as $data) {
|
||||||
|
|
||||||
yield array($modifiers, $acl, $data);
|
yield array($modifiers, $acl, $data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProviderGetQueryKeys()
|
public function dataProviderGetQueryKeys()
|
||||||
{
|
{
|
||||||
foreach($this->getFormData() as $data) {
|
foreach($this->getFormData() as $data) {
|
||||||
yield array($data);
|
yield array($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* test that the query returned is a QueryBuilder or a NativeQuery.
|
* test that the query returned is a QueryBuilder or a NativeQuery.
|
||||||
*
|
*
|
||||||
* If the query is a QueryBuilder, test that select and from is not empty.
|
* If the query is a QueryBuilder, test that select and from is not empty.
|
||||||
*
|
*
|
||||||
* If the query is a native sql, test the query is not empty (length is
|
* If the query is a native sql, test the query is not empty (length is
|
||||||
* > 0).
|
* > 0).
|
||||||
*
|
*
|
||||||
* @dataProvider dataProviderInitiateQuery
|
* @dataProvider dataProviderInitiateQuery
|
||||||
*/
|
*/
|
||||||
public function testInitiateQuery($modifiers, $acl, $data)
|
public function testInitiateQuery($modifiers, $acl, $data)
|
||||||
{
|
{
|
||||||
var_dump($data);
|
var_dump($data);
|
||||||
$query = $this->getExport()->initiateQuery($modifiers, $acl, $data);
|
$query = $this->getExport()->initiateQuery($modifiers, $acl, $data);
|
||||||
|
|
||||||
$this->assertTrue($query instanceof QueryBuilder || $query instanceof NativeQuery,
|
$this->assertTrue($query instanceof QueryBuilder || $query instanceof NativeQuery,
|
||||||
sprintf("Assert that the returned query is an instance of %s or %s",
|
sprintf("Assert that the returned query is an instance of %s or %s",
|
||||||
QueryBuilder::class, Query::class));
|
QueryBuilder::class, Query::class));
|
||||||
|
|
||||||
if ($query instanceof QueryBuilder) {
|
if ($query instanceof QueryBuilder) {
|
||||||
|
|
||||||
$this->assertGreaterThanOrEqual(1, count($query->getDQLPart('select')),
|
$this->assertGreaterThanOrEqual(1, count($query->getDQLPart('select')),
|
||||||
"assert there is at least one 'select' part");
|
"assert there is at least one 'select' part");
|
||||||
|
|
||||||
$this->assertGreaterThanOrEqual(1, count($query->getDQLPart('from')),
|
$this->assertGreaterThanOrEqual(1, count($query->getDQLPart('from')),
|
||||||
"assert there is at least one 'from' part");
|
"assert there is at least one 'from' part");
|
||||||
|
|
||||||
} elseif ($query instanceof NativeQuery) {
|
} elseif ($query instanceof NativeQuery) {
|
||||||
$this->assertNotEmpty($query->getSQL(),
|
$this->assertNotEmpty($query->getSQL(),
|
||||||
"check that the SQL query is not empty");
|
"check that the SQL query is not empty");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that supportsModifier return :
|
* Test that supportsModifier return :
|
||||||
*
|
*
|
||||||
* - an array of string, if the query is a QueryBuilder ;
|
* - an array of string, if the query is a QueryBuilder ;
|
||||||
* - nothing, if the query is a native SQL
|
* - nothing, if the query is a native SQL
|
||||||
*
|
*
|
||||||
* @dataProvider dataProviderInitiateQuery
|
* @dataProvider dataProviderInitiateQuery
|
||||||
*/
|
*/
|
||||||
public function testSupportsModifier($modifiers, $acl, $data)
|
public function testSupportsModifier($modifiers, $acl, $data)
|
||||||
{
|
{
|
||||||
$export = $this->getExport();
|
$export = $this->getExport();
|
||||||
$query = $export->initiateQuery($modifiers, $acl, $data);
|
$query = $export->initiateQuery($modifiers, $acl, $data);
|
||||||
|
|
||||||
if ($query instanceof QueryBuilder) {
|
if ($query instanceof QueryBuilder) {
|
||||||
$this->assertContainsOnly('string', $export->supportsModifiers(),
|
$this->assertContainsOnly('string', $export->supportsModifiers(),
|
||||||
"Test that the `supportsModifiers` method returns only strings");
|
"Test that the `supportsModifiers` method returns only strings");
|
||||||
} elseif ($query instanceof NativeQuery) {
|
} elseif ($query instanceof NativeQuery) {
|
||||||
$this->assertTrue($export->supportsModifiers() === null ||
|
$this->assertTrue($export->supportsModifiers() === null ||
|
||||||
count($export->supportsModifiers()) === 0,
|
count($export->supportsModifiers()) === 0,
|
||||||
"Test that the `supportsModifier` methods returns null or an empty array");
|
"Test that the `supportsModifier` methods returns null or an empty array");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test required role is an instance of Role
|
* Test required role is an instance of Role
|
||||||
*/
|
*/
|
||||||
public function testRequiredRole()
|
public function testRequiredRole()
|
||||||
{
|
{
|
||||||
$role = $this->getExport()->requiredRole();
|
$role = $this->getExport()->requiredRole();
|
||||||
|
|
||||||
$this->assertInstanceOf(Role::class, $role,
|
$this->assertInstanceOf(Role::class, $role,
|
||||||
sprintf("test that the returned value of `requiredRole` is an instance "
|
sprintf("test that the returned value of `requiredRole` is an instance "
|
||||||
. "of %s", Role::class));
|
. "of %s", Role::class));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the formatters type are string
|
* Test the formatters type are string
|
||||||
*/
|
*/
|
||||||
public function testGetAllowedFormattersType()
|
public function testGetAllowedFormattersType()
|
||||||
{
|
{
|
||||||
$formattersTypes = $this->getExport()->getAllowedFormattersTypes();
|
$formattersTypes = $this->getExport()->getAllowedFormattersTypes();
|
||||||
|
|
||||||
$this->assertContainsOnly("string", $formattersTypes,
|
$this->assertContainsOnly("string", $formattersTypes,
|
||||||
"Test that the method `getAllowedFormattersTypes` returns an array of string");
|
"Test that the method `getAllowedFormattersTypes` returns an array of string");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that the query keys are strings
|
* Test that the query keys are strings
|
||||||
*
|
*
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @dataProvider dataProviderGetQueryKeys
|
* @dataProvider dataProviderGetQueryKeys
|
||||||
*/
|
*/
|
||||||
public function testGetQueryKeys(array $data)
|
public function testGetQueryKeys(array $data)
|
||||||
{
|
{
|
||||||
$queryKeys = $this->getExport()->getQueryKeys($data);
|
$queryKeys = $this->getExport()->getQueryKeys($data);
|
||||||
|
|
||||||
$this->assertContainsOnly("string", $queryKeys,
|
$this->assertContainsOnly("string", $queryKeys,
|
||||||
"test that the query keys returned by `getQueryKeys` are only strings");
|
"test that the query keys returned by `getQueryKeys` are only strings");
|
||||||
$this->assertGreaterThanOrEqual(1, count($queryKeys),
|
$this->assertGreaterThanOrEqual(1, count($queryKeys),
|
||||||
"test that there are at least one query key returned");
|
"test that there are at least one query key returned");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Test that
|
* Test that
|
||||||
*
|
*
|
||||||
* - the results have a correct form (are arrays or traversable)
|
* - the results have a correct form (are arrays or traversable)
|
||||||
* - each key in a row are present in getQueryKeys ;
|
* - each key in a row are present in getQueryKeys ;
|
||||||
* - each returned object of the `getLabels` method is callable
|
* - each returned object of the `getLabels` method is callable
|
||||||
* - each result can be converted to string using this callable
|
* - each result can be converted to string using this callable
|
||||||
* - each of this callable can provide a string for '_header'
|
* - each of this callable can provide a string for '_header'
|
||||||
*
|
*
|
||||||
* @param string[] $modifiers
|
* @param string[] $modifiers
|
||||||
* @param array $acl
|
* @param array $acl
|
||||||
* @param array $data
|
* @param array $data
|
||||||
*
|
*
|
||||||
* @dataProvider dataProviderInitiateQuery
|
* @dataProvider dataProviderInitiateQuery
|
||||||
*/
|
*/
|
||||||
public function testGetResultsAndLabels($modifiers, $acl, array $data)
|
public function testGetResultsAndLabels($modifiers, $acl, array $data)
|
||||||
{
|
{
|
||||||
// it is more convenient to group the `getResult` and `getLabels` test
|
// it is more convenient to group the `getResult` and `getLabels` test
|
||||||
// due to the fact that testing both methods use the same tools.
|
// due to the fact that testing both methods use the same tools.
|
||||||
|
|
||||||
$queryKeys = $this->getExport()->getQueryKeys($data);
|
$queryKeys = $this->getExport()->getQueryKeys($data);
|
||||||
$query = $this->getExport()->initiateQuery($modifiers, $acl, $data);
|
$query = $this->getExport()->initiateQuery($modifiers, $acl, $data);
|
||||||
|
|
||||||
// limit the result for the query for performance reason (only for QueryBuilder,
|
// limit the result for the query for performance reason (only for QueryBuilder,
|
||||||
// not possible in NativeQuery)
|
// not possible in NativeQuery)
|
||||||
if ($query instanceof QueryBuilder) {
|
if ($query instanceof QueryBuilder) {
|
||||||
$query->setMaxResults(1);
|
$query->setMaxResults(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$results = $this->getExport()->getResult($query, $data);
|
$results = $this->getExport()->getResult($query, $data);
|
||||||
|
|
||||||
$this->assertInternalType('array', $results,
|
$this->assertInternalType('array', $results,
|
||||||
"assert that the returned result is an array");
|
"assert that the returned result is an array");
|
||||||
|
|
||||||
if (count($results) === 0) {
|
if (count($results) === 0) {
|
||||||
$this->markTestIncomplete("The result is empty. We cannot process tests "
|
$this->markTestIncomplete("The result is empty. We cannot process tests "
|
||||||
. "on results");
|
. "on results");
|
||||||
}
|
}
|
||||||
|
|
||||||
// testing the result
|
// testing the result
|
||||||
$result = $results[0];
|
$result = $results[0];
|
||||||
|
|
||||||
$this->assertTrue( $result instanceof \Traversable || is_array($result),
|
$this->assertTrue( $result instanceof \Traversable || is_array($result),
|
||||||
"test that each row in the result is traversable or an array");
|
"test that each row in the result is traversable or an array");
|
||||||
|
|
||||||
foreach ($result as $key => $value) {
|
foreach ($result as $key => $value) {
|
||||||
$this->assertContains($key, $queryKeys,
|
$this->assertContains($key, $queryKeys,
|
||||||
"test that each key is present in `getQueryKeys`");
|
"test that each key is present in `getQueryKeys`");
|
||||||
|
|
||||||
$closure = $this->getExport()->getLabels($key, array($value), $data);
|
$closure = $this->getExport()->getLabels($key, array($value), $data);
|
||||||
|
|
||||||
$this->assertTrue(is_callable($closure, false),
|
$this->assertTrue(is_callable($closure, false),
|
||||||
"test that the `getLabels` for key is a callable");
|
"test that the `getLabels` for key is a callable");
|
||||||
$this->assertTrue(is_string((string) call_user_func($closure, $value)),
|
$this->assertTrue(is_string((string) call_user_func($closure, $value)),
|
||||||
sprintf("test that the callable return by `getLabels` for key %s "
|
sprintf("test that the callable return by `getLabels` for key %s "
|
||||||
. "is a string or an be converted to a string", $key));
|
. "is a string or an be converted to a string", $key));
|
||||||
|
|
||||||
$this->assertTrue(
|
$this->assertTrue(
|
||||||
// conditions
|
// conditions
|
||||||
is_string((string) call_user_func($closure, '_header'))
|
is_string((string) call_user_func($closure, '_header'))
|
||||||
@ -322,13 +322,13 @@ abstract class AbstractExportTest extends WebTestCase
|
|||||||
sprintf("Test that the callable return by `getLabels` for key %s "
|
sprintf("Test that the callable return by `getLabels` for key %s "
|
||||||
. "can provide an header", $key)
|
. "can provide an header", $key)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that the translated title of the export is present the list,
|
* Test that the translated title of the export is present the list,
|
||||||
* and that the list of exports (under `/fr/exports/`) is still successfull
|
* and that the list of exports (under `/fr/exports/`) is still successfull
|
||||||
*/
|
*/
|
||||||
public function testListExportPage()
|
public function testListExportPage()
|
||||||
@ -338,17 +338,17 @@ abstract class AbstractExportTest extends WebTestCase
|
|||||||
$export = $this->getExport();
|
$export = $this->getExport();
|
||||||
$prophet= new \Prophecy\Prophet;
|
$prophet= new \Prophecy\Prophet;
|
||||||
$container = static::$kernel->getContainer();
|
$container = static::$kernel->getContainer();
|
||||||
|
|
||||||
// store the locale in a request
|
// store the locale in a request
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
$request->setLocale('fr');
|
$request->setLocale('fr');
|
||||||
$container->get('request_stack')->push($request);
|
$container->get('request_stack')->push($request);
|
||||||
// translate the title
|
// translate the title
|
||||||
$title = $container->get('translator')->trans($export->getTitle());
|
$title = $container->get('translator')->trans($export->getTitle());
|
||||||
|
|
||||||
// performs the request to /fr/exports
|
// performs the request to /fr/exports
|
||||||
$crawler = $client->request('GET', '/fr/exports/');
|
$crawler = $client->request('GET', '/fr/exports/');
|
||||||
|
|
||||||
// and finally make tests
|
// and finally make tests
|
||||||
$this->assertTrue($client->getResponse()->isSuccessful(),
|
$this->assertTrue($client->getResponse()->isSuccessful(),
|
||||||
"test that the response of /fr/exports/ is successful");
|
"test that the response of /fr/exports/ is successful");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user