Skip to content

Commit

Permalink
Extending code coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
olvlvl committed Jul 9, 2016
1 parent 2a4ff31 commit 1a93336
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 5 deletions.
3 changes: 2 additions & 1 deletion lib/Module/ForwardedOperationDispatcher.php
Expand Up @@ -123,7 +123,8 @@ protected function assert_forward_is_valid(Request $request)
{
throw new \LogicException("The operation's destination is required.");
}
else if (!$request[Operation::NAME])

if (!$request[Operation::NAME])
{
throw new \LogicException("The operation's name is required.");
}
Expand Down
6 changes: 3 additions & 3 deletions lib/Module/ModelCollection.php
Expand Up @@ -25,7 +25,7 @@ class ModelCollection extends ActiveRecord\ModelCollection
/**
* @var ModuleCollection
*/
protected $modules;
private $modules;

/**
* @param ConnectionCollection $connections Connections manager.
Expand All @@ -34,9 +34,9 @@ class ModelCollection extends ActiveRecord\ModelCollection
*/
public function __construct(ConnectionCollection $connections, ModuleCollection $modules, array $definitions = [])
{
$this->modules = $modules;

parent::__construct($connections, $definitions);

$this->modules = $modules;
}

/**
Expand Down
69 changes: 68 additions & 1 deletion tests/Module/ForwardedOperationDispatcherTest.php
Expand Up @@ -2,22 +2,47 @@

namespace ICanBoogie\Module;

use ICanBoogie\EventCollection;
use ICanBoogie\EventCollectionProvider;
use ICanBoogie\HTTP\Request;
use ICanBoogie\HTTP\Status;
use ICanBoogie\Operation;
use ICanBoogie\Operation\Failure;
use ICanBoogie\Operation\Response;

class ForwardedForwardedOperationDispatcherTest extends \PHPUnit_Framework_TestCase
class ForwardedOperationDispatcherTest extends \PHPUnit_Framework_TestCase
{
/**
* @var ForwardedOperationDispatcher
*/
private $dispatcher;

/**
* @var EventCollection
*/
private $events;

/**
* @inheritdoc
*/
public function setUp()
{
$this->dispatcher = new ForwardedOperationDispatcher(\ICanBoogie\app()->modules);
$this->events = $events = new EventCollection;

EventCollectionProvider::define(function () use ($events) {

return $events;

});
}

public function test_invoke_should_return_null_when_request_is_not_an_operation()
{
$request = Request::from('/');
$dispatcher = $this->dispatcher;

$this->assertSame(null, $dispatcher($request));
}

/*
Expand Down Expand Up @@ -233,4 +258,46 @@ public function test_forwarded_failure_with_xhr()

$this->fail('The Failure exception should have been raised.');
}

public function test_rescue_just_throw_exceptions_which_are_not_failures()
{
$exception = new \Exception;
$request = Request::from();

try
{
$this->dispatcher->rescue($exception, $request);
}
catch (\Exception $e)
{
$this->assertSame($exception, $e);
}
}

public function test_rescue_should_return_recovered_response()
{
$request = Request::from();
$response = new Response;
$operation_response = new Response(null, 500);

/* @var $operation Operation */
$operation = $this->getMockBuilder(Operation::class)
->disableOriginalConstructor()
->getMockForAbstractClass();
$operation->response = $operation_response;

$exception = new \Exception;
$failure = new Failure($operation, $exception);

$this->events->attach(function (Operation\RescueEvent $event, Operation $target) use ($operation, $failure, $response) {

$this->assertSame($operation, $target);
$this->assertSame($failure, $event->exception);

$event->response = $response;

});

$this->assertSame($response, $this->dispatcher->rescue($failure, $request));
}
}
39 changes: 39 additions & 0 deletions tests/Module/ModelCollectionTest.php
@@ -0,0 +1,39 @@
<?php

namespace ICanBoogie\Module;

use ICanBoogie\ActiveRecord\ConnectionCollection;
use ICanBoogie\ActiveRecord\Model;

class ModelCollectionTest extends \PHPUnit_Framework_TestCase
{
public function test_should_return_true_if_model_exists_in_model_collection()
{
$connections = $this->getMockBuilder(ConnectionCollection::class)
->disableOriginalConstructor()
->getMock();

$modules = $this->getMockBuilder(ModuleCollection::class)
->disableOriginalConstructor()
->getMock();

$model_id = uniqid();

$definitions = [

$model_id => [

Model::SCHEMA => []

]

];

/* @var $connections ConnectionCollection */
/* @var $modules ModuleCollection */

$collection = new ModelCollection($connections, $modules, $definitions);

$this->assertTrue($collection->offsetExists($model_id));
}
}

0 comments on commit 1a93336

Please sign in to comment.