Skip to content

Commit

Permalink
fix naming of stub classes
Browse files Browse the repository at this point in the history
  • Loading branch information
albertborsos committed Jun 21, 2019
1 parent bf20bd0 commit aa68841
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use albertborsos\ddd\interfaces\FormObject;
use yii\base\Model;

class MockedForm extends Model implements FormObject
class StubbedForm extends Model implements FormObject
{

public $email;
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use albertborsos\ddd\interfaces\BusinessObject;
use yii\base\Model;

class MockedModel extends Model implements BusinessObject
class StubbedModel extends Model implements BusinessObject
{

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,21 @@
use albertborsos\ddd\models\AbstractService;
use yii\base\Model;

class MockedService extends AbstractService
class StubbedService extends AbstractService
{
public function execute()
{
$this->setId(1);
return true;
}

public function failedExecute()
{
$this->getForm()->addError('email', 'This email address is already in use.');

return false;
}

public function testGetForm()
{
return $this->getForm();
Expand Down
52 changes: 37 additions & 15 deletions tests/unit/models/AbstractServiceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,35 @@

namespace albertborsos\ddd\tests\unit\models;

use albertborsos\ddd\models\AbstractService;
use albertborsos\ddd\tests\support\base\MockedForm;
use albertborsos\ddd\tests\support\base\MockedModel;
use albertborsos\ddd\tests\support\base\MockedService;
use albertborsos\ddd\tests\support\base\StubbedForm;
use albertborsos\ddd\tests\support\base\StubbedModel;
use albertborsos\ddd\tests\support\base\StubbedService;
use Codeception\PHPUnit\TestCase;
use Codeception\Util\Debug;
use PHPUnit\Framework\MockObject\MockObject;
use yii\base\Model;
use yii\helpers\Json;
use yii\helpers\VarDumper;

class AbstractServiceTest extends TestCase
{
/**
* @param null $form
* @param null $model
* @return MockedService
* @return StubbedService
*/
public function mockService($form = null, $model = null)
{
if (!empty(func_get_args())) {
return \Yii::createObject(MockedService::className(), func_get_args());
return \Yii::createObject(StubbedService::className(), func_get_args());
}

return \Yii::createObject(MockedService::className());
return \Yii::createObject(StubbedService::className());
}

public function invalidConstructionDataProvider()
{
return [
'no arguments is valid' => [[], null],
'invalid form interface' => [[new Model()], 'TypeError'],
'invalid model interface' => [[new MockedForm(), new Model()], 'TypeError'],
'valid arguments' => [[new MockedForm(), new MockedModel()], null],
'invalid model interface' => [[new StubbedForm(), new Model()], 'TypeError'],
'valid arguments' => [[new StubbedForm(), new StubbedModel()], null],
];
}

Expand All @@ -55,17 +50,44 @@ public function testInvalidObjectInitialization($constructorArguments, $expected

public function testGetFormObject()
{
$mockedForm = new MockedForm();
$mockedForm = new StubbedForm();
$service = $this->mockService($mockedForm);

$this->assertSame($mockedForm, $service->testGetForm());
}

public function testGetModelObject()
{
$mockedModel = new MockedModel();
$mockedModel = new StubbedModel();
$service = $this->mockService(null, $mockedModel);

$this->assertSame($mockedModel, $service->testGetModel());
}

public function testExecuteOk()
{
$mockedForm = new StubbedForm();
$mockedModel = new StubbedModel();

$service = $this->mockService($mockedForm, $mockedModel);

$this->assertNull($service->getId());
$this->assertTrue($service->execute());
$this->assertNotNull($service->getId());
$this->assertEmpty($mockedForm->errors);
}

public function testExecuteFailed()
{
$mockedForm = new StubbedForm();
$mockedModel = new StubbedModel();

$service = $this->mockService($mockedForm, $mockedModel);

$this->assertEmpty($mockedForm->errors);
$this->assertNull($service->getId());
$this->assertFalse($service->failedExecute());
$this->assertNull($service->getId());
$this->assertNotEmpty($mockedForm->errors);
}
}

0 comments on commit aa68841

Please sign in to comment.