Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
12 / 12
OrderAutocompleteFactory
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
3 / 3
4
100.00% covered (success)
100.00%
12 / 12
 build(LoggerInterface $logger)
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
5 / 5
 getStrategies(LoggerInterface $logger)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
5 / 5
 getSignatureCalculator(LoggerInterface $logger)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
<?php
/**
 * @author Krzysztof Gzocha <krzysztof.gzocha@xsolve.pl>
 */
namespace Team3\PayU\Order\Autocomplete;
use Psr\Log\LoggerInterface;
use Team3\PayU\Order\Autocomplete\Strategy\AutocompleteStrategyInterface;
use Team3\PayU\Order\Autocomplete\Strategy\CustomerIpStrategy;
use Team3\PayU\Order\Autocomplete\Strategy\MerchantPosIdStrategy;
use Team3\PayU\Order\Autocomplete\Strategy\SignatureStrategy;
use Team3\PayU\Order\Autocomplete\Strategy\TotalAmountStrategy;
use Team3\PayU\SignatureCalculator\OrderSignatureCalculatorFactory;
use Team3\PayU\SignatureCalculator\OrderSignatureCalculatorInterface;
class OrderAutocompleteFactory implements OrderAutocompleteFactoryInterface
{
    /**
     * @param LoggerInterface $logger
     *
     * @return OrderAutocompleteInterface
     */
    public function build(LoggerInterface $logger)
    {
        $orderAutocomplete = new OrderAutocomplete($logger);
        foreach ($this->getStrategies($logger) as $strategy) {
            $orderAutocomplete->addStrategy($strategy);
        }
        return $orderAutocomplete;
    }
    /**
     * @param LoggerInterface $logger
     *
     * @return AutocompleteStrategyInterface
     */
    private function getStrategies(LoggerInterface $logger)
    {
        return [
            new CustomerIpStrategy(),
            new MerchantPosIdStrategy(),
            new TotalAmountStrategy(),
            new SignatureStrategy($this->getSignatureCalculator($logger)),
        ];
    }
    /**
     * @param LoggerInterface $logger
     *
     * @return OrderSignatureCalculatorInterface
     */
    private function getSignatureCalculator(LoggerInterface $logger)
    {
        $calculatorFactory = new OrderSignatureCalculatorFactory();
        return $calculatorFactory->build($logger);
    }
}