├── .gitignore ├── README.md ├── composer.json ├── doc ├── fixtures_error.png ├── logo.jpg └── logo.png ├── easy-coding-standard.yml ├── etc ├── build │ └── .gitignore └── vsf-config │ └── local.json ├── phpspec.yml.dist ├── phpunit.xml.dist ├── spec ├── Authentication │ ├── AuthenticationFailureHandlerSpec.php │ └── AuthenticationSuccessHandlerSpec.php ├── Command │ ├── Cart │ │ ├── ApplyCouponSpec.php │ │ ├── CreateCartSpec.php │ │ ├── DeleteCartSpec.php │ │ ├── DeleteCouponSpec.php │ │ ├── SetShippingInformationSpec.php │ │ └── UpdateCartSpec.php │ ├── Order │ │ └── CreateOrderSpec.php │ └── User │ │ ├── ChangePasswordSpec.php │ │ ├── CreateUserSpec.php │ │ ├── ResetPasswordSpec.php │ │ └── UpdateUserSpec.php ├── CommandHandler │ ├── Cart │ │ ├── ApplyCouponHandlerSpec.php │ │ ├── CreateCartHandlerSpec.php │ │ ├── DeleteCartHandlerSpec.php │ │ ├── DeleteCouponHandlerSpec.php │ │ ├── SetShippingInformationHandlerSpec.php │ │ └── UpdateCartHandlerSpec.php │ ├── Order │ │ └── CreateOrderHandlerSpec.php │ └── User │ │ ├── ChangePasswordHandlerSpec.php │ │ ├── CreateUserHandlerSpec.php │ │ ├── ResetPasswordHandlerSpec.php │ │ └── UpdateUserHandlerSpec.php ├── Elasticsearch │ ├── Checker │ │ └── ProductInChannelCheckerSpec.php │ └── Transformer │ │ ├── ProductOptionToVueStorefrontDocumentTransformerSpec.php │ │ ├── ProductToVueStorefrontDocumentTransformerSpec.php │ │ ├── TaxCategoryToVueStorefrontDocumentTransformerSpec.php │ │ └── TaxonToVueStorefrontDocumentTransformerSpec.php ├── EventListener │ └── AttachRefreshTokenOnAuthenticationSuccessListenerSpec.php ├── Factory │ ├── Cart │ │ ├── CartItemViewFactorySpec.php │ │ └── PaymentMethodViewFactorySpec.php │ ├── Common │ │ ├── Address │ │ │ └── RegionViewFactorySpec.php │ │ └── AddressViewFactorySpec.php │ ├── GenericSuccessViewFactorySpec.php │ ├── Stock │ │ └── StockViewFactorySpec.php │ ├── User │ │ ├── OrderHistoryViewFactorySpec.php │ │ └── UserProfileViewFactorySpec.php │ └── ValidationErrorViewFactorySpec.php ├── Query │ ├── Cart │ │ └── GetShippingMethodsSpec.php │ └── User │ │ └── GetOrderHistorySpec.php └── Sylius │ ├── Factory │ ├── AddressFactorySpec.php │ └── CartFactorySpec.php │ ├── Provider │ ├── LoggedInShopUserProviderSpec.php │ └── ShopUserAwareCustomerProviderSpec.php │ ├── Transformer │ ├── SyliusProduct │ │ ├── ImagesToMediaGalleryTransformerSpec.php │ │ ├── InventoryToStockTransformerSpec.php │ │ ├── ProductAssociationsToLinksTransformerSpec.php │ │ ├── ProductDetailsTransformerSpec.php │ │ ├── ProductOptionsToConfigurableOptionsTransformerSpec.php │ │ ├── ProductVariantsToConfigurableChildrenTransformerSpec.php │ │ └── TaxonsToCategoriesTransformerSpec.php │ ├── SyliusProductOptionToAttributeTransformerSpec.php │ ├── SyliusProductTransformerSpec.php │ ├── SyliusTaxCategory │ │ └── TaxRatesTransformerSpec.php │ ├── SyliusTaxCategoryToTaxRuleTransformerSpec.php │ └── SyliusTaxonToCategoryTransformerSpec.php │ └── Validator │ └── Cart │ └── CartExistsValidatorSpec.php ├── src ├── Authentication │ ├── AuthenticationFailureHandler.php │ └── AuthenticationSuccessHandler.php ├── Command │ ├── Cart │ │ ├── ApplyCoupon.php │ │ ├── CreateCart.php │ │ ├── DeleteCart.php │ │ ├── DeleteCoupon.php │ │ ├── SetShippingInformation.php │ │ └── UpdateCart.php │ ├── CommandInterface.php │ ├── Order │ │ └── CreateOrder.php │ └── User │ │ ├── ChangePassword.php │ │ ├── CreateUser.php │ │ ├── ResetPassword.php │ │ └── UpdateUser.php ├── CommandHandler │ ├── Cart │ │ ├── ApplyCouponHandler.php │ │ ├── CreateCartHandler.php │ │ ├── DeleteCartHandler.php │ │ ├── DeleteCouponHandler.php │ │ ├── SetShippingInformationHandler.php │ │ └── UpdateCartHandler.php │ ├── Order │ │ └── CreateOrderHandler.php │ └── User │ │ ├── ChangePasswordHandler.php │ │ ├── CreateUserHandler.php │ │ ├── ResetPasswordHandler.php │ │ └── UpdateUserHandler.php ├── Controller │ ├── Cart │ │ ├── ApplyCouponAction.php │ │ ├── CreateCartAction.php │ │ ├── DeleteCartAction.php │ │ ├── DeleteCouponAction.php │ │ ├── GetAppliedCouponAction.php │ │ ├── GetPaymentMethodsAction.php │ │ ├── GetShippingMethodsAction.php │ │ ├── PullCartAction.php │ │ ├── SetShippingInformationAction.php │ │ ├── SyncTotalsAction.php │ │ └── UpdateCartAction.php │ ├── Catalog │ │ └── GetCatalogAction.php │ ├── Image │ │ └── ProcessImageAction.php │ ├── Order │ │ └── CreateOrderAction.php │ ├── Stock │ │ ├── CheckStockAction.php │ │ └── ListStocksAction.php │ └── User │ │ ├── ChangePasswordAction.php │ │ ├── CreateUserAction.php │ │ ├── GetOrderHistoryAction.php │ │ ├── GetUserAction.php │ │ ├── ResetPasswordAction.php │ │ └── UpdateUserAction.php ├── DependencyInjection │ ├── Configuration.php │ └── SyliusVueStorefrontExtension.php ├── Document │ ├── Attribute.php │ ├── Attribute │ │ └── Option.php │ ├── Category.php │ ├── CmsBlock.php │ ├── CmsPage.php │ ├── Indexable.php │ ├── Product.php │ ├── Product │ │ ├── Attribute.php │ │ ├── Category.php │ │ ├── Category │ │ │ └── Entity.php │ │ ├── ConfigurableChildren.php │ │ ├── ConfigurableChildren │ │ │ └── Child.php │ │ ├── ConfigurableOptions.php │ │ ├── ConfigurableOptions │ │ │ ├── Option.php │ │ │ └── OptionValue.php │ │ ├── Details.php │ │ ├── MediaGallery.php │ │ ├── MediaGallery │ │ │ └── Media.php │ │ ├── Price.php │ │ ├── ProductLinks.php │ │ ├── ProductLinks │ │ │ └── Link.php │ │ ├── Stock.php │ │ └── StockItem.php │ ├── ProductInterface.php │ ├── Review.php │ ├── TaxRule.php │ └── TaxRule │ │ ├── Rates.php │ │ └── TaxRate │ │ └── Rate.php ├── Elasticsearch │ ├── Checker │ │ └── ProductInChannelChecker.php │ ├── EventListener │ │ └── ResourceIndexListener.php │ ├── Refresher │ │ ├── ResourceRefresher.php │ │ └── ResourceRefresherInterface.php │ └── Transformer │ │ ├── ProductOptionToVueStorefrontDocumentTransformer.php │ │ ├── ProductToVueStorefrontDocumentTransformer.php │ │ ├── TaxCategoryToVueStorefrontDocumentTransformer.php │ │ └── TaxonToVueStorefrontDocumentTransformer.php ├── EventListener │ ├── AttachRefreshTokenOnAuthenticationSuccessListener.php │ └── ExceptionListener.php ├── Factory │ ├── Cart │ │ ├── CartItemViewFactory.php │ │ ├── CartItemViewFactoryInterface.php │ │ ├── PaymentMethodViewFactory.php │ │ ├── PaymentMethodViewFactoryInterface.php │ │ ├── ShippingInformationViewFactory.php │ │ ├── ShippingInformationViewFactoryInterface.php │ │ ├── ShippingMethodsViewFactory.php │ │ ├── ShippingMethodsViewFactoryInterface.php │ │ └── Totals │ │ │ ├── TaxGrandtotalDetailsViewFactory.php │ │ │ ├── TaxGrandtotalDetailsViewFactoryInterface.php │ │ │ ├── TotalSegmentExtensionAttributeViewFactory.php │ │ │ ├── TotalSegmentExtensionAttributeViewFactoryInterface.php │ │ │ ├── TotalSegmentViewFactory.php │ │ │ ├── TotalSegmentViewFactoryInterface.php │ │ │ ├── TotalsViewFactory.php │ │ │ └── TotalsViewFactoryInterface.php │ ├── Common │ │ ├── Address │ │ │ ├── RegionViewFactory.php │ │ │ └── RegionViewFactoryInterface.php │ │ ├── AddressViewFactory.php │ │ └── AddressViewFactoryInterface.php │ ├── GenericSuccessViewFactory.php │ ├── GenericSuccessViewFactoryInterface.php │ ├── Stock │ │ ├── StockViewFactory.php │ │ └── StockViewFactoryInterface.php │ ├── User │ │ ├── OrderHistory │ │ │ ├── OrderExtensionAttributesViewFactory.php │ │ │ ├── OrderExtensionAttributesViewFactoryInterface.php │ │ │ ├── OrderViewFactory.php │ │ │ ├── OrderViewFactoryInterface.php │ │ │ ├── PaymentViewFactory.php │ │ │ ├── PaymentViewFactoryInterface.php │ │ │ ├── ShippingAssignmentViewFactory.php │ │ │ ├── ShippingAssignmentViewFactoryInteface.php │ │ │ ├── ShippingTotalViewFactory.php │ │ │ ├── ShippingTotalViewFactoryInterface.php │ │ │ ├── ShippingViewFactory.php │ │ │ └── ShippingViewFactoryInterface.php │ │ ├── OrderHistoryViewFactory.php │ │ ├── OrderHistoryViewFactoryInterface.php │ │ ├── UserProfileViewFactory.php │ │ └── UserProfileViewFactoryInterface.php │ ├── ValidationErrorViewFactory.php │ └── ValidationErrorViewFactoryInterface.php ├── Generator │ ├── UuidGenerator.php │ └── UuidGeneratorInteface.php ├── Helper │ └── DateHelper.php ├── Model │ └── Request │ │ ├── Cart │ │ ├── CartItem.php │ │ └── CartItem │ │ │ ├── ConfigurableItemOption.php │ │ │ ├── ProductOption.php │ │ │ └── ProductOptionExtensionAttributes.php │ │ ├── Common │ │ ├── Address.php │ │ ├── Address │ │ │ └── Region.php │ │ ├── AddressInformation.php │ │ └── PaginationParameters.php │ │ ├── Order │ │ ├── OrderAddress.php │ │ └── Product.php │ │ └── User │ │ ├── ExistingUser.php │ │ ├── NewCustomer.php │ │ └── UserAddress.php ├── Processor │ ├── RequestProcessor.php │ └── RequestProcessorInterface.php ├── Query │ ├── Cart │ │ ├── GetAppliedCoupon.php │ │ ├── GetShippingMethods.php │ │ ├── PullCart.php │ │ └── SyncTotals.php │ ├── QueryInterface.php │ ├── Stock │ │ ├── CheckStock.php │ │ └── ListStocks.php │ └── User │ │ └── GetOrderHistory.php ├── Request │ ├── Cart │ │ ├── ApplyCouponRequest.php │ │ ├── CreateCartRequest.php │ │ ├── DeleteCartRequest.php │ │ ├── DeleteCouponRequest.php │ │ ├── GetAppliedCouponRequest.php │ │ ├── GetPaymentMethodsRequest.php │ │ ├── GetShippingMethodsRequest.php │ │ ├── PullCartRequest.php │ │ ├── SetShippingInformationRequest.php │ │ ├── SyncTotalsRequest.php │ │ └── UpdateCartRequest.php │ ├── Order │ │ └── CreateOrderRequest.php │ ├── RequestCommandInterface.php │ ├── RequestInterface.php │ ├── RequestQueryInterface.php │ ├── Stock │ │ ├── CheckStockRequest.php │ │ └── ListStocksRequest.php │ └── User │ │ ├── ChangePasswordRequest.php │ │ ├── CreateUserRequest.php │ │ ├── GetOrderHistoryRequest.php │ │ ├── ResetPasswordRequest.php │ │ └── UpdateUserRequest.php ├── Resources │ ├── config │ │ ├── config.yaml │ │ ├── doctrine.yaml │ │ ├── doctrine │ │ │ └── Order.OrderItem.orm.xml │ │ ├── indexes │ │ │ ├── attribute.yaml │ │ │ ├── category.yaml │ │ │ ├── product.yaml │ │ │ ├── taxrule.yaml │ │ │ └── vue_storefront_catalog.yaml │ │ ├── routes │ │ │ ├── api.yaml │ │ │ └── api │ │ │ │ ├── cart.yaml │ │ │ │ ├── catalog.yaml │ │ │ │ ├── image.yaml │ │ │ │ ├── order.yaml │ │ │ │ ├── stock.yaml │ │ │ │ └── user.yaml │ │ ├── routing.yaml │ │ ├── services.xml │ │ ├── services │ │ │ ├── api │ │ │ │ ├── cart.xml │ │ │ │ ├── catalog.xml │ │ │ │ ├── image.xml │ │ │ │ ├── order.xml │ │ │ │ ├── stock.xml │ │ │ │ └── user.xml │ │ │ ├── elasticsearch │ │ │ │ ├── checker.xml │ │ │ │ ├── event_listener.xml │ │ │ │ ├── model_to_elastica_document_transformer.xml │ │ │ │ └── refresher.xml │ │ │ ├── event_listeners.xml │ │ │ ├── factories.xml │ │ │ ├── factories │ │ │ │ ├── cart.xml │ │ │ │ ├── cart │ │ │ │ │ └── totals.xml │ │ │ │ ├── user.xml │ │ │ │ └── user │ │ │ │ │ └── order_history.xml │ │ │ ├── generators.xml │ │ │ ├── handlers │ │ │ │ ├── cart.xml │ │ │ │ ├── order.xml │ │ │ │ └── user.xml │ │ │ ├── request_processors │ │ │ │ ├── cart.xml │ │ │ │ ├── order.xml │ │ │ │ ├── stock.xml │ │ │ │ └── user.xml │ │ │ └── sylius │ │ │ │ ├── factory.xml │ │ │ │ ├── handler.xml │ │ │ │ ├── matcher │ │ │ │ └── cart.xml │ │ │ │ ├── modifier.xml │ │ │ │ ├── provider.xml │ │ │ │ ├── repository.xml │ │ │ │ ├── transformer │ │ │ │ ├── product_attribute_transformer.xml │ │ │ │ ├── product_transformer.xml │ │ │ │ ├── tax_category_transformer.xml │ │ │ │ └── taxon_transformer.xml │ │ │ │ └── validators │ │ │ │ ├── cart.xml │ │ │ │ ├── common.xml │ │ │ │ └── user.xml │ │ └── validation │ │ │ ├── models │ │ │ ├── cart │ │ │ │ └── CartItem.xml │ │ │ ├── common │ │ │ │ ├── Address.xml │ │ │ │ ├── AddressInformation.xml │ │ │ │ └── address │ │ │ │ │ └── Region.xml │ │ │ └── user │ │ │ │ ├── ExistingUser.xml │ │ │ │ └── NewCustomer.xml │ │ │ └── requests │ │ │ ├── cart │ │ │ ├── ApplyCouponRequest.xml │ │ │ ├── CreateCartRequest.xml │ │ │ ├── DeleteCartRequest.xml │ │ │ ├── DeleteCouponRequest.xml │ │ │ ├── GetAppliedCouponRequest.xml │ │ │ ├── GetPaymentMethods.xml │ │ │ ├── GetShippingMethodsRequest.xml │ │ │ ├── PullCartRequest.xml │ │ │ ├── SetShippingInformationRequest.xml │ │ │ ├── SyncTotalsRequest.xml │ │ │ └── UpdateCartRequest.xml │ │ │ ├── order │ │ │ └── CreateOrderRequest.xml │ │ │ ├── stock │ │ │ ├── CheckStockRequest.xml │ │ │ └── ListStocksRequest.xml │ │ │ └── user │ │ │ ├── ChangePasswordRequest.xml │ │ │ ├── CreateUserRequest.xml │ │ │ ├── GetOrderHistoryRequest.xml │ │ │ ├── ResetPasswordRquest.xml │ │ │ └── UpdateUserRequest.xml │ ├── translations │ │ └── validators.en.yaml │ └── views │ │ └── Email │ │ └── passwordReset.html.twig ├── Sylius │ ├── Entity │ │ └── Order │ │ │ ├── OrderItem.php │ │ │ └── OrderItemInterface.php │ ├── Factory │ │ ├── AddressFactory.php │ │ ├── AddressFactoryInterface.php │ │ ├── CartFactory.php │ │ └── CartFactoryInterface.php │ ├── Handler │ │ ├── ShipmentHandler.php │ │ └── ShipmentHandlerInterface.php │ ├── Mailer │ │ └── Emails.php │ ├── Matcher │ │ └── ZoneMatcher.php │ ├── Modifier │ │ ├── AdjustmentModifier.php │ │ ├── AdjustmentModifierInterface.php │ │ ├── DefaultAddressModifier.php │ │ ├── DefaultAddressModifierInterface.php │ │ ├── OrderModifier.php │ │ ├── OrderModifierInterface.php │ │ ├── ShipmentModifier.php │ │ └── ShipmentModifierInterface.php │ ├── Provider │ │ ├── AdjustmentProvider.php │ │ ├── AdjustmentProviderInterface.php │ │ ├── ChannelProvider.php │ │ ├── ChannelProviderInterface.php │ │ ├── CustomerProviderInterface.php │ │ ├── LoggedInShopUserProvider.php │ │ ├── LoggedInShopUserProviderInterface.php │ │ ├── OrderItem │ │ │ ├── CompositeOrderItemProvider.php │ │ │ ├── ExistingOrderItemProvider.php │ │ │ ├── NewOrderItemProvider.php │ │ │ └── OrderItemProviderInterface.php │ │ ├── ShipmentProvider.php │ │ ├── ShipmentProviderInterface.php │ │ └── ShopUserAwareCustomerProvider.php │ ├── Repository │ │ ├── ProductTaxonRepository.php │ │ ├── ProductVariantRepository.php │ │ └── ProductVariantRepositoryInterface.php │ ├── Transformer │ │ ├── SyliusProduct │ │ │ ├── ImagesToMediaGalleryTransformer.php │ │ │ ├── ImagesToMediaGalleryTransformerInterface.php │ │ │ ├── InventoryToStockTransformer.php │ │ │ ├── InventoryToStockTransformerInterface.php │ │ │ ├── ProductAssociationsToLinksTransformer.php │ │ │ ├── ProductAssociationsToLinksTransformerInterface.php │ │ │ ├── ProductDetailsTransformer.php │ │ │ ├── ProductDetailsTransformerInterface.php │ │ │ ├── ProductOptionsToConfigurableOptionsTransformer.php │ │ │ ├── ProductOptionsToConfigurableOptionsTransformerInterface.php │ │ │ ├── ProductVariantOptionValuesToCustomAttributesTransformer.php │ │ │ ├── ProductVariantOptionValuesToCustomAttributesTransformerInterface.php │ │ │ ├── ProductVariantPricesTransformer.php │ │ │ ├── ProductVariantPricesTransformerInterface.php │ │ │ ├── ProductVariantsToConfigurableChildrenTransformer.php │ │ │ ├── ProductVariantsToConfigurableChildrenTransformerInterface.php │ │ │ ├── TaxonsToCategoriesTransformer.php │ │ │ └── TaxonsToCategoriesTransformerInterface.php │ │ ├── SyliusProductOption │ │ │ ├── ProductOptionsValuesTransformer.php │ │ │ └── ProductOptionsValuesTransformerInterface.php │ │ ├── SyliusProductOptionToAttributeTransformer.php │ │ ├── SyliusProductOptionToAttributeTransformerInterface.php │ │ ├── SyliusProductTransformer.php │ │ ├── SyliusProductTransformerInterface.php │ │ ├── SyliusTaxCategory │ │ │ ├── TaxRatesTransformer.php │ │ │ └── TaxRatesTransformerInterface.php │ │ ├── SyliusTaxCategoryToTaxRuleTransformer.php │ │ ├── SyliusTaxCategoryToTaxRuleTransformerInterface.php │ │ ├── SyliusTaxonToCategoryTransformer.php │ │ └── SyliusTaxonToCategoryTransformerInterface.php │ └── Validator │ │ ├── Cart │ │ ├── CartExistsValidator.php │ │ ├── CartTokenValueIsNotUsedValidator.php │ │ ├── OrderItemExistValidator.php │ │ └── ValidCouponValidator.php │ │ ├── Common │ │ ├── ValidAddressInformationValidator.php │ │ └── ValidCountryValidator.php │ │ ├── Constraints │ │ ├── CartExists.php │ │ ├── CartOrderItemExist.php │ │ ├── CartTokenValueIsNotUsed.php │ │ ├── CustomerIsCurrentShopUser.php │ │ ├── CustomersEmailBelongsToCurrentShopUser.php │ │ ├── ShopUserDoesNotExist.php │ │ ├── ValidAddressInformation.php │ │ ├── ValidCountry.php │ │ └── ValidCoupon.php │ │ └── User │ │ ├── CustomerEmailBelongsToCurrentShopUserValidator.php │ │ ├── CustomerIsCurrentShopUserValidator.php │ │ └── ShopUserDoesNotExistValidator.php ├── SyliusVueStorefrontPlugin.php └── View │ ├── Cart │ ├── CartItem │ │ ├── ConfigurableItemOptionView.php │ │ ├── ProductOptionExtensionAttributeView.php │ │ └── ProductOptionView.php │ ├── CartItemView.php │ ├── PaymentMethodView.php │ ├── ShippingInformationView.php │ ├── ShippingMethodsView.php │ └── Totals │ │ ├── RateView.php │ │ ├── TaxGrandtotalDetailsView.php │ │ ├── TotalSegmentExtensionAttributeView.php │ │ ├── TotalSegmentView.php │ │ └── TotalsView.php │ ├── Common │ ├── Address │ │ └── RegionView.php │ ├── AddressView.php │ └── SearchCriteria │ │ ├── FilterGroupView.php │ │ ├── FilterView.php │ │ └── SearchCriteriaView.php │ ├── GenericSuccessView.php │ ├── Product │ ├── ProductCustomAttributeView.php │ ├── ProductListView.php │ ├── ProductPriceExtensionAttributeView.php │ ├── ProductPriceFormattedView.php │ ├── ProductPriceInfoView.php │ ├── ProductPriceView.php │ └── ProductView.php │ ├── Stock │ └── StockView.php │ ├── User │ ├── OrderHistory │ │ ├── OrderExtensionAttributesView.php │ │ ├── OrderView.php │ │ ├── PaymentView.php │ │ ├── ShippingAssignmentView.php │ │ ├── ShippingTotalView.php │ │ └── ShippingView.php │ ├── OrderHistoryView.php │ └── UserProfileView.php │ └── ValidationErrorView.php └── tests ├── Application ├── .env ├── .gitignore ├── Kernel.php ├── bin │ └── console ├── composer.json ├── config │ ├── bootstrap.php │ ├── bundles.php │ ├── jwt │ │ ├── private.pem │ │ └── public.pem │ ├── packages │ │ ├── _sylius.yaml │ │ ├── bitbag.yaml │ │ ├── command_bus.yaml │ │ ├── dev │ │ │ ├── framework.yaml │ │ │ ├── jms_serializer.yaml │ │ │ ├── monolog.yaml │ │ │ ├── routing.yaml │ │ │ ├── swiftmailer.yaml │ │ │ └── web_profiler.yaml │ │ ├── doctrine.yaml │ │ ├── doctrine_migrations.yaml │ │ ├── fos_rest.yaml │ │ ├── framework.yaml │ │ ├── gesdinet_jwt_refresh_token.yaml │ │ ├── jms_serializer.yaml │ │ ├── lexik_jwt_authentication.yaml │ │ ├── liip_imagine.yaml │ │ ├── prod │ │ │ ├── doctrine.yaml │ │ │ ├── jms_serializer.yaml │ │ │ └── monolog.yaml │ │ ├── routing.yaml │ │ ├── security.yaml │ │ ├── security_checker.yaml │ │ ├── staging │ │ │ ├── monolog.yaml │ │ │ └── swiftmailer.yaml │ │ ├── stof_doctrine_extensions.yaml │ │ ├── swiftmailer.yaml │ │ ├── test │ │ │ ├── framework.yaml │ │ │ ├── monolog.yaml │ │ │ ├── swiftmailer.yaml │ │ │ ├── sylius_theme.yaml │ │ │ └── web_profiler.yaml │ │ ├── test_cached │ │ │ ├── doctrine.yaml │ │ │ ├── fos_rest.yaml │ │ │ ├── framework.yaml │ │ │ ├── monolog.yaml │ │ │ ├── swiftmailer.yaml │ │ │ ├── sylius_channel.yaml │ │ │ ├── sylius_theme.yaml │ │ │ └── twig.yaml │ │ ├── translation.yaml │ │ ├── twig.yaml │ │ └── validator.yaml │ ├── routes.yaml │ ├── routes │ │ ├── dev │ │ │ ├── twig.yaml │ │ │ └── web_profiler.yaml │ │ ├── liip_imagine.yaml │ │ ├── sylius_admin.yaml │ │ ├── sylius_admin_api.yaml │ │ └── sylius_api.yaml │ └── services.yaml ├── public │ ├── .htaccess │ ├── favicon.ico │ ├── index.php │ ├── media │ │ └── image │ │ │ └── .gitignore │ └── robots.txt ├── templates │ └── .gitignore └── translations │ └── .gitignore ├── Controller ├── Cart │ ├── ApplyCouponActionTest.php │ ├── CreateCartActionTest.php │ ├── DeleteCartActionTest.php │ ├── DeleteCouponActionTest.php │ ├── GetAppliedCouponActionTest.php │ ├── GetPaymentMethodsActionTest.php │ ├── GetShippingMethodsActionTest.php │ ├── PullCartActionTest.php │ ├── SetShippingInformationActionTest.php │ ├── SyncTotalsActionTest.php │ └── UpdateCartActionTest.php ├── JsonApiTestCase.php ├── Stock │ └── CheckStockActionTest.php ├── User │ ├── ChangePasswordActionTest.php │ ├── CreateUserActionTest.php │ ├── GetOrderHistoryActionTest.php │ ├── GetUserActionTest.php │ ├── ResetPasswordActionTest.php │ └── UpdateUserActionTest.php └── Utils │ └── UserLoginTrait.php ├── DataFixtures └── ORM │ ├── address.yaml │ ├── channel.yaml │ ├── country.yaml │ ├── coupon_based_promotion.yaml │ ├── customer.yaml │ ├── mug_review.yaml │ ├── order.yaml │ ├── order_completed.yaml │ ├── order_item.yaml │ ├── payment.yaml │ ├── product_with_attributes.yaml │ ├── promotion.yaml │ ├── shipping.yaml │ └── shop.yaml └── Responses └── json └── Controller ├── Cart ├── Common │ ├── blank_address.json │ ├── invalid_cart.json │ ├── invalid_cart_and_blank_address.json │ └── invalid_token.json ├── apply_coupon_blank_coupon.json ├── apply_coupon_invalid_coupon.json ├── apply_coupon_successful.json ├── create_cart_successful.json ├── delete_cart_item_blank_item.json ├── delete_cart_item_non_existent_item.json ├── delete_cart_item_successful.json ├── delete_coupon_successful.json ├── get_applied_coupon_successful.json ├── get_payment_methods_successful.json ├── get_shipping_methods_successful.json ├── pull_cart_successful.json ├── set_shipping_information_non_existent_method.json ├── set_shipping_information_successful.json ├── sync_totals_successful.json ├── update_cart_non_existent_item.json └── update_cart_successful.json ├── Stock ├── check_stock_invalid_product_variant.json ├── check_stock_out_of_stock.json └── check_stock_successful.json └── User ├── Common └── invalid_token.json ├── change_password_blank_new_password.json ├── change_password_invalid_current_password.json ├── change_password_successful.json ├── create_user_account_already_exists.json ├── create_user_blank_password.json ├── create_user_invalid_customer.json ├── create_user_successful.json ├── get_order_history_successful.json ├── get_user_successful.json ├── reset_password_invalid_user.json ├── reset_password_successful.json ├── update_user_blank_addresses.json ├── update_user_blank_information.json ├── update_user_invalid_user.json └── update_user_successful.json /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | /node_modules/ 3 | /composer.lock 4 | 5 | /etc/build/* 6 | !/etc/build/.gitignore 7 | 8 | /tests/Application/yarn.lock 9 | 10 | /behat.yml 11 | /phpspec.yml 12 | /phpunit.xml 13 | .phpunit.result.cache -------------------------------------------------------------------------------- /doc/fixtures_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitBagCommerce/SyliusVueStorefrontPlugin/851ba3612e39b1bf7739b6fe5b754847db71de3a/doc/fixtures_error.png -------------------------------------------------------------------------------- /doc/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitBagCommerce/SyliusVueStorefrontPlugin/851ba3612e39b1bf7739b6fe5b754847db71de3a/doc/logo.jpg -------------------------------------------------------------------------------- /doc/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitBagCommerce/SyliusVueStorefrontPlugin/851ba3612e39b1bf7739b6fe5b754847db71de3a/doc/logo.png -------------------------------------------------------------------------------- /easy-coding-standard.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: 'vendor/sylius-labs/coding-standard/easy-coding-standard.yml' } 3 | -------------------------------------------------------------------------------- /etc/build/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitBagCommerce/SyliusVueStorefrontPlugin/851ba3612e39b1bf7739b6fe5b754847db71de3a/etc/build/.gitignore -------------------------------------------------------------------------------- /phpspec.yml.dist: -------------------------------------------------------------------------------- 1 | suites: 2 | main: 3 | namespace: BitBag\SyliusVueStorefrontPlugin 4 | psr4_prefix: BitBag\SyliusVueStorefrontPlugin 5 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | tests 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /spec/Command/Cart/ApplyCouponSpec.php: -------------------------------------------------------------------------------- 1 | beConstructedWith('token', 'cart-id', 'coupon'); 23 | } 24 | 25 | function it_is_initializable(): void 26 | { 27 | $this->shouldHaveType(ApplyCoupon::class); 28 | } 29 | 30 | function it_allows_to_access_properties_via_getters(): void 31 | { 32 | $this->token()->shouldReturn('token'); 33 | $this->cartId()->shouldReturn('cart-id'); 34 | $this->coupon()->shouldReturn('coupon'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /spec/Command/Cart/CreateCartSpec.php: -------------------------------------------------------------------------------- 1 | shouldHaveType(CreateCart::class); 23 | } 24 | 25 | function it_allows_to_set_and_access_cart_id(): void 26 | { 27 | $this->setCartId('cart-id'); 28 | $this->cartId()->shouldReturn('cart-id'); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /spec/Command/Cart/DeleteCouponSpec.php: -------------------------------------------------------------------------------- 1 | beConstructedWith('token', 'cart-id'); 23 | } 24 | 25 | function it_is_initializable(): void 26 | { 27 | $this->shouldHaveType(DeleteCoupon::class); 28 | } 29 | 30 | function it_allows_to_access_properties_via_getters(): void 31 | { 32 | $this->token()->shouldReturn('token'); 33 | $this->cartId()->shouldReturn('cart-id'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /spec/Command/User/ChangePasswordSpec.php: -------------------------------------------------------------------------------- 1 | beConstructedWith('new-password'); 23 | } 24 | 25 | function it_is_initializable(): void 26 | { 27 | $this->shouldHaveType(ChangePassword::class); 28 | } 29 | 30 | function it_allows_to_access_new_password_via_getter(): void 31 | { 32 | $this->newPassword()->shouldReturn('new-password'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /spec/Command/User/ResetPasswordSpec.php: -------------------------------------------------------------------------------- 1 | beConstructedWith('email'); 23 | } 24 | 25 | function it_is_initializable(): void 26 | { 27 | $this->shouldHaveType(ResetPassword::class); 28 | } 29 | 30 | function it_allows_to_access_emaiL_via_getter(): void 31 | { 32 | $this->email()->shouldReturn('email'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /spec/Query/User/GetOrderHistorySpec.php: -------------------------------------------------------------------------------- 1 | beConstructedWith('token', new PaginationParameters((string) 21, (string) 1)); 24 | } 25 | 26 | function it_is_initializable(): void 27 | { 28 | $this->shouldHaveType(GetOrderHistory::class); 29 | } 30 | 31 | function it_allows_to_access_token_via_getter(): void 32 | { 33 | $this->token()->shouldReturn('token'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Command/Cart/CreateCart.php: -------------------------------------------------------------------------------- 1 | cartId = $cartId; 25 | } 26 | 27 | public function cartId(): string 28 | { 29 | return $this->cartId; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Command/Cart/DeleteCoupon.php: -------------------------------------------------------------------------------- 1 | token = $token; 28 | $this->cartId = $cartId; 29 | } 30 | 31 | public function token(): ?string 32 | { 33 | return $this->token; 34 | } 35 | 36 | public function cartId(): string 37 | { 38 | return $this->cartId; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Command/CommandInterface.php: -------------------------------------------------------------------------------- 1 | newPassword = $newPassword; 25 | } 26 | 27 | public function newPassword(): string 28 | { 29 | return $this->newPassword; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Command/User/ResetPassword.php: -------------------------------------------------------------------------------- 1 | email = $email; 25 | } 26 | 27 | public function email(): ?string 28 | { 29 | return $this->email; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Command/User/UpdateUser.php: -------------------------------------------------------------------------------- 1 | customer = $customer; 26 | } 27 | 28 | public function customer(): ExistingUser 29 | { 30 | return $this->customer; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Document/Attribute/Option.php: -------------------------------------------------------------------------------- 1 | label = $label; 30 | $this->value = $value; 31 | } 32 | 33 | public function jsonSerialize() 34 | { 35 | return [ 36 | self::LABEL => $this->label, 37 | self::VALUE => $this->value, 38 | ]; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Document/CmsBlock.php: -------------------------------------------------------------------------------- 1 | code = $code; 30 | $this->value = $value; 31 | } 32 | 33 | public function jsonSerialize(): array 34 | { 35 | return [ 36 | self::CODE => $this->code, 37 | self::VALUE => $this->value, 38 | ]; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Document/Product/ConfigurableChildren.php: -------------------------------------------------------------------------------- 1 | children = $children; 27 | } 28 | 29 | public function toArray(): array 30 | { 31 | return [ 32 | self::CHILDREN => $this->children, 33 | ]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Document/Product/ConfigurableOptions.php: -------------------------------------------------------------------------------- 1 | options = $options; 27 | } 28 | 29 | public function toArray(): array 30 | { 31 | return [ 32 | self::OPTIONS => $this->options, 33 | ]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Document/Product/ConfigurableOptions/OptionValue.php: -------------------------------------------------------------------------------- 1 | index = $index; 30 | $this->label = $label; 31 | } 32 | 33 | public function jsonSerialize(): array 34 | { 35 | return [ 36 | self::INDEX => $this->index, 37 | self::LABEL => $this->label, 38 | ]; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Document/Product/MediaGallery.php: -------------------------------------------------------------------------------- 1 | media = $media; 27 | } 28 | 29 | public function toArray(): array 30 | { 31 | return [ 32 | self::MEDIA_GALLERY => $this->media, 33 | ]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Document/Product/ProductLinks.php: -------------------------------------------------------------------------------- 1 | links = $links; 27 | } 28 | 29 | public function toArray(): array 30 | { 31 | return [ 32 | self::PRODUCT_LINKS => $this->links, 33 | ]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Document/Product/StockItem.php: -------------------------------------------------------------------------------- 1 | taxRates = $taxRates; 32 | $this->ids = $ids; 33 | } 34 | 35 | public function toArray(): array 36 | { 37 | return [ 38 | self::TAX_RATES => $this->taxRates, 39 | self::TAX_RATES_IDS => $this->ids, 40 | ]; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/Elasticsearch/Refresher/ResourceRefresherInterface.php: -------------------------------------------------------------------------------- 1 | setResponse(new JsonResponse( 24 | [ 25 | 'result' => $event->getThrowable()->getMessage(), 26 | 'code' => Response::HTTP_INTERNAL_SERVER_ERROR, 27 | ] 28 | )); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Factory/Cart/CartItemViewFactoryInterface.php: -------------------------------------------------------------------------------- 1 | region; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Model/Request/Common/PaginationParameters.php: -------------------------------------------------------------------------------- 1 | pageSize = (int) $pageSize; 26 | $this->currentPage = (int) $currentPage; 27 | } 28 | 29 | public function getPageSize(): int 30 | { 31 | return $this->pageSize; 32 | } 33 | 34 | public function getCurrentPage(): int 35 | { 36 | return $this->currentPage; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/Model/Request/Order/OrderAddress.php: -------------------------------------------------------------------------------- 1 | addresses; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Model/Request/User/NewCustomer.php: -------------------------------------------------------------------------------- 1 | region; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Processor/RequestProcessorInterface.php: -------------------------------------------------------------------------------- 1 | token = $token; 28 | $this->cartId = $cartId; 29 | } 30 | 31 | public function cartId(): string 32 | { 33 | return $this->cartId; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Query/Cart/PullCart.php: -------------------------------------------------------------------------------- 1 | token = $token; 28 | $this->cartId = $cartId; 29 | } 30 | 31 | public function cartId() 32 | { 33 | return $this->cartId; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Query/Cart/SyncTotals.php: -------------------------------------------------------------------------------- 1 | token = $token; 28 | $this->cartId = $cartId; 29 | } 30 | 31 | public function cartId(): string 32 | { 33 | return $this->cartId; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Query/QueryInterface.php: -------------------------------------------------------------------------------- 1 | sku = $sku; 25 | } 26 | 27 | public function sku(): string 28 | { 29 | return $this->sku; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Query/Stock/ListStocks.php: -------------------------------------------------------------------------------- 1 | skus = $skus; 25 | } 26 | 27 | public function SKUsToArray(): array 28 | { 29 | return \explode(',', $this->skus); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Request/Cart/ApplyCouponRequest.php: -------------------------------------------------------------------------------- 1 | token, $this->cartId, $this->coupon); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/Request/Cart/CreateCartRequest.php: -------------------------------------------------------------------------------- 1 | cartItem, $this->cartId); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Request/Cart/DeleteCouponRequest.php: -------------------------------------------------------------------------------- 1 | token, $this->cartId); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Request/Cart/GetAppliedCouponRequest.php: -------------------------------------------------------------------------------- 1 | token, $this->cartId); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Request/Cart/GetPaymentMethodsRequest.php: -------------------------------------------------------------------------------- 1 | token, $this->cartId); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Request/Cart/SyncTotalsRequest.php: -------------------------------------------------------------------------------- 1 | token, $this->cartId); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Request/Cart/UpdateCartRequest.php: -------------------------------------------------------------------------------- 1 | token, $this->cartId, $this->cartItem); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Request/RequestCommandInterface.php: -------------------------------------------------------------------------------- 1 | sku); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Request/Stock/ListStocksRequest.php: -------------------------------------------------------------------------------- 1 | skus); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Request/User/ChangePasswordRequest.php: -------------------------------------------------------------------------------- 1 | newPassword); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Request/User/CreateUserRequest.php: -------------------------------------------------------------------------------- 1 | customer, $this->password); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Request/User/ResetPasswordRequest.php: -------------------------------------------------------------------------------- 1 | email); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Request/User/UpdateUserRequest.php: -------------------------------------------------------------------------------- 1 | customer); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Resources/config/config.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: "indexes/vue_storefront_catalog.yaml" } 3 | - { resource: "doctrine.yaml" } 4 | 5 | parameters: 6 | sylius.model.order_item.class: 'BitBag\SyliusVueStorefrontPlugin\Sylius\Entity\Order\OrderItem' 7 | 8 | sylius_order: 9 | resources: 10 | order_item: 11 | classes: 12 | model: BitBag\SyliusVueStorefrontPlugin\Sylius\Entity\Order\OrderItem 13 | 14 | sylius_mailer: 15 | emails: 16 | api_reset_password_token: 17 | subject: sylius.emails.user.reset_password_token.subject 18 | template: "@SyliusVueStorefrontPlugin/Email/passwordReset.html.twig" 19 | 20 | framework: 21 | messenger: 22 | buses: 23 | bitbag_vue_storefront_plugin.command_bus: 24 | middleware: 25 | - doctrine_transaction 26 | -------------------------------------------------------------------------------- /src/Resources/config/doctrine.yaml: -------------------------------------------------------------------------------- 1 | parameters: 2 | # Adds a fallback DATABASE_URL if the env var is not set. 3 | # This allows you to run cache:warmup even if your 4 | # environment variables are not available yet. 5 | # You should not need to change this value. 6 | env(DATABASE_URL): '' 7 | 8 | doctrine: 9 | dbal: 10 | driver: 'pdo_mysql' 11 | server_version: '5.7' 12 | charset: UTF8 13 | 14 | url: '%env(resolve:DATABASE_URL)%' 15 | orm: 16 | auto_generate_proxy_classes: '%kernel.debug%' 17 | auto_mapping: true 18 | mappings: 19 | SyliusVueStorefrontPlugin: 20 | is_bundle: true 21 | type: xml 22 | dir: 'Resources/config/doctrine' 23 | prefix: 'BitBag\SyliusVueStorefrontPlugin\Sylius\Entity' 24 | alias: BitBag 25 | -------------------------------------------------------------------------------- /src/Resources/config/doctrine/Order.OrderItem.orm.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Resources/config/indexes/attribute.yaml: -------------------------------------------------------------------------------- 1 | fos_elastica: 2 | indexes: 3 | bitbag_vue_storefront_catalog_attribute: 4 | index_name: "%env(ELASTICSEARCH_INDEX)%_attribute" 5 | types: 6 | attribute: 7 | properties: 8 | enabled: ~ 9 | id: { type: long } 10 | attribute_id: { type: long } 11 | options: 12 | type: nested 13 | properties: 14 | value: { type: text } 15 | persistence: 16 | driver: orm 17 | model: "%sylius.model.product_option.class%" 18 | identifier: documentId 19 | model_to_elastica_transformer: 20 | service: bitbag_sylius_vue_storefront_plugin.transformer.attribute 21 | provider: ~ 22 | listener: 23 | logger: true 24 | defer: true 25 | -------------------------------------------------------------------------------- /src/Resources/config/indexes/category.yaml: -------------------------------------------------------------------------------- 1 | fos_elastica: 2 | indexes: 3 | bitbag_vue_storefront_catalog_category: 4 | index_name: "%env(ELASTICSEARCH_INDEX)%_category" 5 | types: 6 | category: 7 | properties: 8 | enabled: ~ 9 | updated_at: { type: date, format: yyyy-MM-dd } 10 | created_at: { type: date, format: yyyy-MM-dd } 11 | persistence: 12 | driver: orm 13 | model: "%sylius.model.taxon.class%" 14 | identifier: documentId 15 | model_to_elastica_transformer: 16 | service: bitbag_sylius_vue_storefront_plugin.transformer.category 17 | provider: ~ 18 | listener: 19 | logger: true 20 | defer: true 21 | -------------------------------------------------------------------------------- /src/Resources/config/indexes/taxrule.yaml: -------------------------------------------------------------------------------- 1 | #fos_elastica: 2 | # indexes: 3 | # bitbag_vue_storefront_catalog_taxrule: 4 | # index_name: "%env(ELASTICSEARCH_INDEX)%_taxrule" 5 | # types: 6 | # taxrule: 7 | # properties: 8 | # enabled: ~ 9 | # id: { type: long } 10 | # rates: 11 | # type: nested 12 | # properties: 13 | # rate: { type: float } 14 | # persistence: 15 | # driver: orm 16 | # model: "%sylius.model.tax_category.class%" 17 | # identifier: documentId 18 | # model_to_elastica_transformer: 19 | # service: bitbag_sylius_vue_storefront_plugin.transformer.tax_rule 20 | # provider: ~ 21 | # listener: 22 | # logger: true 23 | # defer: true 24 | -------------------------------------------------------------------------------- /src/Resources/config/indexes/vue_storefront_catalog.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: "attribute.yaml" } 3 | - { resource: "category.yaml" } 4 | - { resource: "product.yaml" } 5 | 6 | fos_elastica: 7 | clients: 8 | default: { host: '%env(ELASTICSEARCH_HOST)%', port: '%env(ELASTICSEARCH_PORT)%' } 9 | -------------------------------------------------------------------------------- /src/Resources/config/routes/api.yaml: -------------------------------------------------------------------------------- 1 | user_module: 2 | resource: api/user.yaml 3 | prefix: /user 4 | 5 | order_module: 6 | resource: api/order.yaml 7 | prefix: /order 8 | 9 | stock_module: 10 | resource: api/stock.yaml 11 | prefix: /stock 12 | 13 | cart_module: 14 | resource: api/cart.yaml 15 | prefix: /cart 16 | 17 | guest_cart_module: 18 | resource: api/cart.yaml 19 | prefix: /guest-cart 20 | name_prefix: guest_ 21 | 22 | image_module: 23 | resource: api/image.yaml 24 | prefix: /image 25 | 26 | catalog_module: 27 | resource: api/catalog.yaml 28 | prefix: /catalog 29 | -------------------------------------------------------------------------------- /src/Resources/config/routes/api/catalog.yaml: -------------------------------------------------------------------------------- 1 | catalog_get_index: 2 | path: /{index}/_search 3 | methods: GET 4 | controller: bitbag_sylius_vue_storefront_plugin.api.catalog.get_catalog 5 | requirements: 6 | index: '%elasticsearch_index%' 7 | 8 | catalog_get_type: 9 | path: /{index}/{type}/_search 10 | methods: GET 11 | controller: bitbag_sylius_vue_storefront_plugin.api.catalog.get_catalog 12 | requirements: 13 | index: '%elasticsearch_index%' 14 | type: product|category|attribute 15 | -------------------------------------------------------------------------------- /src/Resources/config/routes/api/image.yaml: -------------------------------------------------------------------------------- 1 | image_process: 2 | methods: GET 3 | path: /{width}/{height}/{operation}/{relativeUrl} 4 | controller: bitbag_sylius_vue_storefront_plugin.api.image.process_image 5 | requirements: 6 | width: \d+ 7 | height: \d+ 8 | operation: crop|fit|resize|identify 9 | relativeUrl: .+ 10 | -------------------------------------------------------------------------------- /src/Resources/config/routes/api/order.yaml: -------------------------------------------------------------------------------- 1 | order_create_order: 2 | path: /create 3 | methods: POST 4 | controller: bitbag_sylius_vue_storefront_plugin.api.order.create_order 5 | -------------------------------------------------------------------------------- /src/Resources/config/routes/api/stock.yaml: -------------------------------------------------------------------------------- 1 | stock_check: 2 | path: /check 3 | methods: GET 4 | controller: bitbag_sylius_vue_storefront_plugin.api.stock.check_stock 5 | 6 | stock_list_check: 7 | path: /list 8 | methods: GET 9 | controller: bitbag_sylius_vue_storefront_plugin.api.stock.check_product_list 10 | -------------------------------------------------------------------------------- /src/Resources/config/routing.yaml: -------------------------------------------------------------------------------- 1 | controllers: 2 | resource: routes/api.yaml 3 | prefix: /vsbridge 4 | name_prefix: bitbag_vue_storefront_plugin_ 5 | -------------------------------------------------------------------------------- /src/Resources/config/services.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Resources/config/services/api/image.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | %kernel.project_dir% 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Resources/config/services/elasticsearch/checker.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | %env(APP_CHANNEL_CODE)% 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Resources/config/services/elasticsearch/refresher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Resources/config/services/event_listeners.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/Resources/config/services/generators.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Resources/config/services/request_processors/order.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | %bitbag.vue_storefront.request.create_order.class% 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Resources/config/services/request_processors/stock.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | %bitbag.vue_storefront.request.check_stock.class% 11 | 12 | 13 | 15 | %bitbag.vue_storefront.request.list_stocks.class% 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/config/services/sylius/factory.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Resources/config/services/sylius/handler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/Resources/config/services/sylius/matcher/cart.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Resources/config/services/sylius/repository.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/config/services/sylius/transformer/tax_category_transformer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/Resources/config/services/sylius/transformer/taxon_transformer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Resources/config/services/sylius/validators/common.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/config/validation/requests/cart/GetPaymentMethods.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/config/validation/requests/cart/PullCartRequest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Resources/config/validation/requests/cart/SyncTotalsRequest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Resources/config/validation/requests/order/CreateOrderRequest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/config/validation/requests/stock/CheckStockRequest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Resources/config/validation/requests/stock/ListStocksRequest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Resources/config/validation/requests/user/CreateUserRequest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Resources/config/validation/requests/user/ResetPasswordRquest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Resources/config/validation/requests/user/UpdateUserRequest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Resources/views/Email/passwordReset.html.twig: -------------------------------------------------------------------------------- 1 | {% block subject %} 2 | Password reset 3 | {% endblock %} 4 | 5 | {% block body %} 6 | {% autoescape %} 7 |

TODO

8 | {% endautoescape %} 9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /src/Sylius/Entity/Order/OrderItem.php: -------------------------------------------------------------------------------- 1 | uuid; 25 | } 26 | 27 | public function setUuid(?string $uuid): void 28 | { 29 | $this->uuid = $uuid; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Sylius/Entity/Order/OrderItemInterface.php: -------------------------------------------------------------------------------- 1 | getDefaultAddress(); 23 | 24 | if (null === $defaultAddress) { 25 | $customer->setDefaultAddress($address); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Sylius/Modifier/DefaultAddressModifierInterface.php: -------------------------------------------------------------------------------- 1 | getProduct()->getId(), 24 | $productVariant->getId(), 25 | $productVariant->getOnHand() - $productVariant->getOnHold(), 26 | ($productVariant->getOnHand() - $productVariant->getOnHold()) > 0 27 | ); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Sylius/Transformer/SyliusProduct/InventoryToStockTransformerInterface.php: -------------------------------------------------------------------------------- 1 | getValue(), 24 | $syliusProductOptionValue->getId() 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Sylius/Transformer/SyliusProductOption/ProductOptionsValuesTransformerInterface.php: -------------------------------------------------------------------------------- 1 | country_id === null) && ($request->countryId === null)) { 23 | $this->context->addViolation($constraint->message); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Sylius/Validator/Constraints/CartExists.php: -------------------------------------------------------------------------------- 1 | symfony/framework-bundle ### 12 | /.env.*.local 13 | /.env.local 14 | /.env.local.php 15 | /public/bundles 16 | /var/ 17 | /vendor/ 18 | ###< symfony/framework-bundle ### 19 | 20 | ###> symfony/web-server-bundle ### 21 | /.web-server-pid 22 | ###< symfony/web-server-bundle ### 23 | -------------------------------------------------------------------------------- /tests/Application/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sylius/plugin-skeleton-test-application", 3 | "description": "Sylius application for plugin testing purposes (composer.json needed for project dir resolving)", 4 | "license": "MIT" 5 | } 6 | -------------------------------------------------------------------------------- /tests/Application/config/bootstrap.php: -------------------------------------------------------------------------------- 1 | =1.2) 11 | if (is_array($env = @include dirname(__DIR__) . '/.env.local.php')) { 12 | $_SERVER += $env; 13 | $_ENV += $env; 14 | } elseif (!class_exists(Dotenv::class)) { 15 | throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.'); 16 | } else { 17 | // load all the .env files 18 | (new Dotenv())->loadEnv(dirname(__DIR__) . '/.env'); 19 | } 20 | 21 | $_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; 22 | $_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; 23 | $_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; 24 | -------------------------------------------------------------------------------- /tests/Application/config/jwt/public.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA76xem9GseQlHocGKsA32 3 | NF2aCvk44VYgL84oZiV3zdhUxuF6HunsMNYxVPOT2LaX/ZJ+HD/GZ7E2x8PrkiP9 4 | yNJYvtnvoPror7xN+rIO9wiy+wPRcyiaNP32vO0p6aAhFd/I8RpBp8KJsJO76ui+ 5 | tL9rG2/nVZT4noRhkS07X/LaFxveqLsqR/XP3bulaqQwodLgxKqQItntlqDFbo9L 6 | Z/Uj30mzVbUc1+kIogfYU3tQcdNeN7Pj147p+/cmTeb46LaNHh1zw4m0S0kxbxEz 7 | Rb8jw+SSebv1d3BvrUWhTsyC5TmbtITYVGayhM803JXI4xh4pm2SMCuwpnduccBO 8 | otuQ5OSvdUBuwwewc3QjGbcx5TEtyA3ghICznDb15UPGLMhrTSfXlttb/rYOdHW1 9 | CJpcipsvT0dBkro97Tw205nvEPiTNHwE5szQoTaWg+M/9OxfAN+UpLH4WqiL0bq4 10 | VX47aMqRpTD/f86k3M9Ir3Nqleq/eX0irFzt4MLSsCnJL8+m7GwEB7GWoy63iOBX 11 | b1DnAl0m7xd1BeggOAwA0nYRYXnhNO95Mzqc6b5ch3Ec5IcES1Sk4xrxv7eK1See 12 | ToB27kZK+x3gKyK8BwXmDBnEWWh7gHUhRbmHDnu44nDiXjFm4Q9iyHQyFz/bqgYK 13 | JN8x8mNzTBNXw8T93KCZqGUCAwEAAQ== 14 | -----END PUBLIC KEY----- 15 | -------------------------------------------------------------------------------- /tests/Application/config/packages/_sylius.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: "@SyliusCoreBundle/Resources/config/app/config.yml" } 3 | 4 | - { resource: "@SyliusAdminBundle/Resources/config/app/config.yml" } 5 | - { resource: "@SyliusAdminApiBundle/Resources/config/app/config.yml" } 6 | 7 | - { resource: "@SyliusVueStorefrontPlugin/Resources/config/config.yaml" } 8 | - { resource: "@SyliusApiBundle/Resources/config/app/config.yaml" } 9 | 10 | parameters: 11 | sylius_core.public_dir: '%kernel.project_dir%/public' 12 | 13 | sylius_fixtures: 14 | suites: 15 | default: 16 | fixtures: 17 | locale: 18 | options: 19 | locales: ['fr_FR'] 20 | order: 21 | options: 22 | amount: 10 23 | customer: 'shop@example.com' 24 | channel: 'FASHION_WEB' 25 | -------------------------------------------------------------------------------- /tests/Application/config/packages/bitbag.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: "../../../../src/Resources/config/indexes/vue_storefront_catalog.yaml" } 3 | - { resource: "command_bus.yaml" } 4 | 5 | fos_elastica: 6 | clients: 7 | default: 8 | host: "localhost" 9 | port: "9200" 10 | -------------------------------------------------------------------------------- /tests/Application/config/packages/command_bus.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | messenger: 3 | buses: 4 | bitbag_vue_storefront_plugin.command_bus: 5 | middleware: 6 | - doctrine_transaction 7 | -------------------------------------------------------------------------------- /tests/Application/config/packages/dev/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | profiler: { only_exceptions: false } 3 | -------------------------------------------------------------------------------- /tests/Application/config/packages/dev/jms_serializer.yaml: -------------------------------------------------------------------------------- 1 | jms_serializer: 2 | visitors: 3 | json: 4 | options: 5 | - JSON_PRETTY_PRINT 6 | - JSON_UNESCAPED_SLASHES 7 | - JSON_PRESERVE_ZERO_FRACTION 8 | -------------------------------------------------------------------------------- /tests/Application/config/packages/dev/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | handlers: 3 | main: 4 | type: stream 5 | path: "%kernel.logs_dir%/%kernel.environment%.log" 6 | level: debug 7 | firephp: 8 | type: firephp 9 | level: info 10 | -------------------------------------------------------------------------------- /tests/Application/config/packages/dev/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: true 4 | -------------------------------------------------------------------------------- /tests/Application/config/packages/dev/swiftmailer.yaml: -------------------------------------------------------------------------------- 1 | swiftmailer: 2 | disable_delivery: true 3 | -------------------------------------------------------------------------------- /tests/Application/config/packages/dev/web_profiler.yaml: -------------------------------------------------------------------------------- 1 | web_profiler: 2 | toolbar: true 3 | intercept_redirects: false 4 | -------------------------------------------------------------------------------- /tests/Application/config/packages/doctrine.yaml: -------------------------------------------------------------------------------- 1 | parameters: 2 | # Adds a fallback DATABASE_URL if the env var is not set. 3 | # This allows you to run cache:warmup even if your 4 | # environment variables are not available yet. 5 | # You should not need to change this value. 6 | env(DATABASE_URL): '' 7 | 8 | doctrine: 9 | dbal: 10 | driver: 'pdo_mysql' 11 | server_version: '5.7' 12 | charset: UTF8 13 | url: '%env(resolve:DATABASE_URL)%' 14 | -------------------------------------------------------------------------------- /tests/Application/config/packages/doctrine_migrations.yaml: -------------------------------------------------------------------------------- 1 | doctrine_migrations: 2 | storage: 3 | table_storage: 4 | table_name: sylius_migrations 5 | migrations_paths: 6 | 'DoctrineMigrations': 'src/Migrations' 7 | -------------------------------------------------------------------------------- /tests/Application/config/packages/fos_rest.yaml: -------------------------------------------------------------------------------- 1 | fos_rest: 2 | exception: true 3 | view: 4 | formats: 5 | json: true 6 | xml: true 7 | empty_content: 204 8 | format_listener: 9 | rules: 10 | - { path: '^/api/.*', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: true } 11 | - { path: '^/vsbridge/.*', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: true } 12 | - { path: '^/', stop: true } 13 | -------------------------------------------------------------------------------- /tests/Application/config/packages/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | secret: '%env(APP_SECRET)%' 3 | form: true 4 | csrf_protection: true 5 | templating: { engines: ["twig"] } 6 | session: 7 | handler_id: ~ 8 | -------------------------------------------------------------------------------- /tests/Application/config/packages/gesdinet_jwt_refresh_token.yaml: -------------------------------------------------------------------------------- 1 | gesdinet_jwt_refresh_token: 2 | firewall: vs_bridge 3 | token_parameter_name: refreshToken 4 | user_provider: sylius_shop_user_provider 5 | -------------------------------------------------------------------------------- /tests/Application/config/packages/jms_serializer.yaml: -------------------------------------------------------------------------------- 1 | jms_serializer: 2 | visitors: 3 | xml: 4 | format_output: '%kernel.debug%' 5 | -------------------------------------------------------------------------------- /tests/Application/config/packages/lexik_jwt_authentication.yaml: -------------------------------------------------------------------------------- 1 | lexik_jwt_authentication: 2 | secret_key: '%env(resolve:JWT_SECRET_KEY)%' 3 | public_key: '%env(resolve:JWT_PUBLIC_KEY)%' 4 | pass_phrase: '%env(JWT_PASSPHRASE)%' 5 | token_ttl: 3600 6 | 7 | token_extractors: 8 | query_parameter: 9 | enabled: true 10 | name: token 11 | -------------------------------------------------------------------------------- /tests/Application/config/packages/liip_imagine.yaml: -------------------------------------------------------------------------------- 1 | liip_imagine: 2 | resolvers: 3 | default: 4 | web_path: 5 | web_root: "%kernel.project_dir%/public" 6 | cache_prefix: "media/cache" 7 | -------------------------------------------------------------------------------- /tests/Application/config/packages/prod/doctrine.yaml: -------------------------------------------------------------------------------- 1 | doctrine: 2 | orm: 3 | metadata_cache_driver: 4 | type: service 5 | id: doctrine.system_cache_provider 6 | query_cache_driver: 7 | type: service 8 | id: doctrine.system_cache_provider 9 | result_cache_driver: 10 | type: service 11 | id: doctrine.result_cache_provider 12 | 13 | services: 14 | doctrine.result_cache_provider: 15 | class: Symfony\Component\Cache\DoctrineProvider 16 | public: false 17 | arguments: 18 | - '@doctrine.result_cache_pool' 19 | doctrine.system_cache_provider: 20 | class: Symfony\Component\Cache\DoctrineProvider 21 | public: false 22 | arguments: 23 | - '@doctrine.system_cache_pool' 24 | 25 | framework: 26 | cache: 27 | pools: 28 | doctrine.result_cache_pool: 29 | adapter: cache.app 30 | doctrine.system_cache_pool: 31 | adapter: cache.system 32 | -------------------------------------------------------------------------------- /tests/Application/config/packages/prod/jms_serializer.yaml: -------------------------------------------------------------------------------- 1 | jms_serializer: 2 | visitors: 3 | json: 4 | options: 5 | - JSON_UNESCAPED_SLASHES 6 | - JSON_PRESERVE_ZERO_FRACTION 7 | -------------------------------------------------------------------------------- /tests/Application/config/packages/prod/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | handlers: 3 | main: 4 | type: fingers_crossed 5 | action_level: error 6 | handler: nested 7 | nested: 8 | type: stream 9 | path: "%kernel.logs_dir%/%kernel.environment%.log" 10 | level: debug 11 | -------------------------------------------------------------------------------- /tests/Application/config/packages/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: ~ 4 | -------------------------------------------------------------------------------- /tests/Application/config/packages/security_checker.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | SensioLabs\Security\SecurityChecker: 3 | public: false 4 | 5 | SensioLabs\Security\Command\SecurityCheckerCommand: 6 | arguments: ['@SensioLabs\Security\SecurityChecker'] 7 | public: false 8 | tags: 9 | - { name: console.command, command: 'security:check' } 10 | -------------------------------------------------------------------------------- /tests/Application/config/packages/staging/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | handlers: 3 | main: 4 | type: fingers_crossed 5 | action_level: error 6 | handler: nested 7 | nested: 8 | type: stream 9 | path: "%kernel.logs_dir%/%kernel.environment%.log" 10 | level: debug 11 | -------------------------------------------------------------------------------- /tests/Application/config/packages/staging/swiftmailer.yaml: -------------------------------------------------------------------------------- 1 | swiftmailer: 2 | disable_delivery: true 3 | -------------------------------------------------------------------------------- /tests/Application/config/packages/stof_doctrine_extensions.yaml: -------------------------------------------------------------------------------- 1 | # Read the documentation: https://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html 2 | # See the official DoctrineExtensions documentation for more details: https://github.com/Atlantic18/DoctrineExtensions/tree/master/doc/ 3 | stof_doctrine_extensions: 4 | default_locale: '%locale%' 5 | -------------------------------------------------------------------------------- /tests/Application/config/packages/swiftmailer.yaml: -------------------------------------------------------------------------------- 1 | swiftmailer: 2 | url: '%env(MAILER_URL)%' 3 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | test: ~ 3 | session: 4 | storage_id: session.storage.mock_file 5 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | handlers: 3 | main: 4 | type: stream 5 | path: "%kernel.logs_dir%/%kernel.environment%.log" 6 | level: error 7 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test/swiftmailer.yaml: -------------------------------------------------------------------------------- 1 | swiftmailer: 2 | disable_delivery: true 3 | logging: true 4 | spool: 5 | type: file 6 | path: "%kernel.cache_dir%/spool" 7 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test/sylius_theme.yaml: -------------------------------------------------------------------------------- 1 | sylius_theme: 2 | sources: 3 | test: ~ 4 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test/web_profiler.yaml: -------------------------------------------------------------------------------- 1 | web_profiler: 2 | toolbar: false 3 | intercept_redirects: false 4 | 5 | framework: 6 | profiler: { collect: false } 7 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test_cached/doctrine.yaml: -------------------------------------------------------------------------------- 1 | doctrine: 2 | orm: 3 | entity_managers: 4 | default: 5 | result_cache_driver: 6 | type: memcached 7 | host: localhost 8 | port: 11211 9 | query_cache_driver: 10 | type: memcached 11 | host: localhost 12 | port: 11211 13 | metadata_cache_driver: 14 | type: memcached 15 | host: localhost 16 | port: 11211 17 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test_cached/fos_rest.yaml: -------------------------------------------------------------------------------- 1 | fos_rest: 2 | exception: 3 | debug: true 4 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test_cached/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | test: ~ 3 | session: 4 | storage_id: session.storage.mock_file 5 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test_cached/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | handlers: 3 | main: 4 | type: stream 5 | path: "%kernel.logs_dir%/%kernel.environment%.log" 6 | level: error 7 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test_cached/swiftmailer.yaml: -------------------------------------------------------------------------------- 1 | swiftmailer: 2 | disable_delivery: true 3 | logging: true 4 | spool: 5 | type: file 6 | path: "%kernel.cache_dir%/spool" 7 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test_cached/sylius_channel.yaml: -------------------------------------------------------------------------------- 1 | sylius_channel: 2 | debug: true 3 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test_cached/sylius_theme.yaml: -------------------------------------------------------------------------------- 1 | sylius_theme: 2 | sources: 3 | test: ~ 4 | -------------------------------------------------------------------------------- /tests/Application/config/packages/test_cached/twig.yaml: -------------------------------------------------------------------------------- 1 | twig: 2 | strict_variables: true 3 | -------------------------------------------------------------------------------- /tests/Application/config/packages/translation.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | default_locale: '%locale%' 3 | translator: 4 | paths: 5 | - '%kernel.project_dir%/translations' 6 | fallbacks: 7 | - '%locale%' 8 | - 'en' 9 | -------------------------------------------------------------------------------- /tests/Application/config/packages/twig.yaml: -------------------------------------------------------------------------------- 1 | twig: 2 | paths: ['%kernel.project_dir%/templates'] 3 | debug: '%kernel.debug%' 4 | strict_variables: '%kernel.debug%' 5 | 6 | services: 7 | _defaults: 8 | public: false 9 | autowire: true 10 | autoconfigure: true 11 | 12 | Twig\Extra\Intl\IntlExtension: ~ 13 | -------------------------------------------------------------------------------- /tests/Application/config/packages/validator.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | validation: 3 | enable_annotations: true 4 | -------------------------------------------------------------------------------- /tests/Application/config/routes.yaml: -------------------------------------------------------------------------------- 1 | sylius_vue_storefront_plugin: 2 | resource: "@SyliusVueStorefrontPlugin/Resources/config/routing.yaml" 3 | -------------------------------------------------------------------------------- /tests/Application/config/routes/dev/twig.yaml: -------------------------------------------------------------------------------- 1 | _errors: 2 | resource: '@TwigBundle/Resources/config/routing/errors.xml' 3 | prefix: /_error 4 | -------------------------------------------------------------------------------- /tests/Application/config/routes/dev/web_profiler.yaml: -------------------------------------------------------------------------------- 1 | _wdt: 2 | resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" 3 | prefix: /_wdt 4 | 5 | _profiler: 6 | resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" 7 | prefix: /_profiler 8 | -------------------------------------------------------------------------------- /tests/Application/config/routes/liip_imagine.yaml: -------------------------------------------------------------------------------- 1 | _liip_imagine: 2 | resource: "@LiipImagineBundle/Resources/config/routing.yaml" 3 | -------------------------------------------------------------------------------- /tests/Application/config/routes/sylius_admin.yaml: -------------------------------------------------------------------------------- 1 | sylius_admin: 2 | resource: "@SyliusAdminBundle/Resources/config/routing.yml" 3 | prefix: /admin 4 | -------------------------------------------------------------------------------- /tests/Application/config/routes/sylius_admin_api.yaml: -------------------------------------------------------------------------------- 1 | sylius_admin_api: 2 | resource: "@SyliusAdminApiBundle/Resources/config/routing.yml" 3 | prefix: /api 4 | -------------------------------------------------------------------------------- /tests/Application/config/routes/sylius_api.yaml: -------------------------------------------------------------------------------- 1 | sylius_api: 2 | resource: "@SyliusApiBundle/Resources/config/routing.yml" 3 | prefix: "%sylius.security.new_api_route%" 4 | -------------------------------------------------------------------------------- /tests/Application/config/services.yaml: -------------------------------------------------------------------------------- 1 | # Put parameters here that don't need to change on each machine where the app is deployed 2 | # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration 3 | parameters: 4 | locale: en_US 5 | test.client.parameters: [] 6 | 7 | services: 8 | test.client.history: 9 | class: Symfony\Component\BrowserKit\History 10 | shared: false 11 | 12 | test.client.cookiejar: 13 | class: Symfony\Component\BrowserKit\CookieJar 14 | shared: false 15 | 16 | test.client: 17 | class: Symfony\Bundle\FrameworkBundle\KernelBrowser 18 | public: true 19 | arguments: 20 | - "@kernel" 21 | - "%test.client.parameters%" 22 | - "@test.client.history" 23 | - "@test.client.cookiejar" -------------------------------------------------------------------------------- /tests/Application/public/.htaccess: -------------------------------------------------------------------------------- 1 | DirectoryIndex app.php 2 | 3 | 4 | RewriteEngine On 5 | 6 | RewriteCond %{HTTP:Authorization} ^(.*) 7 | RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] 8 | 9 | RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ 10 | RewriteRule ^(.*) - [E=BASE:%1] 11 | 12 | RewriteCond %{ENV:REDIRECT_STATUS} ^$ 13 | RewriteRule ^index\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L] 14 | 15 | RewriteCond %{REQUEST_FILENAME} -f 16 | RewriteRule .? - [L] 17 | 18 | RewriteRule .? %{ENV:BASE}/index.php [L] 19 | 20 | 21 | 22 | 23 | RedirectMatch 302 ^/$ /index.php/ 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/Application/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitBagCommerce/SyliusVueStorefrontPlugin/851ba3612e39b1bf7739b6fe5b754847db71de3a/tests/Application/public/favicon.ico -------------------------------------------------------------------------------- /tests/Application/public/index.php: -------------------------------------------------------------------------------- 1 | handle($request); 28 | $response->send(); 29 | $kernel->terminate($request, $response); 30 | -------------------------------------------------------------------------------- /tests/Application/public/media/image/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitBagCommerce/SyliusVueStorefrontPlugin/851ba3612e39b1bf7739b6fe5b754847db71de3a/tests/Application/public/media/image/.gitignore -------------------------------------------------------------------------------- /tests/Application/public/robots.txt: -------------------------------------------------------------------------------- 1 | # www.robotstxt.org/ 2 | # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 3 | 4 | User-agent: * 5 | -------------------------------------------------------------------------------- /tests/Application/templates/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitBagCommerce/SyliusVueStorefrontPlugin/851ba3612e39b1bf7739b6fe5b754847db71de3a/tests/Application/templates/.gitignore -------------------------------------------------------------------------------- /tests/Application/translations/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitBagCommerce/SyliusVueStorefrontPlugin/851ba3612e39b1bf7739b6fe5b754847db71de3a/tests/Application/translations/.gitignore -------------------------------------------------------------------------------- /tests/DataFixtures/ORM/country.yaml: -------------------------------------------------------------------------------- 1 | Sylius\Component\Addressing\Model\Country: 2 | country_gb: 3 | code: GB 4 | 5 | Sylius\Component\Addressing\Model\Province: 6 | province_gb_scotland: 7 | name: Scotland 8 | code: GB-SCT 9 | country: '@country_gb' 10 | province_gb_wales: 11 | name: Wales 12 | code: GB-WLS 13 | country: '@country_gb' 14 | province_gb_northen_ireland: 15 | name: Northen Ireland 16 | code: GB-NIR 17 | country: '@country_gb' 18 | province_gb_england: 19 | name: England 20 | code: GB-ENG 21 | country: '@country_gb' 22 | -------------------------------------------------------------------------------- /tests/DataFixtures/ORM/mug_review.yaml: -------------------------------------------------------------------------------- 1 | Sylius\Component\Core\Model\ProductReview: 2 | reviews_{1..20}: 3 | title: "Nice mug" 4 | rating: "" 5 | author: "@customer_oliver" 6 | status: "accepted" 7 | comment: "" 8 | reviewSubject: "@mug" 9 | bad_reviews_{1..5}: 10 | title: "Nice mug" 11 | rating: "" 12 | author: "@hater" 13 | status: "accepted" 14 | comment: "" 15 | reviewSubject: "@mug" 16 | -------------------------------------------------------------------------------- /tests/DataFixtures/ORM/order.yaml: -------------------------------------------------------------------------------- 1 | Sylius\Component\Core\Model\Order: 2 | order_1: 3 | customer: "@customer_test" 4 | currency_code: "EUR" 5 | locale_code: "en_GB" 6 | channel: "@fashion_web" 7 | token_value: 12345 8 | promotion_coupon: "@something_coupon" 9 | -------------------------------------------------------------------------------- /tests/DataFixtures/ORM/order_completed.yaml: -------------------------------------------------------------------------------- 1 | Sylius\Component\Core\Model\Order: 2 | order_1: 3 | customer: "@customer_test" 4 | currency_code: "EUR" 5 | locale_code: "en_GB" 6 | channel: "@fashion_web" 7 | token_value: 12345 8 | promotion_coupon: "@something_coupon" 9 | state: "new" 10 | checkout_state: "completed" 11 | -------------------------------------------------------------------------------- /tests/DataFixtures/ORM/order_item.yaml: -------------------------------------------------------------------------------- 1 | BitBag\SyliusVueStorefrontPlugin\Sylius\Entity\Order\OrderItem: 2 | order_item_1: 3 | order: "@order_1" 4 | variant: "@jacket_variant" 5 | variant_name: "RANDOM_JACKET_CODE" 6 | product_name: "RANDOM_JACKET_CODE" 7 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/Common/blank_address.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "This value should not be blank." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/Common/invalid_cart.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "The cart does not exist." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/Common/invalid_cart_and_blank_address.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "The cart does not exist. This value should not be blank." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/Common/invalid_token.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 401, 3 | "message": "Invalid JWT Token" 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/apply_coupon_blank_coupon.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "Provided coupon code is not valid. Please provide coupon code. Coupon code can not be blank." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/apply_coupon_invalid_coupon.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "Provided coupon code is not valid." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/apply_coupon_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": true 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/create_cart_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": "@string@" 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/delete_cart_item_blank_item.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "The order item does not exist." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/delete_cart_item_non_existent_item.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "The order item does not exist." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/delete_cart_item_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": true 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/delete_coupon_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": true 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/get_applied_coupon_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": "@string@" 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/get_payment_methods_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": [ 4 | { 5 | "code": "@string@", 6 | "title": "@string@" 7 | }, 8 | { 9 | "code": "@string@", 10 | "title": "@string@" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/pull_cart_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": "@array@" 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/set_shipping_information_non_existent_method.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 500, 3 | "result": "@string@" 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/update_cart_non_existent_item.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 500, 3 | "result": "Product variant has not been found." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Cart/update_cart_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": { 4 | "item_id": "@integer@", 5 | "price": "@integer@", 6 | "qty": "@integer@", 7 | "sku": "RANDOM_JACKET_CODE", 8 | "quote_id": "@string@", 9 | "product_type": "@string@" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Stock/check_stock_invalid_product_variant.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Stock/check_stock_out_of_stock.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": { 4 | "product_id": "@integer@", 5 | "item_id": "@integer@", 6 | "qty": "@integer@", 7 | "is_in_stock": false 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/Stock/check_stock_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": { 4 | "product_id": "@integer@", 5 | "item_id": "@integer@", 6 | "qty": "@integer@", 7 | "is_in_stock": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/Common/invalid_token.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 401, 3 | "message": "Invalid JWT Token" 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/change_password_blank_new_password.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "Please enter new password." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/change_password_invalid_current_password.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "Please enter valid password." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/change_password_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": "OK" 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/create_user_account_already_exists.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "This email is already in use." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/create_user_blank_password.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "Please enter password." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/create_user_invalid_customer.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "Please enter your email. Please enter first name. Please enter last name." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/create_user_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": { 4 | "id": "@integer@", 5 | "group_id": "@integer@", 6 | "default_shipping": "@string@", 7 | "created_at": "@string@", 8 | "updated_at": "@string@", 9 | "created_in": "@string@", 10 | "email": "nice@email.com", 11 | "firstname": "John", 12 | "lastname": "Doe", 13 | "store_id": "@integer@", 14 | "website_id": "@integer@", 15 | "addresses": "@array@", 16 | "disable_auto_group_change": "@integer@" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/get_user_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code":200, 3 | "result": 4 | { 5 | "id": "@integer@", 6 | "group_id": "@integer@", 7 | "default_shipping": "@string@", 8 | "created_at": "@string@", 9 | "updated_at": "@string@", 10 | "created_in": "@string@", 11 | "email": "@string@", 12 | "firstname": "@string@", 13 | "lastname": "@string@", 14 | "store_id": "@integer@", 15 | "website_id": "@integer@", 16 | "addresses": "@array@", 17 | "disable_auto_group_change": "@integer@" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/reset_password_invalid_user.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 500, 3 | "result": "@string@" 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/reset_password_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": "OK" 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/update_user_blank_addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "Addresses can not be blank." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/update_user_blank_information.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "Please provide customer data." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/update_user_invalid_user.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 400, 3 | "result": "Please enter first name." 4 | } 5 | -------------------------------------------------------------------------------- /tests/Responses/json/Controller/User/update_user_successful.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 200, 3 | "result": { 4 | "id": "@integer@", 5 | "group_id": "@integer@", 6 | "default_shipping": "@string@", 7 | "created_at": "@string@", 8 | "updated_at": "@string@", 9 | "created_in": "@string@", 10 | "email": "@string@", 11 | "firstname": "Johny", 12 | "lastname": "Doe", 13 | "store_id": "@integer@", 14 | "website_id": "@integer@", 15 | "addresses": "@array@", 16 | "disable_auto_group_change": "@integer@" 17 | } 18 | } 19 | --------------------------------------------------------------------------------