diff --git a/Export/Aggregator/GenderAggregator.php b/Export/Aggregator/GenderAggregator.php
index bc75c4350..58e0df994 100644
--- a/Export/Aggregator/GenderAggregator.php
+++ b/Export/Aggregator/GenderAggregator.php
@@ -77,11 +77,18 @@ class GenderAggregator implements AggregatorInterface
public function getLabels($key, array $values, $data)
{
- return array(
- Person::FEMALE_GENDER => $this->translator->trans('woman'),
- Person::MALE_GENDER => $this->translator->trans('man'),
- '_header' => $this->translator->trans('Gender')
- );
+ return function($value) {
+ switch ($value) {
+ case Person::FEMALE_GENDER :
+ return $this->translator->trans('woman');
+ case Person::MALE_GENDER :
+ return $this->translator->trans('man');
+ case '_header' :
+ return $this->translator->trans('Gender');
+ default:
+ throw new \LogicException(sprintf("The value %s is not valid", $value));
+ }
+ };
}
public function addRole()
diff --git a/Export/Aggregator/NationalityAggregator.php b/Export/Aggregator/NationalityAggregator.php
index 442aff978..772564f7e 100644
--- a/Export/Aggregator/NationalityAggregator.php
+++ b/Export/Aggregator/NationalityAggregator.php
@@ -164,12 +164,11 @@ class NationalityAggregator implements AggregatorInterface
foreach($countries as $row) {
$labels[$row['c_countryCode']] = $this->translatableStringHelper->localize($row['c_name']);
}
-
- return $labels;
+
} elseif ($data['group_by_level'] === 'continent') {
- return array(
+ $labels = array(
'EU' => $this->translator->trans('Europe'),
'AS' => $this->translator->trans('Asia'),
'AN' => $this->translator->trans('Antartica'),
@@ -181,6 +180,11 @@ class NationalityAggregator implements AggregatorInterface
'_header' => $this->translator->trans('Continent')
);
}
+
+
+ return function($value) use ($labels) {
+ return $labels[$value];
+ };
}
}
diff --git a/Export/Export/CountPerson.php b/Export/Export/CountPerson.php
index c9d72a7eb..bb688e030 100644
--- a/Export/Export/CountPerson.php
+++ b/Export/Export/CountPerson.php
@@ -114,7 +114,9 @@ class CountPerson implements ExportInterface
$labels = array_combine($values, $values);
$labels['_header'] = 'Number of people';
- return $labels;
+ return function($value) use ($labels) {
+ return $labels[$value];
+ };
}
public function getAllowedFormattersTypes()
diff --git a/Export/Filter/GenderFilter.php b/Export/Filter/GenderFilter.php
index 81e6f731a..f321900e2 100644
--- a/Export/Filter/GenderFilter.php
+++ b/Export/Filter/GenderFilter.php
@@ -87,6 +87,11 @@ class GenderFilter implements FilterInterface
public function describeAction($data, $format = 'string')
{
-
+ switch($data['accepted_genders']) {
+ case Person::MALE_GENDER:
+ return 'Filtering by gender: male only';
+ case Person::FEMALE_GENDER:
+ return array('Filtering by gender: female only');
+ }
}
}
diff --git a/Resources/translations/messages.fr.yml b/Resources/translations/messages.fr.yml
index 8f6f5d82c..643107d51 100644
--- a/Resources/translations/messages.fr.yml
+++ b/Resources/translations/messages.fr.yml
@@ -146,6 +146,8 @@ Fields to include in export: Champs à inclure dans l'export
## filters
Filter by person gender: Filtrer par genre de la personne
Accepted genders: Genres acceptés
+'Filtering by gender: male only': 'Filtré par genre: hommes seulement'
+'Filtering by gender: female only': 'Filtré par genre: femmes seulement'
Filter by person's nationality: Filtrer par nationalité
Nationalities: Nationalités
diff --git a/Tests/Export/Export/CountPersonTest.php b/Tests/Export/Export/CountPersonTest.php
new file mode 100644
index 000000000..e89250dfc
--- /dev/null
+++ b/Tests/Export/Export/CountPersonTest.php
@@ -0,0 +1,62 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+namespace Chill\PersonBundle\Tests\Export\Export;
+
+use Chill\MainBundle\Test\AbstractExportTestHelper;
+
+/**
+ * Test CountPerson export
+ *
+ * @author julien.fastre@champs-libres.coop
+ */
+class CountPersonTest extends AbstractExportTestHelper
+{
+ /**
+ *
+ * @var
+ */
+ private $export;
+
+ public function setUp()
+ {
+ static::bootKernel();
+
+ /* @var $container \Symfony\Component\DependencyInjection\ContainerInterface */
+ $container = self::$kernel->getContainer();
+
+ $this->export = $container->get('chill.person.export.export_count_person');
+ }
+
+
+ public function getExport()
+ {
+ return $this->export;
+ }
+
+ public function getFormData()
+ {
+ return array(
+ array()
+ );
+ }
+
+ public function getModifiersCombination()
+ {
+ return array( [ 'person' ] );
+ }
+}
diff --git a/Tests/Export/Filter/GenderFilterTest.php b/Tests/Export/Filter/GenderFilterTest.php
new file mode 100644
index 000000000..5e678c88f
--- /dev/null
+++ b/Tests/Export/Filter/GenderFilterTest.php
@@ -0,0 +1,78 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+namespace Chill\PersonBundle\Tests\Export\Filter;
+
+use Chill\MainBundle\Test\Export\AbstractFilterTest;
+use Chill\PersonBundle\Entity\Person;
+
+/**
+ *
+ *
+ * @author Julien Fastré
+ */
+class GenderFilterTest extends AbstractFilterTest
+{
+ /**
+ *
+ * @var \Chill\PersonBundle\Export\Filter\GenderFilter
+ */
+ private $filter;
+
+ public function setUp()
+ {
+ static::bootKernel();
+
+ $container = static::$kernel->getContainer();
+
+ $this->filter = $container->get('chill.person.export.filter_gender');
+ }
+
+
+ public function getFilter()
+ {
+ return $this->filter;
+ }
+
+ public function getFormData()
+ {
+ return array(
+ array(
+ 'accepted_genders' => Person::FEMALE_GENDER
+ ),
+ array(
+ 'accepted_genders' => Person::MALE_GENDER
+ )
+ );
+ }
+
+ public function getQueryBuilders()
+ {
+ if (static::$kernel === null) {
+ static::bootKernel();
+ }
+
+ $em = static::$kernel->getContainer()
+ ->get('doctrine.orm.entity_manager');
+
+ return array(
+ $em->createQueryBuilder()
+ ->select('p.firstName')
+ ->from('ChillPersonBundle:Person', 'p')
+ );
+ }
+}