SmsFrameworkMessageResultTestTrait.php in SMS Framework 2.x
File
tests/src/Functional/SmsFrameworkMessageResultTestTrait.php
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests\sms\Functional;
use Drupal\sms\Exception\SmsException;
use Drupal\sms\Message\SmsDeliveryReport;
use Drupal\sms\Message\SmsDeliveryReportInterface;
use Drupal\sms\Message\SmsMessageResultInterface;
trait SmsFrameworkMessageResultTestTrait {
public function testError() {
$result = $this
->createMessageResult();
$this
->assertNull($result
->getError(), 'Default value is NULL');
$error = $this
->getRandomGenerator()
->string();
$return = $result
->setError($error);
$this
->assertTrue($return instanceof SmsMessageResultInterface);
$this
->assertEquals($error, $result
->getError());
}
public function testErrorMessage() {
$result = $this
->createMessageResult();
$this
->assertEquals('', $result
->getErrorMessage(), 'Default value is empty string');
$error_message = $this
->getRandomGenerator()
->string();
$return = $result
->setErrorMessage($error_message);
$this
->assertTrue($return instanceof SmsMessageResultInterface);
$this
->assertEquals($error_message, $result
->getErrorMessage());
}
public function testGetReport() {
$result = $this
->createMessageResult();
$recipient = '123123123';
$this
->assertNull($result
->getReport($recipient), 'No report found');
$report = (new SmsDeliveryReport())
->setRecipient($recipient);
$result
->setReports([
$report,
]);
$this
->assertTrue($result
->getReport($recipient) instanceof SmsDeliveryReportInterface, 'Report found');
}
public function testReports() {
$result = $this
->createMessageResult();
$recipient = '123123123';
$report = (new SmsDeliveryReport())
->setRecipient($recipient);
$return = $result
->setReports([
$report,
]);
$this
->assertTrue($return instanceof SmsMessageResultInterface);
$reports = $result
->getReports();
$this
->assertEquals(1, count($reports));
$this
->assertTrue($reports[0] instanceof SmsDeliveryReportInterface);
$report2 = (new SmsDeliveryReport())
->setRecipient('2345678901');
$result
->setReports([
$report2,
]);
$reports = $result
->getReports();
$this
->assertEquals(1, count($reports));
}
public function testAddReport() {
$result = $this
->createMessageResult();
$this
->assertEquals(0, count($result
->getReports()), 'There are zero reports.');
$report = (new SmsDeliveryReport())
->setRecipient('123123123');
$return = $result
->addReport($report);
$this
->assertTrue($return instanceof SmsMessageResultInterface, 'Return type is a result object');
$this
->assertEquals(1, count($result
->getReports()), 'There is one report.');
}
public function testCreditsBalance() {
$result = $this
->createMessageResult();
$this
->assertNull($result
->getCreditsBalance(), 'No credit balance set');
$balance = 13.37;
$return = $result
->setCreditsBalance($balance);
$this
->assertTrue($return instanceof SmsMessageResultInterface);
$this
->assertEquals($balance, $result
->getCreditsBalance());
}
public function testCreditsBalanceIncorrectType() {
$balance = 'foobar';
$result = $this
->createMessageResult();
$this
->expectException(SmsException::class);
$this
->expectExceptionMessage('Credit balance set is a string');
$result
->setCreditsBalance($balance);
}
public function testCreditsUsed() {
$result = $this
->createMessageResult();
$this
->assertNull($result
->getCreditsUsed(), 'No credits used set');
$used = 13.37;
$return = $result
->setCreditsUsed($used);
$this
->assertTrue($return instanceof SmsMessageResultInterface);
$this
->assertEquals($used, $result
->getCreditsUsed());
}
public function testCreditsUsedIncorrectType() {
$used = 'foobar';
$result = $this
->createMessageResult();
$this
->expectException(SmsException::class);
$this
->expectExceptionMessage('Credit used is a string');
$result
->setCreditsUsed($used);
}
protected abstract function createMessageResult();
}