persistenceManager = GeneralUtility::makeInstance(PersistenceManager::class); $this->subject = $this->getContainer()->get(TeaRepository::class); } /** * @test */ public function findAllForNoRecordsReturnsEmptyContainer(): void { $result = $this->subject->findAll(); self::assertCount(0, $result); } /** * @test */ public function findAllWithRecordsFindsRecordsFromAllPages(): void { $this->importCSVDataSet(__DIR__ . '/../Fixtures/Product/Tea.csv'); $result = $this->subject->findAll(); self::assertGreaterThanOrEqual(1, \count($result)); } /** * @test */ public function findAllSortsByTitleInAscendingOrder(): void { $this->importCSVDataSet(__DIR__ . '/../Fixtures/Product/Tea.csv'); $result = $this->subject->findAll(); $result->rewind(); self::assertSame(2, $result->current()->getUid()); } /** * @test */ public function findByUidForExistingRecordReturnsModel(): void { $this->importCSVDataSet(__DIR__ . '/../Fixtures/Product/Tea.csv'); $uid = 1; $model = $this->subject->findByUid($uid); self::assertInstanceOf(Tea::class, $model); } /** * @test */ public function findByUidForExistingRecordMapsAllScalarData(): void { $this->importCSVDataSet(__DIR__ . '/../Fixtures/Product/Tea.csv'); $uid = 1; $model = $this->subject->findByUid($uid); self::assertInstanceOf(Tea::class, $model); self::assertSame('Earl Grey', $model->getTitle()); self::assertSame('Fresh and hot.', $model->getDescription()); } /** * @test */ public function fillsImageRelation(): void { $this->importCSVDataSet(__DIR__ . '/../Fixtures/Product/Tea.csv'); $uid = 3; $model = $this->subject->findByUid($uid); $image = $model->getImage(); self::assertInstanceOf(FileReference::class, $image); self::assertSame(1, $image->getUid()); } /** * @test */ public function addAndPersistAllCreatesNewRecord(): void { $title = 'Godesberger Burgtee'; $model = new Tea(); $model->setTitle($title); $this->subject->add($model); $this->persistenceManager->persistAll(); $connection = $this->getConnectionPool()->getConnectionForTable('tx_tea_domain_model_product_tea'); $databaseRow = $connection ->executeQuery( 'SELECT * FROM tx_tea_domain_model_product_tea WHERE uid = :uid', ['uid' => $model->getUid()] ) ->fetchAssociative(); self::assertIsArray($databaseRow); self::assertSame($title, $databaseRow['title']); } }