Skip to content

Commit 90b23eb

Browse files
committed
Move useConfigFiles method to Container module
1 parent 6f2ab79 commit 90b23eb

File tree

2 files changed

+46
-59
lines changed

2 files changed

+46
-59
lines changed

src/Module/Container.php

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Nette\Caching\Storages\IJournal;
1616
use Nette\Caching\Storages\SQLiteJournal;
1717
use Nette\Configurator;
18+
use Nette\DI\Container as DIContainer;
1819
use Nette\DI\MissingServiceException;
1920
use Nette\Http\Session;
2021
use Nette\Utils\FileSystem;
@@ -38,6 +39,11 @@ class Container extends Module
3839
*/
3940
private $path;
4041

42+
/**
43+
* @var array
44+
*/
45+
private $configFiles;
46+
4147
/**
4248
* @var Container
4349
*/
@@ -78,12 +84,42 @@ public function _after(TestInterface $test)
7884
}
7985
}
8086

81-
public function createContainer(array $configFiles = null)
87+
public function useConfigFiles(array $configFiles)
8288
{
8389
if ($this->container) {
84-
$this->fail('Can\'t create more than one container.');
90+
$this->fail('Can\'t set configFiles after the container is created.');
91+
}
92+
$this->configFiles = $configFiles;
93+
}
94+
95+
/**
96+
* @return DIContainer
97+
*/
98+
public function getContainer()
99+
{
100+
if (!$this->container) {
101+
$this->createContainer();
102+
}
103+
104+
return $this->container;
105+
}
106+
107+
/**
108+
* @param string $service
109+
*
110+
* @return object
111+
*/
112+
public function grabService($service)
113+
{
114+
try {
115+
return $this->getContainer()->getByType($service);
116+
} catch (MissingServiceException $e) {
117+
$this->fail($e->getMessage());
85118
}
119+
}
86120

121+
private function createContainer()
122+
{
87123
$configurator = new $this->config['configurator']();
88124

89125
if ($this->config['logDir']) {
@@ -99,28 +135,11 @@ public function createContainer(array $configFiles = null)
99135
$configurator->setDebugMode($this->config['debugMode']);
100136
}
101137

102-
$configFiles = is_array($configFiles) ? $configFiles : $this->config['configFiles'];
138+
$configFiles = is_array($this->configFiles) ? $this->configFiles : $this->config['configFiles'];
103139
foreach ($configFiles as $file) {
104140
$configurator->addConfig($this->path.'/'.$file, false);
105141
}
106142

107143
$this->container = $configurator->createContainer();
108-
109-
return $this->container;
110144
}
111-
112-
/**
113-
* @param string $service
114-
*
115-
* @return object
116-
*/
117-
public function grabService($service)
118-
{
119-
try {
120-
return call_user_func($this->containerAccessor)->getByType($service);
121-
} catch (MissingServiceException $e) {
122-
$this->fail($e->getMessage());
123-
}
124-
}
125-
126145
}

src/Module/Nette.php

Lines changed: 7 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@
1111
namespace Arachne\Codeception\Module;
1212

1313
use Arachne\Codeception\Connector\Nette as NetteConnector;
14-
use Arachne\Codeception\Module\Container as ContainerModule;
1514
use Codeception\Lib\Framework;
1615
use Codeception\TestInterface;
17-
use Nette\DI\Container;
18-
use Nette\DI\MissingServiceException;
16+
use Nette\Http\IRequest;
17+
use Nette\Http\IResponse;
1918

2019
/**
2120
* @author Jáchym Toušek <enumag@gmail.com>
@@ -26,21 +25,6 @@ class Nette extends Framework
2625
'followRedirects' => true,
2726
];
2827

29-
/**
30-
* @var array
31-
*/
32-
private $configFiles;
33-
34-
/**
35-
* @var Container
36-
*/
37-
private $container;
38-
39-
/**
40-
* @var callable
41-
*/
42-
private $containerAccessor;
43-
4428
/**
4529
* @var string
4630
*/
@@ -54,30 +38,15 @@ public function _beforeSuite($settings = [])
5438
public function _before(TestInterface $test)
5539
{
5640
$this->configFiles = null;
57-
$this->container = null;
58-
$this->containerAccessor = function () {
59-
if (!$this->container) {
60-
$this->container = $this->getModule(ContainerModule::class)->createContainer();
61-
}
62-
63-
return $this->container;
64-
};
65-
6641
$this->client = new NetteConnector();
67-
$this->client->setContainerAccessor($this->containerAccessor);
42+
$this->client->setContainerAccessor(function () {
43+
return $this->getModule(Container::class)->getContainer();
44+
});
6845
$this->client->followRedirects($this->config['followRedirects']);
6946

7047
parent::_before($test);
7148
}
7249

73-
public function useConfigFiles(array $configFiles)
74-
{
75-
if ($this->container) {
76-
$this->fail('Can\'t set configFiles after the container is created.');
77-
}
78-
$this->configFiles = $configFiles;
79-
}
80-
8150
public function _after(TestInterface $test)
8251
{
8352
parent::_after($test);
@@ -94,9 +63,8 @@ public function seeRedirectTo($url)
9463
if ($this->config['followRedirects']) {
9564
$this->fail('Method seeRedirectTo only works when followRedirects option is disabled');
9665
}
97-
$container = call_user_func($this->containerAccessor);
98-
$request = $container->getByType('Nette\Http\IRequest');
99-
$response = $container->getByType('Nette\Http\IResponse');
66+
$request = $this->getModule(Container::class)->grabService(IRequest::class);
67+
$response = $this->getModule(Container::class)->grabService(IResponse::class);
10068
if ($response->getHeader('Location') !== $request->getUrl()->getHostUrl().$url && $response->getHeader('Location') !== $url) {
10169
$this->fail('Couldn\'t confirm redirect target to be "'.$url.'", Location header contains "'.$response->getHeader('Location').'".');
10270
}

0 commit comments

Comments
 (0)