DotmailerCouponCodeGeneratorTest.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace Dotdigitalgroup\Email\Test\Unit\Model\SalesRule;
  3. use Dotdigitalgroup\Email\Model\SalesRule\DotmailerCouponCodeGenerator;
  4. use Magento\SalesRule\Helper\Coupon;
  5. use PHPUnit\Framework\TestCase;
  6. class DotmailerCouponCodeGeneratorTest extends TestCase
  7. {
  8. /**
  9. * @var Coupon|\PHPUnit_Framework_MockObject_MockObject
  10. */
  11. private $couponHelperMock;
  12. /**
  13. * @var DotmailerCouponCodeGenerator
  14. */
  15. private $model;
  16. /**
  17. * Prepare data
  18. */
  19. protected function setUp()
  20. {
  21. $this->couponHelperMock = $this->getMockBuilder(Coupon::class)
  22. ->disableOriginalConstructor()
  23. ->getMock();
  24. $this->model = new DotmailerCouponCodeGenerator($this->couponHelperMock);
  25. }
  26. public function testCouponCodeDelimiterRetrievedFromCouponHelper()
  27. {
  28. $expectedSeparator = "^";
  29. $this->couponHelperMock->expects($this->once())
  30. ->method('getCodeSeparator')
  31. ->willReturn($expectedSeparator);
  32. $actualSeparator = $this->model->getDelimiter();
  33. $this->assertEquals($expectedSeparator, $actualSeparator);
  34. }
  35. public function testCouponFormatCorrect()
  36. {
  37. $delimiter = "$";
  38. $this->couponHelperMock->method('getCodeSeparator')
  39. ->willReturn($delimiter);
  40. $this->couponHelperMock->method('getCharset')
  41. ->willReturn(['1','2','3','A','S','D']);
  42. $couponCode = $this->model->generateCode();
  43. $this->assertStringMatchesFormat('DOT-%c%c%c$%c%c%c$%c%c%c', $couponCode);
  44. }
  45. }