Skip to content

Commit 1fc0a48

Browse files
committed
Added DocumentTest
1 parent 140befb commit 1fc0a48

6 files changed

Lines changed: 1581 additions & 19 deletions

File tree

.travis.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,18 @@ matrix:
1616
before_install:
1717
- sh -c 'if [ "${SYMFONY_VERSION}" != "" ]; then composer require --no-update symfony/symfony=${SYMFONY_VERSION}; fi;';
1818

19+
before_script:
20+
- echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
21+
1922
install:
2023
- travis_retry composer self-update
2124
- travis_retry composer update ${COMPOSER_FLAGS} --no-interaction
2225
- curl -s http://getcomposer.org/installer | php
2326
- php composer.phar install --dev --no-interaction
2427

2528
script:
26-
- vendor/bin/phpunit
2729
- mkdir -p build/logs
2830
- php vendor/bin/phpunit -c phpunit.xml.dist
2931

3032
after_success:
31-
- travis_retry php vendor/bin/coveralls
33+
- php vendor/bin/coveralls

Grid/Source/Document.php

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
namespace APY\DataGridBundle\Grid\Source;
1616

1717
use APY\DataGridBundle\Grid\Column\Column;
18+
use APY\DataGridBundle\Grid\Helper\ColumnsIterator;
1819
use APY\DataGridBundle\Grid\Row;
1920
use APY\DataGridBundle\Grid\Rows;
2021
use Doctrine\ODM\MongoDB\Query\Builder as QueryBuilder;
22+
use MongoDB\BSON\Regex;
2123

