queue = SendingQueue::create(); $this->queue->taskId = 0; $this->queue->newsletterId = 1; $this->queue->save(); $this->renderedBody = [ 'html' => 'some html', 'text' => 'some text', ]; } public function testItReadsSerializedRenderedNewsletterBody() { $queue = $this->queue; $data = [ 'html' => 'html', 'text' => 'text', ]; $queue->newsletterRenderedBody = serialize($data); verify($queue->getNewsletterRenderedBody())->equals($data); } public function testItReadsJsonEncodedRenderedNewsletterBody() { $queue = $this->queue; $data = [ 'html' => 'html', 'text' => 'text', ]; $queue->newsletterRenderedBody = json_encode($data); verify($queue->getNewsletterRenderedBody())->equals($data); } public function testItJsonEncodesRenderedNewsletterBodyWhenSaving() { $queue = SendingQueue::create(); $data = [ 'html' => 'html', 'text' => 'text', ]; $queue->taskId = 0; $queue->newsletterId = 1; $queue->newsletterRenderedBody = $data; $queue->save(); $queue = SendingQueue::findOne($queue->id); $this->assertInstanceOf(SendingQueue::class, $queue); /** @var string queue_newsletter_rendered_body */ $queueNewsletterRenderedBody = $queue->newsletterRenderedBody; verify(Helpers::isJson($queueNewsletterRenderedBody))->true(); verify(json_decode($queueNewsletterRenderedBody, true))->equals($data); } public function testItJsonEncodesMetaWhenSaving() { $queue = SendingQueue::create(); $this->assertInstanceOf(SendingQueue::class, $queue); $meta = [ 'some' => 'value', ]; $queue->taskId = 0; $queue->newsletterId = 1; $queue->meta = $meta; $queue->save(); $queue = SendingQueue::findOne($queue->id); $this->assertInstanceOf(SendingQueue::class, $queue); verify(Helpers::isJson($queue->meta))->true(); $this->assertIsString($queue->meta); verify(json_decode((string)$queue->meta, true))->equals($meta); } public function testItDoesNotJsonEncodesMetaEqualToNull() { $queue = SendingQueue::create(); $meta = null; $queue->taskId = 0; $queue->newsletterId = 1; $queue->meta = $meta; $queue->save(); $queue = SendingQueue::findOne($queue->id); $this->assertInstanceOf(SendingQueue::class, $queue); verify(Helpers::isJson($queue->meta))->false(); verify($queue->meta)->equals($meta); } public function testItReencodesSerializedObjectToJsonEncoded() { $queue = $this->queue; $newsletterRenderedBody = $this->renderedBody; // update queue with a serialized rendered newsletter body ORM::rawExecute( 'UPDATE `' . SendingQueue::$_table . '` SET `newsletter_rendered_body` = ? WHERE `id` = ?', [ serialize($newsletterRenderedBody), $queue->id, ] ); $sendingQueue = SendingQueue::findOne($queue->id); $this->assertInstanceOf(SendingQueue::class, $sendingQueue); verify($sendingQueue->newsletterRenderedBody)->equals(serialize($newsletterRenderedBody)); // re-saving the queue will re-rencode the body using json_encode() $sendingQueue->save(); $sendingQueue = SendingQueue::findOne($queue->id); $this->assertInstanceOf(SendingQueue::class, $sendingQueue); verify($sendingQueue->newsletterRenderedBody)->equals(json_encode($newsletterRenderedBody)); } }