示例#1
0
    public function testExecuteWithNonVisibleProduct()
    {
        $productId = 11;

        $this->requestMock->expects($this->once())
            ->method('getParam')
            ->with('id', null)
            ->willReturn($productId);

        /** @var \Magento\Catalog\Api\Data\ProductInterface|\PHPUnit_Framework_MockObject_MockObject $productMock */
        $productMock = $this->getMockBuilder('Magento\Catalog\Api\Data\ProductInterface')
            ->setMethods(['isVisibleInCatalog'])
            ->getMockForAbstractClass();

        $this->productRepositoryMock->expects($this->once())
            ->method('getById')
            ->with($productId, false, null, false)
            ->willReturn($productMock);

        $productMock->expects($this->once())
            ->method('isVisibleInCatalog')
            ->willReturn(false);

        /** @var \Magento\Framework\Controller\Result\Forward|\PHPUnit_Framework_MockObject_MockObject $forwardMock */
        $forwardMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Forward')
            ->disableOriginalConstructor()
            ->getMock();

        $this->resultFactoryMock->expects($this->once())
            ->method('create')
            ->with(\Magento\Framework\Controller\ResultFactory::TYPE_FORWARD, [])
            ->willReturn($forwardMock);

        $forwardMock->expects($this->once())
            ->method('forward')
            ->with('noroute')
            ->willReturnSelf();

        $this->assertEquals($forwardMock, $this->model->executeInternal());
    }