parent
af25afe2cf
commit
ec6ac1d798
|
@ -4,18 +4,18 @@ declare(strict_types=1);
|
|||
|
||||
namespace Drupal\opdavies_blog\EventSubscriber;
|
||||
|
||||
use Drupal\Core\Queue\QueueFactory;
|
||||
use Drupal\core_event_dispatcher\Event\Entity\AbstractEntityEvent;
|
||||
use Drupal\hook_event_dispatcher\HookEventDispatcherInterface;
|
||||
use Drupal\opdavies_blog\Entity\Node\Post;
|
||||
use Drupal\opdavies_blog\Service\PostPusher\PostPusher;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
final class PushBlogPostToSocialMedia implements EventSubscriberInterface {
|
||||
|
||||
private PostPusher $postPusher;
|
||||
private QueueFactory $queueFactory;
|
||||
|
||||
public function __construct(PostPusher $postPusher) {
|
||||
$this->postPusher = $postPusher;
|
||||
public function __construct(QueueFactory $queueFactory) {
|
||||
$this->queueFactory = $queueFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -40,14 +40,12 @@ final class PushBlogPostToSocialMedia implements EventSubscriberInterface {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!$this->shouldBePushed($entity)) {
|
||||
return;
|
||||
}
|
||||
$queue = $this->queueFactory->get('opdavies_blog_push_post_to_social_media');
|
||||
$queue->createQueue();
|
||||
|
||||
$this->postPusher->push($entity);
|
||||
|
||||
$entity->markAsSentToSocialMedia();
|
||||
$entity->save();
|
||||
$queue->createItem([
|
||||
'post' => $entity,
|
||||
]);
|
||||
}
|
||||
|
||||
private function shouldBePushed(Post $post): bool {
|
||||
|
|
|
@ -6,6 +6,7 @@ namespace Drupal\Tests\opdavies_blog\Kernel;
|
|||
|
||||
use Drupal\Core\Queue\QueueInterface;
|
||||
use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
|
||||
use Drupal\opdavies_blog\Entity\Node\Post;
|
||||
use Drupal\Tests\node\Traits\NodeCreationTrait;
|
||||
|
||||
final class PushToSocialMediaTest extends EntityKernelTestBase {
|
||||
|
@ -40,6 +41,15 @@ final class PushToSocialMediaTest extends EntityKernelTestBase {
|
|||
]);
|
||||
|
||||
$this->assertSame(1, $this->queue->numberOfItems());
|
||||
|
||||
$item = $this->queue->claimItem();
|
||||
/** @var Post $post */
|
||||
$post = $item->data['post'];
|
||||
|
||||
$this->assertNotNull($post);
|
||||
$this->assertInstanceOf(Post::class, $post);
|
||||
$this->assertSame('1', $post->id());
|
||||
$this->assertSame('Ignoring PHPCS sniffs within PHPUnit tests', $post->getTitle());
|
||||
}
|
||||
|
||||
protected function setUp() {
|
||||
|
@ -50,7 +60,7 @@ final class PushToSocialMediaTest extends EntityKernelTestBase {
|
|||
$this->installSchema('node', ['node_access']);
|
||||
|
||||
$this->queue = $this->container->get('queue')
|
||||
->get('push_post_to_social_media');
|
||||
->get('opdavies_blog_push_post_to_social_media');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue