From 538dc0a0cb99a86b4251638dbb8c3fd787ea6753 Mon Sep 17 00:00:00 2001 From: Sander van Thillo Date: Tue, 23 Jan 2018 09:12:10 +0100 Subject: [PATCH] split from broadway/broadway-saga (#1) * split from broadway/broadway-saga * test with MongoDB and docker compose * new namespace --- README.md | 26 +++++++++++++++------- composer.json | 24 +++++++++----------- docker-compose.yml | 6 +++++ phpunit.xml.dist | 5 ----- src/{State => }/MongoDBRepository.php | 5 ++++- test/{State => }/MongoDBRepositoryTest.php | 6 ++--- 6 files changed, 40 insertions(+), 32 deletions(-) create mode 100644 docker-compose.yml rename src/{State => }/MongoDBRepository.php (91%) rename test/{State => }/MongoDBRepositoryTest.php (92%) diff --git a/README.md b/README.md index 0f5a165..ce2b43f 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,27 @@ -broadway/broadway-saga -====================== +broadway/saga-state-mongodb +=========================== -Proof-of-concept component providing saga functionality to your application. - -This component provides saga state and metadata management and a manager that -can be used to wake up and start sagas. +Saga state persistence for [broadway/broadway-saga](https://github.com/broadway/broadway-saga) using MongoDB. > Note: this component is highly experimental. # Installation ``` -$ composer require broadway/broadway-saga +$ composer require broadway/saga-state-mongodb +``` + +Testing +------- +For testing you need a running MongoDB instance. +To start a local MongoDB you can use the provided [docker-compose.yml](https://docs.docker.com/compose/compose-file/): + +``` +docker-compose up -d ``` -> Note: to use MongoDB on PHP7 you will also need to install `alcaeus/mongo-php-adapter` +To run the tests: + +``` +./vendor/bin/phpunit +``` diff --git a/composer.json b/composer.json index 2b65945..3f87a9a 100644 --- a/composer.json +++ b/composer.json @@ -1,13 +1,18 @@ { - "name": "broadway/broadway-saga", - "description": "Proof-of-concept component providing saga functionality to broadway/broadway.", + "name": "broadway/saga-state-mongodb", + "description": "Saga state persistence for broadway/broadway-saga using MongoDB", "license": "MIT", "require": { "php": ">=7.0", - "broadway/broadway": "^2.0", + "broadway/broadway-saga": "^0.4", + "doctrine/mongodb": "^1.0", "beberlei/assert": "^2.0", "alcaeus/mongo-php-adapter": "^1.1" }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "ramsey/uuid": "^3.3" + }, "authors": [ { "name": "Alexander", @@ -34,23 +39,14 @@ "homepage": "http://labs.qandidate.com/" } ], - "require-dev": { - "doctrine/mongodb": "^1.0", - "phpunit/phpunit": "^4.8", - "ramsey/uuid": "^3.3" - }, - "suggest": { - "doctrine/mongodb": "For persisting saga states", - "alcaeus/mongo-php-adapter": "Polyfill for Mongo extension on PHP 7" - }, "autoload": { "psr-4": { - "Broadway\\Saga\\": "src/" + "Broadway\\Saga\\State\\MongoDB\\": "src/" } }, "autoload-dev": { "psr-4": { - "Broadway\\Saga\\": "test/" + "Broadway\\Saga\\State\\MongoDB\\": "test/" } }, "extra": { diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9f879a1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.2' +services: + mongodb: + image: mongo:3 + ports: + - "27017:27017" diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 94608f8..3e0b0a5 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -22,9 +22,4 @@ ./src/ - - - mongo - - diff --git a/src/State/MongoDBRepository.php b/src/MongoDBRepository.php similarity index 91% rename from src/State/MongoDBRepository.php rename to src/MongoDBRepository.php index 1566815..59bfe3c 100644 --- a/src/State/MongoDBRepository.php +++ b/src/MongoDBRepository.php @@ -9,9 +9,12 @@ * file that was distributed with this source code. */ -namespace Broadway\Saga\State; +namespace Broadway\Saga\State\MongoDB; use Broadway\Saga\State; +use Broadway\Saga\State\Criteria; +use Broadway\Saga\State\RepositoryException; +use Broadway\Saga\State\RepositoryInterface; use Doctrine\MongoDB\Collection; class MongoDBRepository implements RepositoryInterface diff --git a/test/State/MongoDBRepositoryTest.php b/test/MongoDBRepositoryTest.php similarity index 92% rename from test/State/MongoDBRepositoryTest.php rename to test/MongoDBRepositoryTest.php index 8e125f6..0c988fb 100644 --- a/test/State/MongoDBRepositoryTest.php +++ b/test/MongoDBRepositoryTest.php @@ -9,14 +9,12 @@ * file that was distributed with this source code. */ -namespace Broadway\Saga\State; +namespace Broadway\Saga\State\MongoDB; +use Broadway\Saga\State\Testing\AbstractRepositoryTest; use Doctrine\MongoDB\Configuration; use Doctrine\MongoDB\Connection; -/** - * @group mongo - */ class MongoDBRepositoryTest extends AbstractRepositoryTest { protected static $dbName = 'doctrine_mongodb';