mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-06-26 03:02:56 +02:00
PHP7 DataMapper
This commit is contained in:
@ -2,109 +2,29 @@
|
||||
|
||||
namespace DesignPatterns\Structural\DataMapper\Tests;
|
||||
|
||||
use DesignPatterns\Structural\DataMapper\User;
|
||||
use DesignPatterns\Structural\DataMapper\StorageAdapter;
|
||||
use DesignPatterns\Structural\DataMapper\UserMapper;
|
||||
|
||||
/**
|
||||
* UserMapperTest tests the datamapper pattern.
|
||||
*/
|
||||
class DataMapperTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* @var UserMapper
|
||||
*/
|
||||
protected $mapper;
|
||||
|
||||
/**
|
||||
* @var DBAL
|
||||
*/
|
||||
protected $dbal;
|
||||
|
||||
protected function setUp()
|
||||
public function testCanMapUserFromStorage()
|
||||
{
|
||||
$this->dbal = $this->getMockBuilder('DesignPatterns\Structural\DataMapper\DBAL')
|
||||
->disableAutoload()
|
||||
->setMethods(array('insert', 'update', 'find', 'findAll'))
|
||||
->getMock();
|
||||
$storage = new StorageAdapter([1 => ['username' => 'domnikl', 'email' => 'liebler.dominik@gmail.com']]);
|
||||
$mapper = new UserMapper($storage);
|
||||
|
||||
$this->mapper = new UserMapper($this->dbal);
|
||||
}
|
||||
$user = $mapper->findById(1);
|
||||
|
||||
public function getNewUser()
|
||||
{
|
||||
return array(array(new User(null, 'Odysseus', 'Odysseus@ithaca.gr')));
|
||||
}
|
||||
|
||||
public function getExistingUser()
|
||||
{
|
||||
return array(array(new User(1, 'Odysseus', 'Odysseus@ithaca.gr')));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getNewUser
|
||||
*/
|
||||
public function testPersistNew(User $user)
|
||||
{
|
||||
$this->dbal->expects($this->once())
|
||||
->method('insert');
|
||||
$this->mapper->save($user);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getExistingUser
|
||||
*/
|
||||
public function testPersistExisting(User $user)
|
||||
{
|
||||
$this->dbal->expects($this->once())
|
||||
->method('update');
|
||||
$this->mapper->save($user);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getExistingUser
|
||||
*/
|
||||
public function testRestoreOne(User $existing)
|
||||
{
|
||||
$row = array(
|
||||
'userid' => 1,
|
||||
'username' => 'Odysseus',
|
||||
'email' => 'Odysseus@ithaca.gr',
|
||||
);
|
||||
$rows = new \ArrayIterator(array($row));
|
||||
$this->dbal->expects($this->once())
|
||||
->method('find')
|
||||
->with(1)
|
||||
->will($this->returnValue($rows));
|
||||
|
||||
$user = $this->mapper->findById(1);
|
||||
$this->assertEquals($existing, $user);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getExistingUser
|
||||
*/
|
||||
public function testRestoreMulti(User $existing)
|
||||
{
|
||||
$rows = array(array('userid' => 1, 'username' => 'Odysseus', 'email' => 'Odysseus@ithaca.gr'));
|
||||
$this->dbal->expects($this->once())
|
||||
->method('findAll')
|
||||
->will($this->returnValue($rows));
|
||||
|
||||
$user = $this->mapper->findAll();
|
||||
$this->assertEquals(array($existing), $user);
|
||||
$this->assertInstanceOf('DesignPatterns\Structural\DataMapper\User', $user);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
* @expectedExceptionMessage User #404 not found
|
||||
*/
|
||||
public function testNotFound()
|
||||
public function testWillNotMapInvalidData()
|
||||
{
|
||||
$this->dbal->expects($this->once())
|
||||
->method('find')
|
||||
->with(404)
|
||||
->will($this->returnValue(array()));
|
||||
$storage = new StorageAdapter([]);
|
||||
$mapper = new UserMapper($storage);
|
||||
|
||||
$user = $this->mapper->findById(404);
|
||||
$mapper->findById(1);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user