Skip to content

Commit 45fa882

Browse files
authored
refactor #89 Switch to Symfony Messenger (Zales0123)
This PR was merged into the 0.5-dev branch. Discussion ---------- As Prooph service bus [has been deprecated](https://www.sasaprolic.com/2018/08/the-future-of-prooph-components.html) it's a good time to switch to a new, shiny [Symfony Messenger Component](https://symfony.com/doc/current/components/messenger.html). Commits ------- 174b559 Change prooph command bus to command bus from Symfony Messenger 9336d54 Remove PayloadTrait from commands a8c6f85 User Symfony messenger for event bus 85cd51a Remove prooph/service-bus-symfony-bundle dependency ae8c682 Improve buses names 5e2a3f4 Fix build ca3612c Support only Symfony 4.1 version b5ce796 Catch more specific exceptions 93d0a99 Define default bus only for test environment
2 parents 751bc93 + 93d0a99 commit 45fa882

33 files changed

+301
-258
lines changed

.travis.yml

Lines changed: 77 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -2,81 +2,83 @@ language: php
22

33
dist: trusty
44

5-
sudo: false
6-
75
php:
86
- 7.2
97

10-
cache:
11-
yarn: true
12-
directories:
13-
- ~/.composer/cache/files
14-
- $SYLIUS_CACHE_DIR
15-
16-
env:
17-
global:
18-
- SYLIUS_CACHE_DIR=$HOME/.sylius-cache
19-
- SYLIUS_BUILD_DIR=etc/build
20-
matrix:
21-
- SYMFONY_VERSION="3.4.*"
22-
- SYMFONY_VERSION="4.1.*"
23-
24-
before_install:
25-
- phpenv config-rm xdebug.ini
26-
- echo "memory_limit=4096M" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
27-
- mkdir -p "${SYLIUS_CACHE_DIR}"
28-
29-
- cp tests/Application/.env.test.dist tests/Application/.env.test
30-
- set -a && source tests/Application/.env.test && set +a
31-
32-
install:
33-
- composer require "symfony/symfony:${SYMFONY_VERSION}" --no-interaction --no-update
34-
- composer install --no-interaction --prefer-dist
35-
- (cd tests/Application && yarn install)
36-
37-
before_script:
38-
- (cd tests/Application && bin/console doctrine:database:create --env=test -vvv)
39-
- (cd tests/Application && bin/console doctrine:schema:create --env=test -vvv)
40-
- (cd tests/Application && bin/console assets:install --env=test -vvv)
41-
- (cd tests/Application && bin/console cache:warmup --env=test -vvv)
42-
- (cd tests/Application && yarn build)
43-
44-
# Configure display
45-
- /sbin/start-stop-daemon --start --quiet --pidfile /tmp/xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1680x1050x16
46-
- export DISPLAY=:99
47-
48-
# Download and configure ChromeDriver
49-
- |
50-
if [ ! -f $SYLIUS_CACHE_DIR/chromedriver ] || [ "$($SYLIUS_CACHE_DIR/chromedriver --version | grep -c 2.34)" = "0" ]; then
51-
curl http://chromedriver.storage.googleapis.com/2.34/chromedriver_linux64.zip > chromedriver.zip
52-
unzip chromedriver.zip
53-
chmod +x chromedriver
54-
mv chromedriver $SYLIUS_CACHE_DIR
55-
fi
56-
57-
# Run ChromeDriver
58-
- $SYLIUS_CACHE_DIR/chromedriver > /dev/null 2>&1 &
59-
60-
# Download and configure Selenium
61-
- |
62-
if [ ! -f $SYLIUS_CACHE_DIR/selenium.jar ] || [ "$(java -jar $SYLIUS_CACHE_DIR/selenium.jar --version | grep -c 3.4.0)" = "0" ]; then
63-
curl http://selenium-release.storage.googleapis.com/3.4/selenium-server-standalone-3.4.0.jar > selenium.jar
64-
mv selenium.jar $SYLIUS_CACHE_DIR
65-
fi
66-
67-
# Run Selenium
68-
- java -Dwebdriver.chrome.driver=$SYLIUS_CACHE_DIR/chromedriver -jar $SYLIUS_CACHE_DIR/selenium.jar > /dev/null 2>&1 &
69-
70-
# Run webserver
71-
- (cd tests/Application && bin/console server:run 127.0.0.1:8080 --env=test --quiet > /dev/null 2>&1 &)
72-
73-
script:
74-
- composer validate --strict
75-
- composer analyse
76-
77-
- vendor/bin/phpunit
78-
- vendor/bin/phpspec run
79-
- vendor/bin/behat --strict -vvv --no-interaction --tags="~@todo" || vendor/bin/behat --strict -vvv --no-interaction --rerun --tags="~@todo"
80-
81-
after_failure:
82-
- vendor/lakion/mink-debug-extension/travis/tools/upload-textfiles "${SYLIUS_BUILD_DIR}/*.log"
8+
jobs:
9+
include:
10+
- &test
11+
stage: test
12+
name: "Symfony 4.1.* build"
13+
14+
sudo: false
15+
16+
env: SYLIUS_CACHE_DIR=$HOME/.sylius-cache SYLIUS_BUILD_DIR=etc/build
17+
18+
cache:
19+
yarn: true
20+
directories:
21+
- ~/.composer/cache/files
22+
- $SYLIUS_CACHE_DIR
23+
24+
services:
25+
- memcached
26+
- mysql
27+
28+
before_install:
29+
- phpenv config-rm xdebug.ini || true
30+
31+
- echo "memory_limit=4096M" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
32+
- echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
33+
34+
- cp tests/Application/.env.test.dist tests/Application/.env.test
35+
- set -a && source tests/Application/.env.test && set +a
36+
37+
install:
38+
- composer update --no-interaction --prefer-dist
39+
- (cd tests/Application && yarn install)
40+
41+
before_script:
42+
- (cd tests/Application && bin/console doctrine:database:create --env=test -vvv)
43+
- (cd tests/Application && bin/console doctrine:schema:create --env=test -vvv)
44+
- (cd tests/Application && bin/console assets:install --env=test -vvv)
45+
- (cd tests/Application && bin/console cache:warmup --env=test -vvv)
46+
- (cd tests/Application && yarn build)
47+
48+
# Configure display
49+
- /sbin/start-stop-daemon --start --quiet --pidfile /tmp/xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1680x1050x16
50+
- export DISPLAY=:99
51+
52+
# Download and configure ChromeDriver
53+
- |
54+
if [ ! -f $SYLIUS_CACHE_DIR/chromedriver ] || [ "$($SYLIUS_CACHE_DIR/chromedriver --version | grep -c 2.34)" = "0" ]; then
55+
curl http://chromedriver.storage.googleapis.com/2.34/chromedriver_linux64.zip > chromedriver.zip
56+
unzip chromedriver.zip
57+
chmod +x chromedriver
58+
mv chromedriver $SYLIUS_CACHE_DIR
59+
fi
60+
# Run ChromeDriver
61+
- $SYLIUS_CACHE_DIR/chromedriver > /dev/null 2>&1 &
62+
63+
# Download and configure Selenium
64+
- |
65+
if [ ! -f $SYLIUS_CACHE_DIR/selenium.jar ] || [ "$(java -jar $SYLIUS_CACHE_DIR/selenium.jar --version | grep -c 3.4.0)" = "0" ]; then
66+
curl http://selenium-release.storage.googleapis.com/3.4/selenium-server-standalone-3.4.0.jar > selenium.jar
67+
mv selenium.jar $SYLIUS_CACHE_DIR
68+
fi
69+
# Run Selenium
70+
- java -Dwebdriver.chrome.driver=$SYLIUS_CACHE_DIR/chromedriver -jar $SYLIUS_CACHE_DIR/selenium.jar > /dev/null 2>&1 &
71+
72+
# Run webserver
73+
- (cd tests/Application && bin/console server:run 127.0.0.1:8080 --env=test --quiet > /dev/null 2>&1 &)
74+
75+
script:
76+
- composer validate --strict
77+
- composer analyse
78+
79+
- vendor/bin/phpunit
80+
- vendor/bin/phpspec run
81+
- vendor/bin/behat --strict -vvv --no-interaction --tags="~@todo" || vendor/bin/behat --strict -vvv --no-interaction --rerun --tags="~@todo"
82+
83+
after_failure:
84+
- vendor/lakion/mink-debug-extension/travis/tools/upload-textfiles "${SYLIUS_BUILD_DIR}/*.log"s

composer.json

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
"php": "^7.2",
2323

2424
"sylius/sylius": "^1.3",
25-
"prooph/service-bus-symfony-bundle": "^0.7.0",
26-
"knplabs/knp-snappy-bundle": "^1.5"
25+
"knplabs/knp-snappy-bundle": "^1.5",
26+
"symfony/messenger": "^4.1"
2727
},
2828
"require-dev": {
2929
"behat/behat": "^3.4",
@@ -43,12 +43,13 @@
4343
"phpstan/phpstan-webmozart-assert": "^0.10.0",
4444
"phpunit/phpunit": "^6.5",
4545
"sylius-labs/coding-standard": "^2.0",
46-
"symfony/browser-kit": "^3.4|^4.1",
47-
"symfony/debug-bundle": "^3.4|^4.1",
48-
"symfony/dotenv": "^3.4|^4.1",
49-
"symfony/intl": "^3.4|^4.1",
50-
"symfony/web-profiler-bundle": "^3.4|^4.1",
51-
"symfony/web-server-bundle": "^3.4|^4.1"
46+
"symfony/browser-kit": "^4.1",
47+
"symfony/debug-bundle": "^4.1",
48+
"symfony/dotenv": "^4.1",
49+
"symfony/framework-bundle": "^4.1",
50+
"symfony/intl": "^4.1",
51+
"symfony/web-profiler-bundle": "^4.1",
52+
"symfony/web-server-bundle": "^4.1"
5253
},
5354
"minimum-stability": "dev",
5455
"prefer-stable": true,

docs/legacy_installation.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
```php
1212
$bundles = [
13-
new Prooph\Bundle\ServiceBus\ProophServiceBusBundle(),
1413
new \Knp\Bundle\SnappyBundle\KnpSnappyBundle(),
1514
new \Sylius\RefundPlugin\SyliusRefundPlugin(),
1615
];

spec/CommandHandler/GenerateCreditMemoHandlerSpec.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,35 @@
66

77
use Doctrine\Common\Persistence\ObjectManager;
88
use PhpSpec\ObjectBehavior;
9-
use Prooph\ServiceBus\EventBus;
109
use Prophecy\Argument;
1110
use Sylius\RefundPlugin\Command\GenerateCreditMemo;
1211
use Sylius\RefundPlugin\Entity\CreditMemoInterface;
1312
use Sylius\RefundPlugin\Event\CreditMemoGenerated;
1413
use Sylius\RefundPlugin\Generator\CreditMemoGeneratorInterface;
1514
use Sylius\RefundPlugin\Model\OrderItemUnitRefund;
15+
use Sylius\RefundPlugin\Model\ShipmentRefund;
16+
use Symfony\Component\Messenger\MessageBusInterface;
1617

1718
final class GenerateCreditMemoHandlerSpec extends ObjectBehavior
1819
{
1920
function let(
2021
CreditMemoGeneratorInterface $creditMemoGenerator,
2122
ObjectManager $creditMemoManager,
22-
EventBus $eventBus
23+
MessageBusInterface $eventBus
2324
) {
2425
$this->beConstructedWith($creditMemoGenerator, $creditMemoManager, $eventBus);
2526
}
2627

2728
function it_generates_credit_memo(
2829
CreditMemoGeneratorInterface $creditMemoGenerator,
2930
ObjectManager $creditMemoManager,
30-
EventBus $eventBus,
31+
MessageBusInterface $eventBus,
3132
CreditMemoInterface $creditMemo
3233
): void {
33-
$unitRefunds = [new OrderItemUnitRefund(1, 1000), new OrderItemUnitRefund(3, 2000), new OrderItemUnitRefund(5, 3000)];
34+
$orderItemUnitRefunds = [new OrderItemUnitRefund(1, 1000), new OrderItemUnitRefund(3, 2000), new OrderItemUnitRefund(5, 3000)];
35+
$shipmentRefunds = [new ShipmentRefund(3, 1000)];
3436

35-
$creditMemoGenerator->generate('000666', 1000, $unitRefunds, [3, 4], 'Comment')->willReturn($creditMemo);
37+
$creditMemoGenerator->generate('000666', 7000, $orderItemUnitRefunds, $shipmentRefunds, 'Comment')->willReturn($creditMemo);
3638

3739
$creditMemo->getNumber()->willReturn('2018/01/000001');
3840

@@ -46,6 +48,6 @@ function it_generates_credit_memo(
4648
;
4749
}))->shouldBeCalled();
4850

49-
$this(new GenerateCreditMemo('000666', 1000, $unitRefunds, [3, 4], 'Comment'));
51+
$this(new GenerateCreditMemo('000666', 7000, $orderItemUnitRefunds, $shipmentRefunds, 'Comment'));
5052
}
5153
}

spec/CommandHandler/RefundUnitsHandlerSpec.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
namespace spec\Sylius\RefundPlugin\CommandHandler;
66

77
use PhpSpec\ObjectBehavior;
8-
use Prooph\ServiceBus\EventBus;
98
use Prophecy\Argument;
109
use Sylius\Component\Core\Model\OrderInterface;
1110
use Sylius\Component\Core\Repository\OrderRepositoryInterface;
@@ -16,13 +15,14 @@
1615
use Sylius\RefundPlugin\Model\ShipmentRefund;
1716
use Sylius\RefundPlugin\Refunder\RefunderInterface;
1817
use Sylius\RefundPlugin\Validator\RefundUnitsCommandValidatorInterface;
18+
use Symfony\Component\Messenger\MessageBusInterface;
1919

2020
final class RefundUnitsHandlerSpec extends ObjectBehavior
2121
{
2222
function let(
2323
RefunderInterface $orderItemUnitsRefunder,
2424
RefunderInterface $orderShipmentsRefunder,
25-
EventBus $eventBus,
25+
MessageBusInterface $eventBus,
2626
OrderRepositoryInterface $orderRepository,
2727
RefundUnitsCommandValidatorInterface $refundUnitsCommandValidator
2828
): void {
@@ -38,7 +38,7 @@ function let(
3838
function it_handles_command_and_create_refund_for_each_refunded_unit(
3939
RefunderInterface $orderItemUnitsRefunder,
4040
RefunderInterface $orderShipmentsRefunder,
41-
EventBus $eventBus,
41+
MessageBusInterface $eventBus,
4242
OrderRepositoryInterface $orderRepository,
4343
RefundUnitsCommandValidatorInterface $refundUnitsCommandValidator,
4444
OrderInterface $order
@@ -71,7 +71,7 @@ function it_handles_command_and_create_refund_for_each_refunded_unit(
7171
function it_changes_order_state_to_fully_refunded_when_whole_order_total_is_refunded(
7272
RefunderInterface $orderItemUnitsRefunder,
7373
RefunderInterface $orderShipmentsRefunder,
74-
EventBus $eventBus,
74+
MessageBusInterface $eventBus,
7575
OrderRepositoryInterface $orderRepository,
7676
RefundUnitsCommandValidatorInterface $refundUnitsCommandValidator,
7777
OrderInterface $order

spec/Creator/RefundUnitsCommandCreatorSpec.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use PhpSpec\ObjectBehavior;
88
use Sylius\RefundPlugin\Command\RefundUnits;
9-
use Sylius\RefundPlugin\Creator\CommandCreatorInterface;
9+
use Sylius\RefundPlugin\Creator\RefundUnitsCommandCreatorInterface;
1010
use Sylius\RefundPlugin\Model\OrderItemUnitRefund;
1111
use Sylius\RefundPlugin\Model\RefundType;
1212
use Sylius\RefundPlugin\Model\ShipmentRefund;
@@ -22,9 +22,9 @@ function let(
2222
$this->beConstructedWith($remainingTotalProvider);
2323
}
2424

25-
function it_implements_command_creator_interface(): void
25+
function it_implements_refund_units_command_creator_interface(): void
2626
{
27-
$this->shouldImplement(CommandCreatorInterface::class);
27+
$this->shouldImplement(RefundUnitsCommandCreatorInterface::class);
2828
}
2929

3030
function it_creates_refund_units_command_from_request_with_full_prices(

spec/ProcessManager/CreditMemoProcessManagerSpec.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@
55
namespace spec\Sylius\RefundPlugin\ProcessManager;
66

77
use PhpSpec\ObjectBehavior;
8-
use Prooph\ServiceBus\CommandBus;
98
use Prophecy\Argument;
109
use Sylius\RefundPlugin\Command\GenerateCreditMemo;
1110
use Sylius\RefundPlugin\Event\UnitsRefunded;
1211
use Sylius\RefundPlugin\Model\OrderItemUnitRefund;
1312
use Sylius\RefundPlugin\Model\ShipmentRefund;
13+
use Symfony\Component\Messenger\MessageBusInterface;
1414

1515
final class CreditMemoProcessManagerSpec extends ObjectBehavior
1616
{
17-
function let(CommandBus $commandBus): void
17+
function let(MessageBusInterface $commandBus): void
1818
{
1919
$this->beConstructedWith($commandBus);
2020
}
2121

22-
function it_reacts_on_units_generated_event_and_dispatch_generate_credit_memo_command(CommandBus $commandBus)
22+
function it_reacts_on_units_generated_event_and_dispatch_generate_credit_memo_command(MessageBusInterface $commandBus)
2323
{
2424
$unitRefunds = [new OrderItemUnitRefund(1, 1000), new OrderItemUnitRefund(3, 2000), new OrderItemUnitRefund(5, 3000)];
2525
$shipmentRefunds = [new ShipmentRefund(1, 500), new ShipmentRefund(2, 1000)];

spec/ProcessManager/RefundPaymentProcessManagerSpec.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use Doctrine\ORM\EntityManagerInterface;
88
use PhpSpec\ObjectBehavior;
9-
use Prooph\ServiceBus\EventBus;
109
use Prophecy\Argument;
1110
use Sylius\RefundPlugin\Entity\RefundPaymentInterface;
1211
use Sylius\RefundPlugin\Event\RefundPaymentGenerated;
@@ -15,6 +14,7 @@
1514
use Sylius\RefundPlugin\Model\OrderItemUnitRefund;
1615
use Sylius\RefundPlugin\Provider\RelatedPaymentIdProviderInterface;
1716
use Sylius\RefundPlugin\StateResolver\OrderFullyRefundedStateResolverInterface;
17+
use Symfony\Component\Messenger\MessageBusInterface;
1818

1919
final class RefundPaymentProcessManagerSpec extends ObjectBehavior
2020
{
@@ -23,7 +23,7 @@ function let(
2323
RelatedPaymentIdProviderInterface $relatedPaymentIdProvider,
2424
RefundPaymentFactoryInterface $refundPaymentFactory,
2525
EntityManagerInterface $entityManager,
26-
EventBus $eventBus
26+
MessageBusInterface $eventBus
2727
): void {
2828
$this->beConstructedWith(
2929
$orderFullyRefundedStateResolver,
@@ -40,7 +40,7 @@ function it_reacts_on_units_refunded_event_and_creates_refund_payment(
4040
RefundPaymentFactoryInterface $refundPaymentFactory,
4141
EntityManagerInterface $entityManager,
4242
RefundPaymentInterface $refundPayment,
43-
EventBus $eventBus
43+
MessageBusInterface $eventBus
4444
): void {
4545
$refundPaymentFactory->createWithData(
4646
'000222',

spec/Refunder/OrderItemUnitsRefunderSpec.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55
namespace spec\Sylius\RefundPlugin\Refunder;
66

77
use PhpSpec\ObjectBehavior;
8-
use Prooph\ServiceBus\EventBus;
98
use Prophecy\Argument;
109
use Sylius\RefundPlugin\Creator\RefundCreatorInterface;
1110
use Sylius\RefundPlugin\Event\UnitRefunded;
1211
use Sylius\RefundPlugin\Model\OrderItemUnitRefund;
1312
use Sylius\RefundPlugin\Model\RefundType;
1413
use Sylius\RefundPlugin\Refunder\RefunderInterface;
14+
use Symfony\Component\Messenger\MessageBusInterface;
1515

1616
final class OrderItemUnitsRefunderSpec extends ObjectBehavior
1717
{
1818
function let(
1919
RefundCreatorInterface $refundCreator,
20-
EventBus $eventBus
20+
MessageBusInterface $eventBus
2121
): void {
2222
$this->beConstructedWith($refundCreator, $eventBus);
2323
}
@@ -29,7 +29,7 @@ function it_implements_refunder_interface(): void
2929

3030
function it_creates_refund_for_each_unit_and_dispatch_proper_event(
3131
RefundCreatorInterface $refundCreator,
32-
EventBus $eventBus
32+
MessageBusInterface $eventBus
3333
): void {
3434
$firstUnitRefund = new OrderItemUnitRefund(1, 1500);
3535
$secondUnitRefund = new OrderItemUnitRefund(3, 1000);

0 commit comments

Comments
 (0)