diff --git a/README.md b/README.md index f90f3d5..8e3fba5 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,9 @@ This TYPO3 extension is an example for writing unit tests for extbase extensions for TYPO3 CMS using PHPUnit. +The functional tests for the Repositories provide an example of creating +records using the PHPUnit extension testing framework. + The functional test for the Utility/FileUtility class provides examples for working with [vfsStream](https://github.com/mikey179/vfsStream/). diff --git a/Tests/Functional/Domain/Repository/TestimonialRepositoryTest.php b/Tests/Functional/Domain/Repository/TestimonialRepositoryTest.php new file mode 100644 index 0000000..972c825 --- /dev/null +++ b/Tests/Functional/Domain/Repository/TestimonialRepositoryTest.php @@ -0,0 +1,102 @@ + + */ +class TestimonialRepositoryTest extends \TYPO3\CMS\Core\Tests\UnitTestCase { + /** + * @var TestimonialRepository + */ + protected $subject = null; + + /** + * @var \Tx_Phpunit_Framework + */ + protected $testingFramework = null; + + protected function setUp() { + $this->testingFramework = new \Tx_Phpunit_Framework('tx_tea'); + + /** @var ObjectManager $objectManager */ + $objectManager = GeneralUtility::makeInstance(ObjectManager::class); + // We are using the object manager instead of new so that the dependencies get injected. + // In a unit test, we would inject the mocked dependencies instead. + $this->subject = $objectManager->get(TestimonialRepository::class); + } + + protected function tearDown() { + $this->testingFramework->cleanUp(); + } + + /** + * @test + */ + public function findAllForNoRecordsReturnsEmptyContainer() { + $container = $this->subject->findAll(); + + self::assertSame( + 0, + $container->count() + ); + } + + /** + * @test + */ + public function findAllWithOneRecordFindsThisRecord() { + $uid = $this->testingFramework->createRecord('tx_tea_domain_model_testimonial'); + + $container = $this->subject->findAll(); + /** @var Testimonial $first */ + $first = $container->getFirst(); + + self::assertSame( + 1, + $container->count() + ); + self::assertSame( + $uid, + $first->getUid() + ); + } + + /** + * @test + */ + public function findByUidForExistingRecordReturnsModelWithData() { + $text = 'A very good Early Grey!'; + $uid = $this->testingFramework->createRecord( + 'tx_tea_domain_model_testimonial', array('text' => $text) + ); + + /** @var Testimonial $model */ + $model = $this->subject->findByUid($uid); + + self::assertNotNull($model); + self::assertSame( + $text, + $model->getText() + ); + } +} diff --git a/ext_tables.sql b/ext_tables.sql index 92d5fc5..b311f3c 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -133,6 +133,7 @@ CREATE TABLE tx_tea_domain_model_testimonial ( crdate int(11) unsigned DEFAULT '0' NOT NULL, cruser_id int(11) unsigned DEFAULT '0' NOT NULL, deleted tinyint(4) unsigned DEFAULT '0' NOT NULL, + is_dummy_record tinyint(1) unsigned DEFAULT '0' NOT NULL, hidden tinyint(4) unsigned DEFAULT '0' NOT NULL, starttime int(11) unsigned DEFAULT '0' NOT NULL, endtime int(11) unsigned DEFAULT '0' NOT NULL, @@ -155,7 +156,8 @@ CREATE TABLE tx_tea_domain_model_testimonial ( PRIMARY KEY (uid), KEY parent (pid), KEY t3ver_oid (t3ver_oid,t3ver_wsid), - KEY language (l10n_parent,sys_language_uid) + KEY language (l10n_parent,sys_language_uid), + KEY phpunit_dummy (is_dummy_record) ); #