<?xml version="1.0" ?>

<!--

 This file is part of the Sylius package.

 (c) Sylius Sp. z o.o.

 For the full copyright and license information, please view the LICENSE
 file that was distributed with this source code.

-->

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"
>
    <services>
        <defaults public="true" />

        <service id="sylius.behat.context.api.shop.address" class="Sylius\Behat\Context\Api\Shop\AddressContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="api_platform.iri_converter" />
            <argument type="service" id="sylius.behat.shared_storage" />
        </service>

        <service id="sylius.behat.context.api.shop.channel" class="Sylius\Behat\Context\Api\Shop\ChannelContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument>%sylius.security.new_api_route%</argument>
        </service>

        <service id="sylius.behat.context.api.shop.currency" class="Sylius\Behat\Context\Api\Shop\CurrencyContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
        </service>

        <service id="sylius.behat.context.api.shop.cart" class="Sylius\Behat\Context\Api\Shop\CartContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="sylius.behat.api_platform_client.admin" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="Sylius\Component\Product\Resolver\ProductVariantResolverInterface" />
            <argument type="service" id="api_platform.iri_converter" />
            <argument type="service" id="sylius.behat.request_factory" />
            <argument>%sylius.security.new_api_route%</argument>
        </service>

        <service id="sylius.behat.context.api.shop.customer" class="Sylius\Behat\Context\Api\Shop\CustomerContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.context.api.shop.registration" />
            <argument type="service" id="sylius.behat.context.api.shop.login" />
            <argument type="service" id="sylius.behat.context.setup.shop_api_security" />
            <argument type="service" id="sylius.behat.request_factory" />
            <argument>%sylius.security.new_api_route%</argument>
        </service>

        <service id="sylius.behat.context.api.shop.exchange_rate" class="Sylius\Behat\Context\Api\Shop\ExchangeRateContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
        </service>

        <service id="sylius.behat.context.api.shop.promotion" class="Sylius\Behat\Context\Api\Shop\PromotionContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
        </service>

        <service id="sylius.behat.context.api.shop.checkout" class="Sylius\Behat\Context\Api\Shop\CheckoutContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.repository.shipping_method" />
            <argument type="service" id="sylius.repository.order" />
            <argument type="service" id="sylius.repository.payment_method" />
            <argument type="service" id="Sylius\Component\Product\Resolver\ProductVariantResolverInterface" />
            <argument type="service" id="api_platform.iri_converter" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="sylius.behat.request_factory" />
            <argument>%sylius.model.payment_method.class%</argument>
            <argument>%sylius.model.shipping_method.class%</argument>
        </service>

        <service id="sylius.behat.context.api.shop.homepage" class="Sylius\Behat\Context\Api\Shop\HomepageContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="api_platform.iri_converter" />
            <argument type="service" id="doctrine.orm.entity_manager" />
            <argument>%sylius.security.new_api_route%</argument>
        </service>

        <service id="sylius.behat.context.api.shop.login" class="Sylius\Behat\Context\Api\Shop\LoginContext">
            <argument type="service" id="sylius.behat.client.shop_api_platform_security_client" />
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="api_platform.iri_converter" />
            <argument type="service" id="test.client" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="sylius.behat.request_factory" />
            <argument>%sylius.security.new_api_route%</argument>
        </service>

        <service id="sylius.behat.context.api.shop.product" class="Sylius\Behat\Context\Api\Shop\ProductContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="api_platform.iri_converter" />
            <argument type="service" id="sylius.behat.channel_context_setter" />
            <argument type="service" id="sylius.behat.request_factory" />
            <argument>%sylius.security.new_api_route%</argument>
        </service>

        <service id="sylius.behat.context.api.shop.product_attribute" class="Sylius\Behat\Context\Api\Shop\ProductAttributeContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
        </service>

        <service id="sylius.behat.context.api.shop.product_variant" class="Sylius\Behat\Context\Api\Shop\ProductVariantContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="api_platform.iri_converter" />
        </service>

        <service id="sylius.behat.context.api.shop.product_review" class="Sylius\Behat\Context\Api\Shop\ProductReviewContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="api_platform.iri_converter" />
        </service>

        <service id="sylius.behat.context.api.shop.registration" class="Sylius\Behat\Context\Api\Shop\RegistrationContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="sylius.behat.context.api.shop.login" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.request_factory" />
            <argument>%sylius.security.new_api_route%</argument>
        </service>

        <service id="sylius.behat.context.api.shop.order" class="Sylius\Behat\Context\Api\Shop\OrderContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="sylius.behat.api_platform_client.admin" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="api_platform.iri_converter" />
            <argument type="service" id="sylius.behat.api_security" />
            <argument type="service" id="sylius.behat.request_factory" />
            <argument>%sylius.security.new_api_route%</argument>
        </service>

        <service id="sylius.behat.context.api.shop.order_item" class="Sylius\Behat\Context\Api\Shop\OrderItemContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
        </service>

        <service id="sylius.behat.context.api.shop.payment" class="Sylius\Behat\Context\Api\Shop\PaymentContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
        </service>

        <service id="sylius.behat.context.api.shop.shipment" class="Sylius\Behat\Context\Api\Shop\ShipmentContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
        </service>

        <service id="sylius.behat.context.api.shop.locale" class="Sylius\Behat\Context\Api\Shop\LocaleContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="sylius.behat.shared_storage" />
        </service>

        <service id="sylius.behat.context.api.shop.contact" class="Sylius\Behat\Context\Api\Shop\ContactContext">
            <argument type="service" id="sylius.behat.request_factory" />
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
        </service>

        <service id="sylius.behat.context.api.shop.checkout.complete" class="Sylius\Behat\Context\Api\Shop\Checkout\CheckoutCompleteContext">
            <argument type="service" id="sylius.behat.request_factory" />
            <argument type="service" id="sylius.behat.shared_storage" />
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
        </service>

        <service id="Sylius\Behat\Context\Api\Shop\TaxonContext">
            <argument type="service" id="sylius.behat.api_platform_client.shop" />
            <argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
            <argument type="service" id="api_platform.iri_converter" />
            <argument type="service" id="doctrine.orm.entity_manager" />
        </service>
    </services>
</container>
