Skip to content

Commit e75a97c

Browse files
authored
Merge pull request #9 from wollanup/steve
EntityFactory : handles plural names of parameter (fetch collections)
2 parents de6a1aa + fdd6d78 commit e75a97c

File tree

5 files changed

+166
-12
lines changed

5 files changed

+166
-12
lines changed

src/Propel/Generator/Behavior/Api/Request/RequestBaseBuilder.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ protected function addClassBody(&$script)
9494
$script .= $this->renderTemplate('classBody',
9595
[
9696
'object' => $this->getObjectName(),
97+
'objectPlural' => $this->getPluralizer()->getPluralForm(lcfirst($this->getObjectName())),
9798
'actionClassName' => $this->actionClassName,
9899
'mapClassName' => $this->mapClassName,
99100
'entityClassName' => $this->entityClassName,
@@ -127,7 +128,7 @@ protected function addClassOpen(&$script)
127128
*/
128129
abstract class " . $this->getUnprefixedClassName() . " extends {$this->shortParentName}
129130
{
130-
131+
131132
";
132133
}
133134

src/Propel/Generator/Behavior/Api/Request/templates/classBody.template

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
private $exposedRelations;
99

1010
/**
11+
* @param bool $plural
12+
*
1113
* @return string
1214
*/
13-
public function buildNameOfParameterToAdd()
15+
public function getNameOfParameterToAdd($plural = false)
1416
{
15-
return '<?php echo lcfirst($object) ?>';
17+
return $plural ? '<?php echo lcfirst($objectPlural) ?>' : '<?php echo lcfirst($object) ?>';
1618
}
1719

1820
/**
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: steve
5+
* Date: 21/04/17
6+
* Time: 11:41
7+
*/
8+
9+
namespace Propel\Generator\Behavior\Api\Request;
10+
11+
use Eukles\Container\ContainerMock;
12+
use Eukles\Entity\EntityRequestInterface;
13+
use PHPUnit\Framework\TestCase;
14+
use Propel\Generator\Util\QuickBuilder;
15+
use Util\SetUp;
16+
17+
class RequestTest extends TestCase
18+
{
19+
20+
/**
21+
* @var QuickBuilder
22+
*/
23+
protected $builder;
24+
25+
public function setUp()
26+
{
27+
$this->builder = SetUp::load('schema-full', true);
28+
}
29+
30+
public function testAction()
31+
{
32+
$r = $this->createMock('\\ApiTest1Request');
33+
$this->assertInstanceOf(EntityRequestInterface::class, $r);
34+
$this->assertInstanceOf('Base\\ApiTest1Request', $r);
35+
}
36+
37+
public function testGetActionClassName()
38+
{
39+
/** @var EntityRequestInterface $r */
40+
$r = new \ApiTest1Request(new ContainerMock());
41+
42+
$this->assertSame('ApiTest1Action', $r->getActionClassName());
43+
}
44+
45+
public function testGetNameOfParameterToAddPlural()
46+
{
47+
/** @var EntityRequestInterface $r */
48+
$r = new \ApiTest1Request(new ContainerMock());
49+
50+
$this->assertSame('apiTest1s', $r->getNameOfParameterToAdd(true));
51+
}
52+
53+
public function testGetNameOfParameterToAddSingular()
54+
{
55+
/** @var EntityRequestInterface $r */
56+
$r = new \ApiTest1Request(new ContainerMock());
57+
58+
$this->assertSame('apiTest1', $r->getNameOfParameterToAdd());
59+
}
60+
}

tests/util/ContainerMock.php

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
<?php
22
namespace Eukles\Container {
33

4-
use Psr\Container\ContainerInterface;
4+
use Eukles\Entity\EntityFactoryInterface;
5+
use Eukles\Service\Pagination\RequestPaginationInterface;
6+
use Eukles\Service\QueryModifier\RequestQueryModifierInterface;
7+
use Eukles\Service\ResponseBuilder\ResponseBuilderInterface;
8+
use Eukles\Service\ResponseFormatter\ResponseFormatterInterface;
9+
use Eukles\Service\RoutesClasses\RoutesClassesInterface;
10+
use Eukles\Slim\Handlers\ActionErrorInterface;
11+
use Eukles\Slim\Handlers\EntityRequestErrorInterface;
12+
use Slim\Http\Request;
13+
use Slim\Interfaces\RouterInterface;
514

615
class ContainerMock implements ContainerInterface
716
{
@@ -10,6 +19,86 @@ class ContainerMock implements ContainerInterface
1019
* @inheritdoc
1120
*/
1221
public function get($id) { }
22+
23+
/**
24+
* @return ActionErrorInterface
25+
*/
26+
public function getActionErrorHandler()
27+
{
28+
// TODO: Implement getActionErrorHandler() method.
29+
}
30+
31+
/**
32+
* @return EntityFactoryInterface
33+
*/
34+
public function getEntityFactory()
35+
{
36+
// TODO: Implement getEntityFactory() method.
37+
}
38+
39+
/**
40+
* @return EntityRequestErrorInterface
41+
*/
42+
public function getEntityRequestErrorHandler()
43+
{
44+
// TODO: Implement getEntityRequestErrorHandler() method.
45+
}
46+
47+
/**
48+
* @return Request
49+
*/
50+
public function getRequest()
51+
{
52+
// TODO: Implement getRequest() method.
53+
}
54+
55+
/**
56+
* @return RequestPaginationInterface
57+
*/
58+
public function getRequestPagination()
59+
{
60+
// TODO: Implement getRequestPagination() method.
61+
}
62+
63+
/**
64+
* @return RequestQueryModifierInterface
65+
*/
66+
public function getRequestQueryModifier()
67+
{
68+
// TODO: Implement getRequestQueryModifier() method.
69+
}
70+
71+
/**
72+
* @return ResponseBuilderInterface
73+
*/
74+
public function getResponseBuilder()
75+
{
76+
// TODO: Implement getResponseBuilder() method.
77+
}
78+
79+
/**
80+
* @return ResponseFormatterInterface
81+
*/
82+
public function getResponseFormatter()
83+
{
84+
// TODO: Implement getResponseFormatter() method.
85+
}
86+
87+
/**
88+
* @return RouterInterface
89+
*/
90+
public function getRouter()
91+
{
92+
// TODO: Implement getRouter() method.
93+
}
94+
95+
/**
96+
* @return RoutesClassesInterface
97+
*/
98+
public function getRoutesClasses()
99+
{
100+
// TODO: Implement getRoutesClasses() method.
101+
}
13102

14103
/**
15104
* @inheritdoc

tests/util/EntityRequestMock.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
namespace Eukles\Entity {
33

44
use Eukles\Action\ActionInterface;
5+
use Eukles\Container\ContainerInterface;
56
use Propel\Runtime\ActiveQuery\ModelCriteria;
67
use Propel\Runtime\ActiveRecord\ActiveRecordInterface;
78
use Propel\Runtime\Map\TableMap;
8-
use Psr\Container\ContainerInterface;
99

1010
class EntityRequestMock implements EntityRequestInterface
1111
{
@@ -50,13 +50,7 @@ public function beforeCreate(ActiveRecordInterface $obj) { }
5050
*
5151
*/
5252
public function beforeFetch(ModelCriteria $query) { }
53-
54-
/**
55-
*
56-
* @return string
57-
*/
58-
public function buildNameOfParameterToAdd() { }
59-
53+
6054
/**
6155
*
6256
* @return string|ActionInterface
@@ -105,6 +99,14 @@ public function getHiddenProperties() { }
10599
* @return array List of modifiable properties
106100
*/
107101
public function getModifiableProperties() { }
102+
103+
/**
104+
*
105+
* @param bool $plural
106+
*
107+
* @return string
108+
*/
109+
public function getNameOfParameterToAdd($plural = false) { }
108110

109111
/**
110112
* @return mixed

0 commit comments

Comments
 (0)