SendTest.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SendFriend\Test\Unit\Block;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. class SendTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\SendFriend\Block\Send
  12. */
  13. protected $model;
  14. /**
  15. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\SendFriend\Model\SendFriend
  16. */
  17. protected $sendfriendMock;
  18. /**
  19. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\UrlInterface
  20. */
  21. protected $urlBuilderMock;
  22. /**
  23. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\RequestInterface
  24. */
  25. protected $requestMock;
  26. protected function setUp()
  27. {
  28. $objectManager = new ObjectManager($this);
  29. $this->sendfriendMock = $this->getMockBuilder(\Magento\SendFriend\Model\SendFriend::class)
  30. ->disableOriginalConstructor()
  31. ->getMock();
  32. $this->urlBuilderMock = $this->getMockBuilder(\Magento\Framework\UrlInterface::class)
  33. ->disableOriginalConstructor()
  34. ->getMockForAbstractClass();
  35. $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class)
  36. ->disableOriginalConstructor()
  37. ->getMockForAbstractClass();
  38. $this->model = $objectManager->getObject(
  39. \Magento\SendFriend\Block\Send::class,
  40. [
  41. 'sendfriend' => $this->sendfriendMock,
  42. 'urlBuilder' => $this->urlBuilderMock,
  43. 'request' => $this->requestMock,
  44. ]
  45. );
  46. }
  47. public function testGetSendUrl()
  48. {
  49. $this->requestMock->expects($this->exactly(2))
  50. ->method('getParam')
  51. ->willReturnMap(
  52. [
  53. ['id', null, '1'],
  54. ['cat_id', null, '2'],
  55. ]
  56. );
  57. $this->urlBuilderMock->expects($this->once())
  58. ->method('getUrl')
  59. ->with('sendfriend/product/sendmail', ['id' => 1, 'cat_id' => 2])
  60. ->willReturn('url');
  61. $this->assertEquals('url', $this->model->getSendUrl());
  62. }
  63. /**
  64. * @param bool $isExceedLimit
  65. * @param bool $result
  66. *
  67. * @dataProvider dataProviderCanSend
  68. */
  69. public function testCanSend($isExceedLimit, $result)
  70. {
  71. $this->sendfriendMock->expects($this->once())
  72. ->method('isExceedLimit')
  73. ->willReturn($isExceedLimit);
  74. $this->assertEquals($result, $this->model->canSend());
  75. }
  76. /**
  77. * @return array
  78. */
  79. public function dataProviderCanSend()
  80. {
  81. return [
  82. [true, false],
  83. [false, true],
  84. ];
  85. }
  86. }