RepositoryUpdateFeatureContext   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 16
c 2
b 0
f 0
dl 0
loc 53
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A iCallMethodOnRepositoryWithExistingEntitiesAndParameters() 0 3 1
A iCallMethodOnRepositoryWithExistingEntitiesAndParametersAndExpectingException() 0 9 2
A callMethodOnRepositoryWithExistingEntitiesAndParameters() 0 19 2
1
<?php declare(strict_types=1);
2
3
namespace Janisbiz\LightOrm\Tests\Behat\Features\Dms\MySQL\Repository;
4
5
use Behat\Gherkin\Node\TableNode;
6
7
class RepositoryUpdateFeatureContext extends AbstractRepositoryFeatureContext
8
{
9
    /**
10
     * @When /^I call method "(.*)" on repository with existing entities and parameters:$/
11
     *
12
     * @param string $method
13
     * @param TableNode $parameters
14
     */
15
    public function iCallMethodOnRepositoryWithExistingEntitiesAndParameters(string $method, TableNode $parameters)
16
    {
17
        $this->callMethodOnRepositoryWithExistingEntitiesAndParameters($method, $parameters);
18
    }
19
    /**
20
     * @When /^I call method "(.*)" on repository with existing entities and parameters and expecting exception:$/
21
     *
22
     * @param string $method
23
     * @param TableNode $parameters
24
     */
25
    public function iCallMethodOnRepositoryWithExistingEntitiesAndParametersAndExpectingException(
26
        string $method,
27
        TableNode $parameters
28
    ) {
29
        try {
30
            $this->callMethodOnRepositoryWithExistingEntitiesAndParameters($method, $parameters);
31
        } catch (\Exception $e) {
32
            static::$entities = [];
33
            static::$exception = $e;
34
        }
35
    }
36
37
    /**
38
     * @param string $method
39
     * @param TableNode $parameters
40
     */
41
    private function callMethodOnRepositoryWithExistingEntitiesAndParameters(string $method, TableNode $parameters)
42
    {
43
        $entitiesStorage = static::$entities;
44
        static::$entities = [];
45
46
        foreach ($this->normalizeTableNode($parameters) as $i => $methodParameters) {
47
            static::$entities[] = \call_user_func_array(
48
                [
49
                    static::$repository,
50
                    $method,
51
                ],
52
                [
53
                    'entity' => $entitiesStorage[$i],
54
                ]
55
                + $methodParameters
56
            );
57
        }
58
59
        \array_filter(static::$entities);
60
    }
61
}
62