Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
11 / 11 |
CRAP | |
100.00% |
21 / 21 |
| PropertyMockProvider | |
100.00% |
1 / 1 |
|
100.00% |
11 / 11 |
14 | |
100.00% |
21 / 21 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
5 / 5 |
|||
| mockPropertyAnnotations | |
100.00% |
1 / 1 |
3 | |
100.00% |
3 / 3 |
|||
| getAnnotations | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setAnnotations | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getStrategy | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setStrategy | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| hasFilter | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getFilter | |
100.00% |
1 / 1 |
2 | |
100.00% |
1 / 1 |
|||
| setFilter | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getPriority | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setPriority | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| <?php | |
| /** | |
| * Copyright (c) Tony Bogdanov <support@tonybogdanov.com> | |
| * | |
| * For the full copyright and license information, please view the LICENSE | |
| * file that was distributed with this source code. | |
| */ | |
| namespace TonyBogdanov\MockableAnnotations\MockProvider; | |
| use ReflectionProperty; | |
| use TonyBogdanov\MockableAnnotations\MockProvider\PropertyMockProvider\Filter\FilterInterface; | |
| use TonyBogdanov\MockableAnnotations\MockProvider\PropertyMockProvider\Strategy\StrategyInterface; | |
| /** | |
| * Class PropertyMockProvider | |
| * | |
| * @package TonyBogdanov\MockableAnnotations\MockProvider | |
| */ | |
| class PropertyMockProvider implements | |
| PropertyMockProviderInterface, | |
| SortableMockProviderInterface | |
| { | |
| /** | |
| * @var array | |
| */ | |
| protected $annotations; | |
| /** | |
| * @var StrategyInterface | |
| */ | |
| protected $strategy; | |
| /** | |
| * @var FilterInterface|null | |
| */ | |
| protected $filter; | |
| /** | |
| * @var int | |
| */ | |
| protected $priority; | |
| /** | |
| * PropertyMockProvider constructor. | |
| * | |
| * @param array $annotations | |
| * @param StrategyInterface $strategy | |
| * @param FilterInterface|null $filter | |
| * @param int $priority | |
| */ | |
| public function __construct( | |
| array $annotations, | |
| StrategyInterface $strategy, | |
| FilterInterface $filter = null, | |
| int $priority = 0 | |
| ) { | |
| $this | |
| ->setAnnotations( $annotations ) | |
| ->setStrategy( $strategy ) | |
| ->setFilter( $filter ) | |
| ->setPriority( $priority ); | |
| } | |
| /** | |
| * @param ReflectionProperty $property | |
| * @param array $annotations | |
| * | |
| * @return array | |
| */ | |
| public function mockPropertyAnnotations( ReflectionProperty $property, array $annotations ): array { | |
| if ( $this->hasFilter() && ! $this->getFilter()->shouldMock( $property, $annotations ) ) { | |
| return $annotations; | |
| } | |
| return $this->getStrategy()->mock( $property, $annotations, $this->getAnnotations() ); | |
| } | |
| /** | |
| * @return array | |
| */ | |
| public function getAnnotations(): array { | |
| return $this->annotations; | |
| } | |
| /** | |
| * @param array $annotations | |
| * | |
| * @return $this | |
| */ | |
| public function setAnnotations( array $annotations ): self { | |
| $this->annotations = $annotations; | |
| return $this; | |
| } | |
| /** | |
| * @return StrategyInterface | |
| */ | |
| public function getStrategy(): StrategyInterface { | |
| return $this->strategy; | |
| } | |
| /** | |
| * @param StrategyInterface $strategy | |
| * | |
| * @return $this | |
| */ | |
| public function setStrategy( StrategyInterface $strategy ): self { | |
| $this->strategy = $strategy; | |
| return $this; | |
| } | |
| /** | |
| * @return bool | |
| */ | |
| public function hasFilter(): bool { | |
| return isset( $this->filter ); | |
| } | |
| /** | |
| * @return FilterInterface|null | |
| */ | |
| public function getFilter(): ?FilterInterface { | |
| return $this->filter; | |
| } | |
| /** | |
| * @param FilterInterface|null $filter | |
| * | |
| * @return $this | |
| */ | |
| public function setFilter( FilterInterface $filter = null ): self { | |
| $this->filter = $filter; | |
| return $this; | |
| } | |
| /** | |
| * @return int | |
| */ | |
| public function getPriority(): int { | |
| return $this->priority; | |
| } | |
| /** | |
| * @param int $priority | |
| * | |
| * @return $this | |
| */ | |
| public function setPriority( int $priority ): self { | |
| $this->priority = $priority; | |
| return $this; | |
| } | |
| } |