public function testCollectItemHasNoChildren() { $itemWithChildren = $this->getMockBuilder('Magento\\Sales\\Model\\Quote\\Item')->disableOriginalConstructor()->setMethods(['getNoDiscount', 'getParentItemId', 'getHasChildren', 'isChildrenCalculated', 'getChildren'])->getMock(); $itemWithChildren->expects($this->once())->method('getNoDiscount')->willReturn(false); $itemWithChildren->expects($this->once())->method('getParentItemId')->willReturn(false); $itemWithChildren->expects($this->once())->method('getHasChildren')->willReturn(false); $this->validatorMock->expects($this->any())->method('sortItemsByPriority')->willReturnArgument(0); $storeMock = $this->getMockBuilder('Magento\\Store\\Model\\Store')->disableOriginalConstructor()->setMethods(['getStore'])->getMock(); $this->storeManagerMock->expects($this->any())->method('getStore')->willReturn($storeMock); $quoteMock = $this->getMockBuilder('Magento\\Sales\\Model\\Quote')->disableOriginalConstructor()->getMock(); $addressMock = $this->getMockBuilder('Magento\\Sales\\Model\\Quote\\Address')->disableOriginalConstructor()->setMethods(['getQuote', 'getAllNonNominalItems', 'getShippingAmount'])->getMock(); $addressMock->expects($this->any())->method('getQuote')->willReturn($quoteMock); $addressMock->expects($this->any())->method('getAllNonNominalItems')->willReturn([$itemWithChildren]); $addressMock->expects($this->any())->method('getShippingAmount')->willReturn(true); $this->assertInstanceOf('Magento\\SalesRule\\Model\\Quote\\Discount', $this->discount->collect($addressMock)); }