Code Coverage  | 
     ||||||||||
Classes and Traits  | 
      Functions and Methods  | 
      Lines  | 
     ||||||||
| Total |         | 
      100.00%  | 
      1 / 1  | 
              | 
      100.00%  | 
      4 / 4  | 
      CRAP |         | 
      100.00%  | 
      17 / 17  | 
     
| UserOrderTransformer |         | 
      100.00%  | 
      1 / 1  | 
              | 
      100.00%  | 
      4 / 4  | 
      7 |         | 
      100.00%  | 
      17 / 17  | 
     
| __construct(ExtractorInterface $extractor) |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      3 / 3  | 
     |||
| transform(OrderInterface $order, $userOrder) |         | 
      100.00%  | 
      1 / 1  | 
      4 |         | 
      100.00%  | 
      10 / 10  | 
     |||
| addStrategy( UserOrderTransformerStrategyInterface $userOrderTransformerStrategy ) |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      2 / 2  | 
     |||
| getExtractedResults($userOrder) |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      2 / 2  | 
     |||
| <?php | |
| /** | |
| * @author Krzysztof Gzocha <krzysztof.gzocha@xsolve.pl> | |
| */ | |
| namespace Team3\PayU\Order\Transformer\UserOrder; | |
| use Team3\PayU\Order\Model\Order; | |
| use Team3\PayU\Order\Model\OrderInterface; | |
| use Team3\PayU\PropertyExtractor\ExtractorInterface; | |
| use Team3\PayU\PropertyExtractor\ExtractorResult; | |
| use Team3\PayU\Order\Transformer\UserOrder\Strategy\UserOrderTransformerStrategyInterface; | |
| class UserOrderTransformer implements UserOrderTransformerInterface | |
| { | |
| /** | |
| * @var UserOrderTransformerStrategyInterface[] | |
| */ | |
| protected $strategies; | |
| /** | |
| * @var ExtractorInterface | |
| */ | |
| protected $extractor; | |
| /** | |
| * @param ExtractorInterface $extractor | |
| */ | |
| public function __construct(ExtractorInterface $extractor) | |
| { | |
| $this->extractor = $extractor; | |
| $this->strategies = []; | |
| } | |
| /** | |
| * @inheritdoc | |
| */ | |
| public function transform(OrderInterface $order, $userOrder) | |
| { | |
| foreach ($this->getExtractedResults($userOrder) as $extractionResult) { | |
| foreach ($this->strategies as $strategy) { | |
| if ($strategy->supports($extractionResult->getPropertyName())) { | |
| $strategy->transform( | |
| $order, | |
| $extractionResult | |
| ); | |
| } | |
| } | |
| } | |
| return $order; | |
| } | |
| /** | |
| * @param UserOrderTransformerStrategyInterface $userOrderTransformerStrategy | |
| */ | |
| public function addStrategy( | |
| UserOrderTransformerStrategyInterface $userOrderTransformerStrategy | |
| ) { | |
| $this->strategies[] = $userOrderTransformerStrategy; | |
| } | |
| /** | |
| * @param $userOrder | |
| * | |
| * @return ExtractorResult[] | |
| */ | |
| protected function getExtractedResults($userOrder) | |
| { | |
| return $this | |
| ->extractor | |
| ->extract($userOrder); | |
| } | |
| } |