Skip to content

koinephp/DbTestCase

Repository files navigation

Koine DbTestCase

Base class for testing database with PDO. Tested only against MySql.

Work in progress

Code information:

Build Status Coverage Status Code Climate Scrutinizer Code Quality

Package information:

Latest Stable Version Total Downloads Latest Unstable Version License Dependency Status

Usage

Db Test Case

In your bootstrap file set up the connection

// tests/bootstrap.php

// [...]

\Koine\PHPUnit\DbTestCase::setConnection($pdoConnection);
namespace MyAppTest;

use Koine\PHPUnit\DbTestCase;
use MyApp\BlogService;

/**
 * @author Marcelo Jacobus <[email protected]>
 */
class DbTestCaseTest extends DbTestCase
{
    public function setUp()
    {
        parent::setUp(); // enclose everything in a transaction
    }

    public function tearDown()
    {
        parent::tearDown(); // rollback the transaction
    }

    /**
     * @test
     */
    public function canCreatePost()
    {
        $service = new BlogService($this->getConnection());

        $service->create(array(
            'title' => 'some title',
            'body'  => 'some body',
        ));

        $this->assertTableCount(1, 'blog_post');
    }

    /**
     * @test
     */
    public function canFindByCategory()
    {
        $helper = $this->createTableHelper('blog_post');

        $helper->insert(array(
            'title'      => 'foo',
            'body'       => 'bar',
            'categoryId' => 1,
        ));

        $helper->insert(array(
            'title'      => 'foo',
            'body'       => 'bar',
            'categoryId' => 2,
        ));

        $service = new BlogService($this->getConnection());
        $records = $service->findByCategoryId(1);

        $this->assertEquals(1, count($records));
    }
}

Table Helper

Table helper is a very simple ORM for creating records for test, updating and querying a single table.

Setting up

$tableName = 'blog_post';

$tableHelper = new \Koine\DbTestCase\TableHelper\TableHelper(
  $pdo,
  $tableName,
  'id'
);

Finding records by conditions

$posts = $tableHelper->findAllBy(array(
  'categoryId' => $categoryId,
));

Finding record by id

$post = $tableHelper->find(10);

Crating records

$tableHelper->insert(array(
  'title' => 'First blog',
  'body'  => 'Post body',
));

Updating

$tableHelper->update(10, array(
  'title' => 'new title',
));

Deleting

$tableHelper->delete(10);

Counting

$tableHelper->getNumberOfRows();

Installing

Installing Via Composer

Append the lib to your requirements key in your composer.json.

{
    // composer.json
    // [..]
    require: {
        // append this line to your requirements
        "koine/db-test-case": "*"
    }
}

Alternative install

Issues/Features proposals

Here is the issue tracker.

Contributing

Please refer to the contribuiting guide.

Lincense

MIT

Authors

About

Base class for testing database

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages