diff --git a/web/modules/custom/opdavies_blog/src/Entity/Node/Post.php b/web/modules/custom/opdavies_blog/src/Entity/Node/Post.php index cda1c15..8aee8ab 100644 --- a/web/modules/custom/opdavies_blog/src/Entity/Node/Post.php +++ b/web/modules/custom/opdavies_blog/src/Entity/Node/Post.php @@ -50,11 +50,27 @@ class Post extends Node implements ContentEntityBundleInterface { } public function toTweet(): string { - // TODO: Add tags. - - $parts = [$this->label(), $this->url('canonical', ['absolute' => TRUE])]; + $parts = [ + $this->label(), + $this->url('canonical', ['absolute' => TRUE]), + $this->convertTermsToHashtags(), + ]; return implode(PHP_EOL . PHP_EOL, $parts); } + private function convertTermsToHashtags(): string { + return $this->getTags() + ->map(fn(Term $term) => $this->convertTermToHashtag($term)) + ->implode(' '); + } + + private function convertTermToHashtag(Term $tag): string { + $tagName = strtolower($tag->label()); + $tagName = "#{$tagName}"; + $tagName = str_replace(' ', '-', $tagName); + + return $tagName; + } + } diff --git a/web/modules/custom/opdavies_blog/tests/src/Kernel/Entity/Node/PostTest.php b/web/modules/custom/opdavies_blog/tests/src/Kernel/Entity/Node/PostTest.php index 43c8b82..f9df752 100644 --- a/web/modules/custom/opdavies_blog/tests/src/Kernel/Entity/Node/PostTest.php +++ b/web/modules/custom/opdavies_blog/tests/src/Kernel/Entity/Node/PostTest.php @@ -8,6 +8,7 @@ use Drupal\KernelTests\Core\Entity\EntityKernelTestBase; use Drupal\node\Entity\Node; use Drupal\node\NodeInterface; use Drupal\opdavies_blog\Entity\Node\Post; +use Drupal\taxonomy\Entity\Term; final class PostTest extends EntityKernelTestBase { @@ -43,6 +44,12 @@ final class PostTest extends EntityKernelTestBase { public function it_converts_a_post_to_a_tweet(): void { /** @var Post $post */ $post = Node::create([ + 'field_tags' => [ + Term::create(['vid' => 'tags', 'name' => 'Automated testing']), + Term::create(['vid' => 'tags', 'name' => 'DDEV']), + Term::create(['vid' => 'tags', 'name' => 'Drupal']), + Term::create(['vid' => 'tags', 'name' => 'PHP']), + ], 'status' => NodeInterface::PUBLISHED, 'title' => 'Creating a custom PHPUnit command for DDEV', 'type' => 'post', @@ -53,6 +60,8 @@ final class PostTest extends EntityKernelTestBase { Creating a custom PHPUnit command for DDEV http://localhost/node/1 + + #automated-testing #ddev #drupal #php EOF; $this->assertSame($expected, $post->toTweet()); @@ -61,6 +70,8 @@ final class PostTest extends EntityKernelTestBase { protected function setUp() { parent::setUp(); + $this->installEntitySchema('taxonomy_term'); + $this->installConfig(['opdavies_blog_test']); }