/** * @magentoConfigFixture current_store customer/create_account/auto_group_assign 1 * @magentoConfigFixture current_store customer/create_account/default_group 1 * @magentoDataFixture Magento/Customer/_files/customer.php * @magentoDataFixture Magento/Sales/_files/quote.php * * @covers \Magento\Sales\Model\Observer\Frontend\Quote\Address\CollectTotals::dispatch */ public function testChangeQuoteCustomerGroupIdForCustomerWithEnabledAutomaticGroupChange() { /** @var \Magento\Framework\ObjectManager $objectManager */ $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); /** @var $customer \Magento\Customer\Model\Customer */ $customer = $objectManager->create('Magento\\Customer\\Model\\Customer'); $customer->load(1); $customer->setDisableAutoGroupChange(0); $customer->setGroupId(2); $customer->save(); /** @var $quote \Magento\Sales\Model\Quote */ $quote = $objectManager->create('Magento\\Sales\\Model\\Quote'); $quote->load('test01', 'reserved_order_id'); $quote->setCustomer($customer); $quoteAddress = $quote->getBillingAddress(); $eventObserver = $objectManager->create('Magento\\Framework\\Event\\Observer', array('data' => array('quote_address' => $quoteAddress))); $this->model->dispatch($eventObserver); $this->assertEquals(1, $quote->getCustomer()->getGroupId()); }
public function testDispatchWithCustomerCountryInEU() { /** @var \Magento\Framework\Service\Data\Eav\AttributeValueBuilder $attributeValueBuilder */ $attributeValueBuilder = $this->objectManager->getObject('Magento\\Framework\\Service\\Data\\Eav\\AttributeValueBuilder'); $attributeValueBuilder->setAttributeCode('disable_auto_group_change')->setValue(false); /** Preconditions */ $this->customerDataMock->expects($this->exactly(2))->method('getCustomAttribute')->with('disable_auto_group_change')->will($this->returnValue($attributeValueBuilder->create())); $this->vatValidatorMock->expects($this->once())->method('isEnabled')->with($this->quoteAddressMock, $this->storeId)->will($this->returnValue(true)); $this->quoteAddressMock->expects($this->once())->method('getCountryId')->will($this->returnValue('customerCountryCode')); $this->quoteAddressMock->expects($this->once())->method('getVatId')->will($this->returnValue('vatID')); $this->customerHelperMock->expects($this->once())->method('isCountryInEU')->with('customerCountryCode')->will($this->returnValue($attributeValueBuilder->create())); $this->quoteMock->expects($this->once())->method('getCustomerGroupId')->will($this->returnValue('customerGroupId')); $validationResult = array('some' => 'result'); $this->vatValidatorMock->expects($this->once())->method('validate')->with($this->quoteAddressMock, $this->storeId)->will($this->returnValue($validationResult)); $this->customerHelperMock->expects($this->once())->method('getCustomerGroupIdBasedOnVatNumber')->with('customerCountryCode', $validationResult, $this->storeId)->will($this->returnValue('customerGroupId')); /** Assertions */ $this->quoteAddressMock->expects($this->once())->method('setPrevQuoteCustomerGroupId')->with('customerGroupId'); $this->quoteMock->expects($this->once())->method('setCustomerGroupId')->with('customerGroupId'); $this->customerBuilderMock->expects($this->once())->method('mergeDataObjectWithArray')->with($this->customerDataMock, array('group_id' => 'customerGroupId'))->will($this->returnValue($this->customerDataMock)); $this->model->dispatch($this->observerMock); }