From c687deaf5cf6b377fa9bdb85b155ce8475d7d216 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Mon, 15 Jan 2024 08:00:00 +0000 Subject: [PATCH] Refactor to use a PostBuilder --- .../example/src/Builder/PostBuilder.php | 43 +++++++++++++++++++ .../src/Kernel/PostNodeRepositoryTest.php | 32 ++++++-------- 2 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 web/modules/custom/example/src/Builder/PostBuilder.php diff --git a/web/modules/custom/example/src/Builder/PostBuilder.php b/web/modules/custom/example/src/Builder/PostBuilder.php new file mode 100644 index 0000000..88508d9 --- /dev/null +++ b/web/modules/custom/example/src/Builder/PostBuilder.php @@ -0,0 +1,43 @@ +created = new DrupalDateTime($time); + + return $this; + } + + public function setTitle(string $title) { + $this->title = $title; + + return $this; + } + + public function getPost(): NodeInterface { + $post = Node::create([ + 'created' => $this?->created->getTimestamp(), + 'title' => $this->title, + 'type' => 'post', + ]); + + $post->save(); + + return $post; + } + +} diff --git a/web/modules/custom/example/tests/src/Kernel/PostNodeRepositoryTest.php b/web/modules/custom/example/tests/src/Kernel/PostNodeRepositoryTest.php index 9683002..8382973 100644 --- a/web/modules/custom/example/tests/src/Kernel/PostNodeRepositoryTest.php +++ b/web/modules/custom/example/tests/src/Kernel/PostNodeRepositoryTest.php @@ -2,37 +2,31 @@ namespace Drupal\Tests\example\Kernel; -use Drupal\Core\Datetime\DrupalDateTime; +use Drupal\example\Builder\PostBuilder; use Drupal\example\Repository\PostNodeRepository; use Drupal\KernelTests\Core\Entity\EntityKernelTestBase; use Drupal\node\NodeInterface; -use Drupal\Tests\node\Traits\NodeCreationTrait; class PostNodeRepositoryTest extends EntityKernelTestBase { - use NodeCreationTrait; - protected static $modules = ['node', 'example']; public function testPostsAreReturnedByCreatedDate(): void { // Arrange. - $this->createNode([ - 'title' => 'Post one', - 'created' => (new DrupalDateTime('-1 week'))->getTimestamp(), - 'type' => 'post', - ]); + PostBuilder::create() + ->setCreatedDate('-1 week') + ->setTitle('Post one') + ->getPost(); - $this->createNode([ - 'title' => 'Post two', - 'created' => (new DrupalDateTime('-8 days'))->getTimestamp(), - 'type' => 'post', - ]); + PostBuilder::create() + ->setCreatedDate('-8 days') + ->setTitle('Post two') + ->getPost(); - $this->createNode([ - 'title' => 'Post three', - 'created' => (new DrupalDateTime('yesterday'))->getTimestamp(), - 'type' => 'post', - ]); + PostBuilder::create() + ->setCreatedDate('yesterday') + ->setTitle('Post three') + ->getPost(); // Act. $postRepository = $this->container->get(PostNodeRepository::class);