2224
class Document extends Source
2325
{
@@ -84,7 +86,7 @@ public function initialise($container)
8486
{
8587
$this->manager = $container->get('doctrine.odm.mongodb.document_manager');
8688
$this->odmMetadata = $this->manager->getClassMetadata($this->documentName);
87-
$this->class = $this->odmMetadata->getReflectionClass()->name;
89+
$this->class = $this->odmMetadata->getReflectionClass()->getName();
8890

8991
$mapping = $container->get('grid.mapping.manager');
9092
$mapping->addDriver($this, -1);
@@ -127,24 +129,22 @@ protected function normalizeOperator($operator)
127129
protected function normalizeValue($operator, $value)
128130
{
129131
switch ($operator) {
130-
case Column::OPERATOR_EQ:
131-
return $value;
132132
case Column::OPERATOR_NEQ:
133-
return new \MongoRegex('/^(?!' . $value . '$).*$/i');
133+
return new Regex('^(?!' . $value . '$).*$', 'i');
134134
case Column::OPERATOR_LIKE:
135-
return new \MongoRegex('/' . $value . '/i');
135+
return new Regex($value, 'i');
136136
case Column::OPERATOR_NLIKE:
137-
return new \MongoRegex('/^((?!' . $value . ').)*$/i');
137+
return new Regex('^((?!' . $value . ').)*$', 'i');
138138
case Column::OPERATOR_RLIKE:
139-
return new \MongoRegex('/^' . $value . '/i');
139+
return new Regex('^' . $value, 'i');
140140
case Column::OPERATOR_LLIKE:
141-
return new \MongoRegex('/' . $value . '$/i');
141+
return new Regex($value . '$', 'i');
142142
case Column::OPERATOR_SLIKE:
143-
return new \MongoRegex('/' . $value . '/');
143+
return new Regex($value, '');
144144
case Column::OPERATOR_RSLIKE:
145-
return new \MongoRegex('/^' . $value . '/');
145+
return new Regex('^' . $value, '');
146146
case Column::OPERATOR_LSLIKE:
147-
return new \MongoRegex('/' . $value . '$/');
147+
return new Regex($value . '$', '');
148148
case Column::OPERATOR_ISNULL:
149149
return false;
150150
case Column::OPERATOR_ISNOTNULL:
@@ -181,7 +181,7 @@ protected function getQueryBuilder()
181181
}
182182

183183
/**
184-
* @param \APY\DataGridBundle\Grid\Column\Column[] $columns
184+
* @param ColumnsIterator $columns
185185
* @param int $page Page Number
186186
* @param int $limit Rows Per Page
187187
* @param int $gridDataJunction Grid data junction
@@ -192,14 +192,13 @@ public function execute($columns, $page = 0, $limit = 0, $maxResults = null, $gr
192192
{
193193
$this->query = $this->getQueryBuilder();
194194

195+
$validColumns = [];
195196
foreach ($columns as $column) {
196197

197198
//checks if exists '.' notation on referenced columns and build query if it's filtered
198199
$subColumn = explode('.', $column->getId());
199200
if (count($subColumn) > 1 && isset($this->referencedMappings[$subColumn[0]])) {
200201
$this->addReferencedColumnn($subColumn, $column);
201-
//must remove this referenced subColumn from processing
202-
$columns->offsetUnset($columns->key());
203202

204203
continue;
205204
}
@@ -228,6 +227,8 @@ public function execute($columns, $page = 0, $limit = 0, $maxResults = null, $gr
228227
}
229228
}
230229
}
230+
231+
$validColumns[] = $column;
231232
}
232233

233234
if ($page > 0) {
@@ -250,6 +251,8 @@ public function execute($columns, $page = 0, $limit = 0, $maxResults = null, $gr
250251
//execute and get results
251252
$result = new Rows();
252253

254+
// I really don't know if Cursor is the right type returned (I mean, every single type).
255+
// As I didn't find out this information, I'm gonna test it with Cursor returned only.
253256
$cursor = $this->query->getQuery()->execute();
254257

255258
$this->count = $cursor->count();
@@ -258,7 +261,7 @@ public function execute($columns, $page = 0, $limit = 0, $maxResults = null, $gr
258261
$row = new Row();
259262
$properties = $this->getClassProperties($resource);
260263

261-
foreach ($columns as $column) {
264+
foreach ($validColumns as $column) {
262265
if (isset($properties[strtolower($column->getId())])) {
263266
$row->setField($column->getId(), $properties[strtolower($column->getId())]);
264267
}
@@ -296,6 +299,7 @@ protected function addReferencedColumnn(array $subColumn, Column $column)
296299
$cursor = $helperQuery->getQuery()->execute();
297300

298301
foreach ($cursor as $resource) {
302+
// Is this case possible? I don't think so
299303
if ($cursor->count() > 0) {
300304
$this->query->select($subColumn[0]);
301305
}
@@ -362,6 +366,12 @@ protected function getClassProperties($obj)
362366
return $result;
363367
}
364368

369+
/**
370+
* @param string $class
371+
* @param string $group
372+
*
373+
* @return array
374+
*/
365375
public function getFieldsMetadata($class, $group = 'default')
366376
{
367377
$result = [];
@@ -501,6 +511,11 @@ public function populateSelectFilters($columns, $loop = false)
501511
}
502512
}
503513

514+
/**
515+
* @param array $ids
516+
*
517+
* @throws \Exception
518+
*/
504519
public function delete(array $ids)
505520
{
506521
$repository = $this->getRepository();
@@ -518,11 +533,17 @@ public function delete(array $ids)
518533
$this->manager->flush();
519534
}
520535

536+
/**
537+
* @return \Doctrine\ODM\MongoDB\DocumentRepository
538+
*/
521539
public function getRepository()
522540
{
523541
return $this->manager->getRepository($this->documentName);
524542
}
525543

544+
/**
545+
* @return string
546+
*/
526547
public function getHash()
527548
{
528549
return $this->documentName;

Grid/Source/Source.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
namespace APY\DataGridBundle\Grid\Source;
1414

1515
use APY\DataGridBundle\Grid\Column\Column;
16+
use APY\DataGridBundle\Grid\Helper\ColumnsIterator;
1617
use APY\DataGridBundle\Grid\Mapping\Driver\DriverInterface;
1718
use APY\DataGridBundle\Grid\Row;
1819
use APY\DataGridBundle\Grid\Rows;
@@ -77,13 +78,14 @@ public function manipulateRow(\Closure $callback = null)
7778
*
7879
* @abstract
7980
*
80-
* @param \APY\DataGridBundle\Grid\Column\Column[] $columns
81+
* @param ColumnsIterator $columns
8182
* @param int $page Page Number
8283
* @param int $limit Rows Per Page
8384
* @param int $gridDataJunction Grid data junction
8485
*
8586
* @return \APY\DataGridBundle\Grid\Rows
8687
*/
88+
// @todo: typehint?
8789
abstract public function execute($columns, $page = 0, $limit = 0, $maxResults = null, $gridDataJunction = Column::DATA_CONJUNCTION);
8890

8991
/**

0 commit comments

Comments
 (0)