/** * @param array $itemOptionValues * @param array $productOptionValues * @param bool $noRouteOccurs * @dataProvider executeDataProvider */ public function testExecute($itemOptionValues, $productOptionValues, $noRouteOccurs) { if (!empty($itemOptionValues)) { $this->itemOptionMock->expects($this->once())->method('load')->willReturnSelf(); $this->itemOptionMock->expects($this->once())->method('getId')->willReturn($itemOptionValues[self::OPTION_ID]); $this->itemOptionMock->expects($this->any())->method('getCode')->willReturn($itemOptionValues[self::OPTION_CODE]); $this->itemOptionMock->expects($this->any())->method('getProductId')->willReturn($itemOptionValues[self::OPTION_PRODUCT_ID]); $this->itemOptionMock->expects($this->any())->method('getValue')->willReturn($itemOptionValues[self::OPTION_VALUE]); } if (!empty($productOptionValues)) { $this->productOptionMock->expects($this->once())->method('load')->willReturnSelf(); $this->productOptionMock->expects($this->any())->method('getId')->willReturn($productOptionValues[self::OPTION_ID]); $this->productOptionMock->expects($this->any())->method('getProductId')->willReturn($productOptionValues[self::OPTION_PRODUCT_ID]); $this->productOptionMock->expects($this->any())->method('getType')->willReturn($productOptionValues[self::OPTION_TYPE]); } if ($noRouteOccurs) { $this->resultForwardMock->expects($this->once())->method('forward')->with('noroute')->willReturn(true); } else { $unserializeResult = [self::SECRET_KEY => self::SECRET_KEY]; $this->unserializeMock->expects($this->once())->method('unserialize')->with($itemOptionValues[self::OPTION_VALUE])->willReturn($unserializeResult); $this->downloadMock->expects($this->once())->method('downloadFile')->with($unserializeResult)->willReturn(true); $this->objectMock->expects($this->once())->method('endExecute')->willReturn(true); } $this->objectMock->execute(); }