99use Bernard \Producer ;
1010use Bernard \QueueFactory \InMemoryFactory ;
1111use Bernard \Router \SimpleRouter ;
12+ use Monolog \Handler \TestHandler ;
1213use Monolog \Logger ;
14+ use Vespolina \Tests \WorkflowCommon ;
15+ use Vespolina \Workflow \Queue \BernardQueueHandler ;
16+ use Vespolina \Workflow \Queue \BernardReceiver ;
1317use Vespolina \Workflow \Token ;
1418
1519class BernardQueueTest extends \PHPUnit_Framework_TestCase
1620{
21+ protected $ producer ;
22+ protected $ queues ;
23+
1724 public function setUp ()
1825 {
1926 $ this ->queues = new InMemoryFactory ;
@@ -22,36 +29,42 @@ public function setUp()
2229
2330 public function testExecuteAndConsume ()
2431 {
25- $ task = $ this ->getMock ('Vespolina\Workflow\Task\BernardQueue ' , ['getQueueName ' , 'testQueue ' ], [$ this ->producer ]);
26- $ task ->expects ($ this ->any ())
27- ->method ('getQueueName ' )
28- ->will ($ this ->returnValue ('TestQueue ' ));
29- $ task ->expects ($ this ->once ())
30- ->method ('testQueue ' )
31- ->will ($ this ->returnValue (true ));
32+ $ logger = new Logger ('test ' );
33+ $ handler = new TestHandler ();
34+ $ logger ->pushHandler ($ handler );
35+
36+ $ queueHandler = new BernardQueueHandler ($ this ->producer );
3237
33- $ rp = new \ReflectionProperty ($ task , 'logger ' );
34- $ rp ->setAccessible (true );
35- $ rp ->setValue ($ task , new Logger ('test ' ));
36- $ rp ->setAccessible (false );
38+ $ workflow = WorkflowCommon::createWorkflow ($ logger , $ queueHandler );
3739
3840 $ token = new Token ();
41+ $ token ->setLocation ('queue_test ' );
3942 $ token ->setData ('label ' , 'test ' );
4043 $ token ->setData ('array ' , ['a ' => 'b ' ]);
4144 $ token ->setData ('object ' , new TestObject ());
4245
46+ $ task = $ this ->getMock ('Vespolina\Workflow\Task\Queue ' , ['consume ' ]);
47+ $ task ->expects ($ this ->once ())
48+ ->method ('consume ' )
49+ ->with ($ token )
50+ ->will ($ this ->returnValue (true ));
51+
52+ $ task ->setWorkflow ($ workflow , $ logger );
53+ $ workflow ->addNode ($ task , 'queue_test ' );
54+
4355 $ this ->assertTrue ($ task ->accept ($ token ), 'true should be returned when the token is pushed into the queue ' );
4456
45- $ envelope = $ this ->queues ->create ('TestQueue ' )->dequeue ();
57+ $ envelope = $ this ->queues ->create ('queue_test ' )->dequeue ();
4658 $ message = $ envelope ->getMessage ();
4759 $ this ->assertEquals ($ token , $ message ->getToken ());
48- $ this ->queues ->create ('TestQueue ' )->enqueue ($ envelope );
60+ $ this ->queues ->create ('queue_test ' )->enqueue ($ envelope );
4961
50- $ this ->router = new SimpleRouter (['TestQueue ' => $ task ]);
62+ $ receiver = new BernardReceiver ($ workflow );
63+ $ this ->router = new SimpleRouter (['queue_test ' => $ receiver ]);
5164 $ this ->middleware = new MiddlewareBuilder ();
5265 $ this ->consumer = new Consumer ($ this ->router , $ this ->middleware );
5366
54- $ this ->consumer ->consume ($ this ->queues ->create ('TestQueue ' ), ['max-runtime ' => 1 ]);
67+ $ this ->consumer ->consume ($ this ->queues ->create ('queue_test ' ), ['max-runtime ' => 1 ]);
5568 }
5669}
5770
0 commit comments