Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AllcartTest.php
Go to the documentation of this file.
1 <?php
7 
10 
11 class AllcartTest extends \PHPUnit\Framework\TestCase
12 {
16  protected $allcartController;
17 
22 
26  protected $context;
27 
32 
36  protected $itemCarrierMock;
37 
41  protected $wishlistMock;
42 
46  protected $requestMock;
47 
51  protected $resultFactoryMock;
52 
57 
61  protected $resultForwardMock;
62 
63  protected function setUp()
64  {
65  $this->wishlistProviderMock = $this->getMockBuilder(\Magento\Wishlist\Controller\Shared\WishlistProvider::class)
66  ->disableOriginalConstructor()
67  ->getMock();
68  $this->itemCarrierMock = $this->getMockBuilder(\Magento\Wishlist\Model\ItemCarrier::class)
69  ->disableOriginalConstructor()
70  ->getMock();
71  $this->wishlistMock = $this->getMockBuilder(\Magento\Wishlist\Model\Wishlist::class)
72  ->disableOriginalConstructor()
73  ->getMock();
74  $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
75  ->disableOriginalConstructor()
76  ->getMock();
77  $this->resultFactoryMock = $this->getMockBuilder(\Magento\Framework\Controller\ResultFactory::class)
78  ->disableOriginalConstructor()
79  ->getMock();
80  $this->resultRedirectMock = $this->getMockBuilder(\Magento\Framework\Controller\Result\Redirect::class)
81  ->disableOriginalConstructor()
82  ->getMock();
83  $this->resultForwardMock = $this->getMockBuilder(\Magento\Framework\Controller\Result\Forward::class)
84  ->disableOriginalConstructor()
85  ->getMock();
86 
87  $this->resultFactoryMock->expects($this->any())
88  ->method('create')
89  ->willReturnMap(
90  [
91  [ResultFactory::TYPE_REDIRECT, [], $this->resultRedirectMock],
92  [ResultFactory::TYPE_FORWARD, [], $this->resultForwardMock]
93  ]
94  );
95 
96  $this->objectManagerHelper = new ObjectManagerHelper($this);
97  $this->context = $this->objectManagerHelper->getObject(
98  \Magento\Framework\App\Action\Context::class,
99  [
100  'request' => $this->requestMock,
101  'resultFactory' => $this->resultFactoryMock
102  ]
103  );
104  $this->allcartController = $this->objectManagerHelper->getObject(
105  \Magento\Wishlist\Controller\Shared\Allcart::class,
106  [
107  'context' => $this->context,
108  'wishlistProvider' => $this->wishlistProviderMock,
109  'itemCarrier' => $this->itemCarrierMock
110  ]
111  );
112  }
113 
114  public function testExecuteWithWishlist()
115  {
116  $url = 'http://redirect-url.com';
117  $quantity = 2;
118 
119  $this->wishlistProviderMock->expects($this->once())
120  ->method('getWishlist')
121  ->willReturn($this->wishlistMock);
122  $this->requestMock->expects($this->any())
123  ->method('getParam')
124  ->with('qty')
125  ->willReturn($quantity);
126  $this->itemCarrierMock->expects($this->once())
127  ->method('moveAllToCart')
128  ->with($this->wishlistMock, 2)
129  ->willReturn($url);
130  $this->resultRedirectMock->expects($this->once())
131  ->method('setUrl')
132  ->with($url)
133  ->willReturnSelf();
134 
135  $this->assertSame($this->resultRedirectMock, $this->allcartController->execute());
136  }
137 
138  public function testExecuteWithNoWishlist()
139  {
140  $this->wishlistProviderMock->expects($this->once())
141  ->method('getWishlist')
142  ->willReturn(false);
143  $this->resultForwardMock->expects($this->once())
144  ->method('forward')
145  ->with('noroute')
146  ->willReturnSelf();
147 
148  $this->assertSame($this->resultForwardMock, $this->allcartController->execute());
149  }
150 }