Beispiel #1
1
 /**
  * Handle scope row data
  *
  * @param string $type
  * @param array $row
  * @param EcomDev_PHPUnit_Model_FixtureInterface $fixture
  * @return boolean|Mage_Core_Model_Abstract
  */
 protected function _handleScopeRow($type, $row, EcomDev_PHPUnit_Model_FixtureInterface $fixture)
 {
     $previousScope = array();
     if ($fixture->isScopeLocal() && $fixture->getStorageData(self::STORAGE_KEY, EcomDev_PHPUnit_Model_FixtureInterface::SCOPE_SHARED) !== null) {
         $previousScope = $fixture->getStorageData(self::STORAGE_KEY, EcomDev_PHPUnit_Model_FixtureInterface::SCOPE_SHARED);
     }
     if (isset($previousScope[$type][$row[$type . '_id']])) {
         return false;
     }
     $scopeModel = Mage::getModel($this->modelByType[$type]);
     $scopeModel->setData($row);
     // Change property for saving new objects with specified ids
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($scopeModel->getResource(), array('_isPkAutoIncrement' => false));
     try {
         $scopeModel->isObjectNew(true);
         $scopeModel->save();
     } catch (Exception $e) {
         Mage::logException($e);
         // Skip duplicated key violation, since it might be a problem
         // of previous run with fatal error
         // Revert changed property
         EcomDev_Utils_Reflection::setRestrictedPropertyValues($scopeModel->getResource(), array('_isPkAutoIncrement' => true));
         // Load to make possible deletion
         $scopeModel->load($row[$type . '_id']);
     }
     // Revert changed property
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($scopeModel->getResource(), array('_isPkAutoIncrement' => true));
     return $scopeModel;
 }
 public function setUp()
 {
     $logContext = $this->getHelperMock('ebayenterprise_magelog/context', ['getMetaData']);
     $logContext->expects($this->any())->method('getMetaData')->will($this->returnValue([]));
     $this->_api = $this->getMockForAbstractClass('eBayEnterprise\\RetailOrderManagement\\Api\\IBidirectionalApi');
     // Create two request bodies - one to serve as the "empty" request
     // body that needs to be populated with data and one to serve as
     // the "complete" payload that has been populated with data.
     $this->_emptyRequestBody = $this->getMockForAbstractClass('eBayEnterprise\\RetailOrderManagement\\Payload\\TaxDutyFee\\ITaxDutyFeeQuoteRequest');
     $this->_completeRequestBody = $this->getMockForAbstractClass('eBayEnterprise\\RetailOrderManagement\\Payload\\TaxDutyFee\\ITaxDutyFeeQuoteRequest');
     $this->_responseBody = $this->getMockForAbstractClass('eBayEnterprise\\RetailOrderManagement\\Payload\\TaxDutyFee\\ITaxDutyFeeQuoteReply');
     $this->_coreHelper = $this->getHelperMock('ebayenterprise_eb2ccore', ['getSdkApi']);
     $this->_taxConfig = $this->buildCoreConfigRegistry(['apiService' => $this->_apiService, 'apiOperation' => $this->_apiOperation]);
     $this->_taxHelper = $this->getHelperMock('ebayenterprise_tax/data', ['__']);
     $this->_taxHelper->expects($this->any())->method('__')->will($this->returnArgument(0));
     $this->_taxFactory = $this->getHelperMock('ebayenterprise_tax/factory', ['createRequestBuilderQuote', 'createResponseQuoteParser', 'createTaxResults']);
     $this->_quoteRequestBuilder = $this->getModelMockBuilder('ebayenterprise_tax/request_builder_quote')->disableOriginalConstructor()->setMethods(['getTaxRequest'])->getMock();
     $this->_quoteResponseParser = $this->getModelMockBuilder('ebayenterprise_tax/response_parser_quote')->disableOriginalConstructor()->setMethods(['getTaxRecords', 'getTaxDuties', 'getTaxFees'])->getMock();
     $this->_quote = $this->getModelMock('sales/quote');
     $this->_taxHelper = $this->getHelperMock('ebayenterprise_tax', ['getConfigModel']);
     $this->_taxHelper->method('getConfigModel')->willReturn($this->_taxConfig);
     // As helpers do not support constructor injection, inject
     // dependencies by directly setting the class properties.
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($this->_taxHelper, ['coreHelper' => $this->_coreHelper, 'taxFactory' => $this->_taxFactory, 'logContext' => $logContext]);
 }
 /**
  * verify the cookie array is converted to a string
  * @dataProvider provideCookieArray
  */
 public function testGetCookiesString(array $arr, $expected)
 {
     $helper = Mage::helper('eb2cfraud/http');
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($helper, ['_request' => $this->_requestStub, '_cookie' => $this->_cookieStub]);
     $this->_cookieStub->expects($this->any())->method('get')->will($this->returnValue($arr));
     $this->assertSame($expected, $helper->getCookiesString());
 }
 /**
  * Scenario: Get tracking data
  * Given a ROM order object
  * And shipment id
  * And tracking number
  * When getting tracking data
  * Then get the specified shipment from the ROM order object
  * And extract tracking data for it.
  *
  * @param Mage_Sales_Model_Order
  * @param EbayEnterprise_Order_Model_Detail_Process_Response_Shipment
  * @param string
  * @param string
  * @dataProvider providerTrackingInfo
  */
 public function testGetTrackingData(Mage_Sales_Model_Order $order, EbayEnterprise_Order_Model_Detail_Process_Response_Shipment $shipment, $shipmentId, $trackingNumber)
 {
     /** @var Varien_Data_Collection */
     $shipments = new Varien_Data_Collection();
     $shipments->addItem($shipment);
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($order, ['_shipments' => $shipments]);
     /** @var EbayEnterprise_Order_Model_Tracking */
     $tracking = $this->getModelMock('ebayenterprise_order/tracking', ['extractTrackingDataFromShipment'], false, [['order' => $order, 'shipment_id' => $shipmentId, 'tracking_number' => $trackingNumber]]);
     $tracking->expects($this->once())->method('extractTrackingDataFromShipment')->with($this->identicalTo($shipment))->will($this->returnValue([]));
     $this->assertCount(1, $tracking->getTrackingData());
 }
 public function testInjectShippingOriginForItem()
 {
     $detail = $this->getModelMockBuilder('ebayenterprise_inventory/details_item')->disableOriginalConstructor()->setMethods(null)->getMock();
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($detail, ['isAvailable' => true, 'shipFromLines' => 'shipFromLines', 'shipFromCity' => 'shipFromCity', 'shipFromMainDivision' => 'shipFromMainDivision', 'shipFromCountryCode' => 'shipFromCountryCode', 'shipFromPostalCode' => 'shipFromPostalCode']);
     $item = $this->getModelMock('sales/quote_item', ['getId']);
     $item->expects($this->any())->method('getId')->will($this->returnValue(1));
     $this->detailsService = $this->getModelMockBuilder('ebayenterprise_inventory/details_service')->disableOriginalConstructor()->setMethods(['getDetailsForItem'])->getMock();
     $this->detailsService->expects($this->any())->method('getDetailsForItem')->with($this->identicalTo($item))->will($this->returnValue($detail));
     $address = $this->getModelMockBuilder('customer/address_abstract')->disableOriginalConstructor()->setMethods(['addData'])->getMockForAbstractClass();
     $address->expects($this->once())->method('addData')->with($this->equalTo(['street' => 'shipFromLines', 'city' => 'shipFromCity', 'region_code' => 'shipFromMainDivision', 'country_id' => 'shipFromCountryCode', 'postcode' => 'shipFromPostalCode']))->will($this->returnSelf());
     $origin = Mage::getModel('ebayenterprise_inventory/tax_shipping_origin', ['details_service' => $this->detailsService, 'logger' => $this->logger, 'log_context' => $this->logContext]);
     $origin->injectShippingOriginForItem($item, $address);
 }
 public function setUp()
 {
     parent::setUp();
     $this->payload = $this->mockPayload();
     $detail = $this->getModelMockBuilder('ebayenterprise_inventory/details_item')->disableOriginalConstructor()->setMethods(null)->getMock();
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($detail, ['isAvailable' => true, 'deliveryWindowFromDate' => new DateTime(), 'deliveryWindowToDate' => null, 'shippingWindowFromDate' => null, 'shippingWindowToDate' => null]);
     $config = $this->buildCoreConfigRegistry(['estimatedDeliveryTemplate' => 'eddtemplate']);
     $this->helperStub = $this->getHelperMockBuilder('ebayenterprise_inventory/data')->disableOriginalConstructor()->setMethods(['getConfigModel'])->getMock();
     $this->helperStub->expects($this->any())->method('getConfigModel')->will($this->returnValue($config));
     $this->item = Mage::getModel('sales/order_item');
     $this->detailService = $this->getModelMockBuilder('ebayenterprise_inventory/details_service')->disableOriginalConstructor()->setMethods(['getDetailsForOrderItem'])->getMock();
     $this->detailService->expects($this->once())->method('getDetailsForOrderItem')->will($this->returnValue($detail));
     $this->order = Mage::getModel('sales/order');
 }
 public function setUp()
 {
     $logContext = $this->getHelperMock('ebayenterprise_magelog/context', ['getMetaData']);
     $logContext->expects($this->any())->method('getMetaData')->will($this->returnValue([]));
     $this->_api = $this->getMockForAbstractClass('eBayEnterprise\\RetailOrderManagement\\Api\\IBidirectionalApi');
     // Create two request bodies - one to serve as the "empty" request
     // body that needs to be populated with data and one to serve as
     // the "complete" payload that has been populated with data.
     $this->_emptyRequestBody = $this->getMockForAbstractClass('eBayEnterprise\\RetailOrderManagement\\Payload\\Inventory\\IQuantityRequest');
     $this->_completeRequestBody = $this->getMockForAbstractClass('eBayEnterprise\\RetailOrderManagement\\Payload\\Inventory\\IQuantityRequest');
     $this->_responseBody = $this->getMockForAbstractClass('eBayEnterprise\\RetailOrderManagement\\Payload\\Inventory\\IQuantityReply');
     $this->_coreHelper = $this->getHelperMock('ebayenterprise_eb2ccore', ['getSdkApi']);
     $this->_inventoryConfig = $this->buildCoreConfigRegistry(['apiService' => $this->_apiService, 'quantityApiOperation' => $this->_apiOperation]);
     $this->_inventoryHelper = $this->getHelperMock('ebayenterprise_inventory/data', ['__']);
     $this->_inventoryHelper->expects($this->any())->method('__')->will($this->returnArgument(0));
     $this->_inventoryFactory = $this->getHelperMock('ebayenterprise_inventory/quantity_factory', ['createRequestBuilder', 'createResponseParser', 'createQuantityResults']);
     $this->_requestBuilder = $this->getModelMockBuilder('ebayenterprise_inventory/quantity_request_builder')->disableOriginalConstructor()->setMethods(['getRequest'])->getMock();
     $this->_responseParser = $this->getModelMockBuilder('ebayenterprise_inventory/quantity_response_parser')->disableOriginalConstructor()->setMethods(['getQuantityResults'])->getMock();
     $this->_items = [$this->getModelMock('sales/quote_item')];
     $this->_sdkHelper = Mage::helper('ebayenterprise_inventory/quantity_sdk');
     // As helpers do not support constructor injection, inject
     // dependencies by directly setting the class properties.
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($this->_sdkHelper, ['_coreHelper' => $this->_coreHelper, '_inventoryHelper' => $this->_inventoryHelper, '_inventoryConfig' => $this->_inventoryConfig, '_logContext' => $logContext, '_inventoryQuantityFactory' => $this->_inventoryFactory]);
 }
 /**
  * verify the default website is use when no other websites are
  * available.
  */
 public function testGatherBatchesUsesDefaultWebsiteWhenNoOthersExist()
 {
     $websites = array(0 => $this->_defaultWebsite);
     EcomDev_Utils_Reflection::setRestrictedPropertyValues(Mage::app(), array('_websites' => $websites));
     $this->replaceByMock('helper', 'eb2ccore/languages', $this->_languageHelper);
     $priceCollector = Mage::getModel('ebayenterprise_catalog/pim_collector_price');
     $this->replaceByMock('resource_model', 'catalog/product_collection', $this->_collectionDefault);
     $this->_batchContainer->expects($this->once())->method('addBatch')->with($this->identicalTo($this->_collectionDefault), $this->identicalTo(array()), $this->identicalTo($this->_feedConfig), $this->identicalTo($this->_defaultStore))->will($this->returnSelf());
     $priceCollector->gatherBatches($this->_eventObserver);
 }
 /**
  * Test that the controller method EbayEnterprise_Order_GuestController::_viewAction()
  * is invoked and it will call the method EbayEnterprise_Order_GuestController::getRequest()
  * which will return an instance of an object of type Zend_Controller_Request_Http class.
  * Then, the method Zend_Controller_Request_Abstract::getPost() will be invoked 4 time. In the first
  * called it will be passed the string literal 'oar_order_id' and we expect an order id to return. In the second
  * called it will be passed the string literal 'oar_email' and we expect an email address string to be returned.
  * In the third called it will be passed the string literal 'oar_zip' and we expect a zip code string to be returned.
  * In the fourth called it will be passed the string literal 'oar_billing_lastname' and we expect a last name string to be returned.
  * Then, the method ebayenterprise_order/factory::getCoreSessionModel() will be invoked and return an object of type core/session. Then, the method
  * ebayenterprise_order/factory::getNewRomOrderDetailModel() will be invoked and return an object of type ebayenterprise_order/detail. Then, the method
  * ebayenterprise_order/detail::process() will be called passing in the order id from post. If no exception is thrown, then, the method
  * EbayEnterprise_Order_GuestController::_hasValidOrderResult() will be invoked and passed in as first parameter
  * the ebayenterprise_order/detail_process_response object, as second parameter the email address, as third parameter the zip code, and
  * as fourth parameter the last name. If the return value from calling the method EbayEnterprise_Order_GuestController::_hasValidOrderResult()
  * is true, then, the method EbayEnterprise_Order_GuestController::_redirect() will be invoked and passed in as first parameter a string literal
  * representing URI path, and as second parameter an array with key 'order_id'  mapped to the order id.
  * However, if the method EbayEnterprise_Order_GuestController::_hasValidOrderResult() return false, then,
  * the method core/session::addError() will be called and passed in the return value from calling the method
  * ebayenterprise_order/data::__() and passed in the string literal 'Order not found'. Then, the method
  * EbayEnterprise_Order_GuestController::_redirect() will be called and passed in the string literal 'sales/guest/form'.
  * If an exception was thrown, then, the method core/session::addError() will be called and passed in the return value from
  * calling the method EbayEnterprise_Order_Exception_Order_Detail_Notfound_Exception::getMessage(). Then, the method
  * EbayEnterprise_Order_GuestController::_redirect() will be called and passed in the string literal 'sales/guest/form'.
  * Finally, the method EbayEnterprise_Order_GuestController::_viewAction() will return null.
  *
  * @param bool
  * @param bool
  * @dataProvider providerViewAction
  */
 public function testGuestOrderViewAction($isException, $isValidOrder)
 {
     /** @var bool */
     $isError = $isException | !$isValidOrder;
     /** @var string */
     $message = 'Exception test message';
     /** @var EbayEnterprise_Order_Exception_Order_Detail_Notfound_Exception | null */
     $exception = $isException ? Mage::exception('EbayEnterprise_Order_Exception_Order_Detail_Notfound', $message) : null;
     /** @var null */
     $default = null;
     /** @var string */
     $orderId = '10000093888341';
     /** @var string */
     $email = '*****@*****.**';
     /** @var string */
     $zip = '19063';
     /** @var string */
     $lastname = 'Doe';
     /** @var string */
     $guestFormUrl = 'sales/guest/form';
     /** @var string */
     $orderDetailUrl = 'sales/order/romguestview';
     /** @var string */
     $errorMessage = 'Order not found.';
     /** @var string */
     $translatedErrorMessage = $errorMessage;
     /** @var Mock_Zend_Controller_Request_Http */
     $request = $this->getMock('Zend_Controller_Request_Http', ['getPost']);
     $request->expects($this->exactly(4))->method('getPost')->will($this->returnValueMap([['oar_order_id', $default, $orderId], ['oar_email', $default, $email], ['oar_zip', $default, $zip], ['oar_billing_lastname', $default, $lastname]]));
     /** @var Mock_Mage_Core_Model_Session */
     $session = $this->getModelMockBuilder('core/session')->disableOriginalConstructor()->setMethods(['addError'])->getMock();
     $session->expects($isError ? $this->once() : $this->never())->method('addError')->will($this->returnValueMap([[$message, $session], [$translatedErrorMessage, $session]]));
     /** @var EbayEnterprise_Order_Helper_Data */
     $helper = $this->getHelperMock('ebayenterprise_order/data', ['__']);
     $helper->expects($isValidOrder ? $this->never() : $this->once())->method('__')->with($this->identicalTo($errorMessage))->will($this->returnValue($translatedErrorMessage));
     /** @var EbayEnterprise_Order_Model_Detail_Process_Response */
     $response = $this->getModelMockBuilder('ebayenterprise_order/detail_process_response')->disableOriginalConstructor()->getMock();
     /** @var Mock_EbayEnterprise_Order_Model_Detail */
     $orderDetail = $this->getModelMockBuilder('ebayenterprise_order/detail')->disableOriginalConstructor()->getMock();
     $orderDetail->expects($this->once())->method('process')->will($isException ? $this->throwException($exception) : $this->returnValue($response));
     /** @var EbayEnterprise_Order_Helper_Factory */
     $factory = $this->getHelperMock('ebayenterprise_order/factory', ['getCoreSessionModel', 'getNewRomOrderDetailModel']);
     $factory->expects($this->once())->method('getCoreSessionModel')->will($this->returnValue($session));
     $factory->expects($this->once())->method('getNewRomOrderDetailModel')->with($this->identicalTo($orderId))->will($this->returnValue($orderDetail));
     /** @var Mock_EbayEnterprise_Order_GuestController */
     $controller = $this->getMockBuilder('EbayEnterprise_Order_GuestController')->setMethods(['getRequest', '_redirect', '_hasValidOrderResult'])->setConstructorArgs([$request, $this->_response])->getMock();
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($controller, ['_orderFactory' => $factory, '_orderHelper' => $helper]);
     $controller->expects($this->once())->method('getRequest')->will($this->returnValue($request));
     $controller->expects($this->once())->method('_redirect')->will($this->returnValueMap([[$guestFormUrl, [], $controller], [$orderDetailUrl, ['order_id' => $orderId], $controller]]));
     $controller->expects($isException ? $this->never() : $this->once())->method('_hasValidOrderResult')->with($this->identicalTo($response), $this->identicalTo($email), $this->identicalTo($zip), $this->identicalTo($lastname))->will($this->returnValue($isValidOrder));
     $this->assertNull($controller->viewAction());
 }
 /**
  * Test that the controller method EbayEnterprise_Order_OrderController::_displayPage()
  * is invoked and it will call the method EbayEnterprise_Order_OrderController::loadLayout() will be invoked. Then,
  * the method EbayEnterprise_Order_OrderController::_initLayoutMessages() will be called and passed
  * in as parameter the string literal 'catalog/session'. Then, the method EbayEnterprise_Order_OrderController::getLayout()
  * will be called and return an instance of the class Mage_Core_Model_Layout. Then,
  * the method Mage_Core_Model_Layout::getBlock() will be called and passed in as parameter the string
  * literal 'customer_account_navigation' and it will return an instance object that extend the abstract class
  * Mage_Core_Block_Abstract. Then, the method Mage_Core_Block_Abstract::setActive() will be called. Then, the method
  * EbayEnterprise_Order_OrderController::renderLayout() will be called. Finally, the method
  * EbayEnterprise_Order_OrderController::romViewAction() will return null.
  */
 public function testDisplayPage()
 {
     /** @var bool */
     $isLoggedIn = true;
     /** @var string */
     $messages = 'catalog/session';
     /** @var string */
     $blockName = 'customer_account_navigation';
     /** @var string */
     $path = 'sales/order/history';
     $this->_session->expects($this->once())->method('isLoggedIn')->will($this->returnValue($isLoggedIn));
     /** @var EbayEnterprise_Order_Helper_Factory */
     $factory = $this->getHelperMock('ebayenterprise_order/factory', ['getCustomerSession']);
     $factory->expects($this->once())->method('getCustomerSession')->will($this->returnValue($this->_session));
     /** @var Mage_Core_Block_Abstract */
     $block = $this->getMockForAbstractClass('Mage_Core_Block_Abstract', [], '', true, true, true, ['setActive']);
     $block->expects($this->once())->method('setActive')->with($this->identicalTo($path))->will($this->returnSelf());
     /** @var Mage_Core_Model_Layout */
     $layout = $this->getModelMock('core/layout', ['getBlock']);
     $layout->expects($this->once())->method('getBlock')->with($this->identicalTo($blockName))->will($this->returnValue($block));
     /** @var Mock_Zend_Controller_Request_Abstract */
     $request = $this->getMockForAbstractClass('Zend_Controller_Request_Abstract');
     /** @var Mock_Zend_Controller_Response_Abstract */
     $response = $this->getMockForAbstractClass('Zend_Controller_Response_Abstract');
     /** @var Mock_EbayEnterprise_Order_OrderController */
     $controller = $this->getMockBuilder('EbayEnterprise_Order_OrderController')->setMethods(['loadLayout', '_initLayoutMessages', 'getLayout', 'renderLayout'])->setConstructorArgs([$request, $response])->getMock();
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($controller, ['_orderFactory' => $factory]);
     $controller->expects($this->once())->method('loadLayout')->will($this->returnSelf());
     $controller->expects($this->once())->method('_initLayoutMessages')->with($this->identicalTo($messages))->will($this->returnSelf());
     $controller->expects($this->once())->method('getLayout')->will($this->returnValue($layout));
     $controller->expects($this->once())->method('renderLayout')->will($this->returnSelf());
     $this->assertNull(EcomDev_Utils_Reflection::invokeRestrictedMethod($controller, '_displayPage', []));
 }
 /**
  * Test that helper method ebayenterprise_order/data::formatPrice()
  * when invoked will be passed in either string, float, and even null
  * value and it will return an HTML price formatted string.
  *
  * @param string | null | float
  * @dataProvider providerFormatPrice
  */
 public function testFormatPrice($amount, $result)
 {
     /** @var Mage_Core_Helper_Data */
     $coreHelper = Mage::helper('core');
     /** @var Mage_Core_Model_Session */
     $session = $this->getModelMock('core/session', ['init']);
     $session->expects($this->any())->method('init')->will($this->returnSelf());
     $this->replaceByMock('model', 'core/session', $session);
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($this->_recent, ['_coreHelper' => $coreHelper]);
     $this->assertSame($result, $this->_recent->formatPrice($amount));
 }
 /**
  * Test EbayEnterprise_Catalog_Model_Feed_File::_removeFromWebsites method for the following expectations
  * Expectation 1: this test will invoked the method EbayEnterprise_Catalog_Model_Feed_File::_removeFromWebsites given
  *                a mocked Mage_Catalog_Model_Resource_Product_Collection object and an array of extracted data to be
  *                remove per for any given website.
  * Expectation 2: the method EbayEnterprise_Catalog_Helper_Data::loadWebsiteFilter will be called which will return
  *                an array of websites with client id, catalog id and mage website id keys per webssites
  * Expectation 3: the method EbayEnterprise_Catalog_Model_Feed_File::_getSkusInWebsite will be invoked given the array
  *                of skus data and an array of specific website data
  * Expectation 4: the method Mage_Catalog_Model_Resource_Product_Collection::getItemById will then be invoked given
  *                a sku if the return value is an Mage_Catalog_Model_Product object it will call the method
  *                Mage_Catalog_Model_Product::getWebsites which will return an array of all website ids in this product
  *                this array will be pass as the first parameter to the method EbayEnterprise_Catalog_Model_Feed_File::_removeWebsiteId
  *                and a second parameter of the website data mage website id which will return an array excluding the website id
  *                that was pass it and this return array will be pass to the method Mage_Catalog_Model_Product::setWebsites method
  * Expectation 5: last thing is the method Mage_Catalog_Model_Resource_Product_Collection::save will be inovked
  */
 public function testRemoveFromWebsite()
 {
     $sku = '45-1334';
     $dData = array($sku => array());
     $websiteFilters = array(array('mage_website_id' => '1'), array('mage_website_id' => '2'));
     $wIds = array('1', '2', '3');
     $removedIds = array('2', '3');
     $productMock = $this->getModelMockBuilder('catalog/product')->disableOriginalConstructor()->setMethods(array('getWebsiteIds', 'setWebsiteIds'))->getMock();
     $productMock->expects($this->once())->method('getWebsiteIds')->will($this->returnValue($wIds));
     $productMock->expects($this->once())->method('setWebsiteIds')->with($this->identicalTo($removedIds))->will($this->returnSelf());
     $collectionMock = $this->getResourceModelMockBuilder('ebayenterprise_catalog/feed_product_collection')->disableOriginalConstructor()->setMethods(array('getItemById', 'save'))->getMock();
     $collectionMock->expects($this->once())->method('getItemById')->with($this->identicalTo($sku))->will($this->returnValue($productMock));
     $collectionMock->expects($this->once())->method('save')->will($this->returnSelf());
     $helperMock = $this->getHelperMockBuilder('ebayenterprise_catalog/data')->disableOriginalConstructor()->setMethods(array('loadWebsiteFilters'))->getMock();
     $helperMock->expects($this->once())->method('loadWebsiteFilters')->will($this->returnValue($websiteFilters));
     $this->replaceByMock('helper', 'ebayenterprise_catalog', $helperMock);
     $fileMock = $this->getModelMockBuilder('ebayenterprise_catalog/feed_file')->disableOriginalConstructor()->setMethods(array('_getSkusInWebsite', '_removeWebsiteId'))->getMock();
     $fileMock->expects($this->exactly(2))->method('_getSkusInWebsite')->will($this->returnValueMap(array(array($dData, $websiteFilters[0], array($sku)), array($dData, $websiteFilters[1], array()))));
     $fileMock->expects($this->once())->method('_removeWebsiteId')->with($this->identicalTo($wIds), $this->identicalTo($websiteFilters[0]['mage_website_id']))->will($this->returnValue($removedIds));
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($fileMock, array('_helper' => $helperMock));
     $this->assertSame($fileMock, EcomDev_Utils_Reflection::invokeRestrictedMethod($fileMock, '_removeFromWebsites', array($collectionMock, $dData)));
 }
 /**
  * Scenario: Display shipment tracking information
  * Given ROM order id
  * And shipment id
  * And tracking number
  * When displaying shipment tracking information
  * Then get ROM order detail in the registry
  * And store a ebayenterprise_order/tracking instance in the registry
  * And load and render the layout.
  */
 public function testRomtrackingpopupAction()
 {
     /** @var string */
     $shipmentId = 's0-000399399991111';
     /** @var string */
     $trackingNumber = '993999222';
     /** @var Mage_Sales_Model_Order */
     $order = Mage::getModel('sales/order');
     Mage::unregister('rom_order');
     Mage::register('rom_order', $order);
     /** @var EbayEnterprise_Order_Model_Tracking */
     $trackingModel = $this->getModelMockBuilder('ebayenterprise_order/tracking')->disableOriginalConstructor()->getMock();
     /** @var EbayEnterprise_Order_Helper_Factory */
     $factory = $this->getHelperMock('ebayenterprise_order/factory', ['getNewTrackingModel']);
     $factory->expects($this->once())->method('getNewTrackingModel')->with($this->identicalTo($order), $this->identicalTo($shipmentId), $this->identicalTo($trackingNumber))->will($this->returnValue($trackingModel));
     $this->_request->expects($this->exactly(2))->method('getParam')->will($this->returnValueMap([['shipment_id', null, $shipmentId], ['tracking_number', null, $trackingNumber]]));
     $this->_controller->expects($this->once())->method('_loadValidOrder')->will($this->returnValue(true));
     $this->_controller->expects($this->once())->method('loadLayout')->will($this->returnValue($this->getModelMock('core/layout')));
     $this->_controller->expects($this->once())->method('renderLayout')->will($this->returnSelf());
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($this->_controller, ['_orderFactory' => $factory]);
     $this->assertNull($this->_controller->romtrackingpopupAction());
 }
 /**
  * Test that the helper method ebayenterprise_order/data::getCurCustomerOrders()
  * when invoked will call the helper method ebayenterprise_order/data::_getPrefixedCurrentCustomerId()
  * which when return a non-empty string value the method ebayenterprise_order/factory::getNewRomOrderSearch()
  * will be called and passed in the string literal customer id, in turn it will return an instance of type
  * ebayenterprise_order/search. Then, the method ebayenterprise_order/search::process() will be invoked and return
  * an instance of type ebayenterprise_order/search_process_response_collection. However, if the
  * the helper method ebayenterprise_order/data::_getPrefixedCurrentCustomerId() return an empty string
  * or a null value, then the method eb2ccore/data::getNewVarienDataCollection() will be invoked instead,
  * which will return an instance of type Varien_Data_Collection. Finally, the helper method
  * ebayenterprise_order/data::getCurCustomerOrders() will either return an empty Varien_Data_Collection object
  * or a full ebayenterprise_order/search_process_response_collection object.
  *
  * @param string | null
  * @dataProvider providerGetCurCustomerOrders
  */
 public function testGetCurCustomerOrders($customerId)
 {
     $api = $this->getMockBuilder(static::API_CLASS)->disableOriginalConstructor()->getMock();
     /** @var string */
     $apiService = 'customers';
     /** @var string */
     $apiOperation = 'orders/get';
     /** @var EbayEnterprise_Eb2cCore_Model_Config_Registry */
     $orderCfg = $this->buildCoreConfigRegistry(['apiSearchService' => $apiService, 'apiSearchOperation' => $apiOperation]);
     /** @var Varien_Data_Collection */
     $result = is_null($customerId) ? new Varien_Data_Collection() : Mage::getModel('ebayenterprise_order/search_process_response_collection');
     /** @var EbayEnterprise_Eb2cCore_Helper_Data */
     $coreHelper = $this->getHelperMock('eb2ccore/data', ['getNewVarienDataCollection', 'getSdkApi']);
     $coreHelper->expects(is_null($customerId) ? $this->once() : $this->never())->method('getNewVarienDataCollection')->will($this->returnValue($result));
     $coreHelper->expects($this->any())->method('getSdkApi')->with($this->identicalTo($apiService), $this->identicalTo($apiOperation))->will($this->returnValue($api));
     /** @var EbayEnterprise_Order_Model_Search */
     $search = $this->getModelMock('ebayenterprise_order/search', ['process'], false, [['customer_id' => $customerId, 'core_helper' => $coreHelper, 'order_cfg' => $orderCfg]]);
     $search->expects(is_null($customerId) ? $this->never() : $this->once())->method('process')->will($this->returnValue($result));
     /** @var EbayEnterprise_Order_Helper_Factory */
     $factory = $this->getHelperMock('ebayenterprise_order/factory', ['getNewRomOrderSearch']);
     $factory->expects(is_null($customerId) ? $this->never() : $this->once())->method('getNewRomOrderSearch')->with($this->identicalTo($customerId))->will($this->returnValue($search));
     /** @var EbayEnterprise_Order_Helper_Data */
     $helper = $this->getHelperMock('ebayenterprise_order/data', ['_getPrefixedCurrentCustomerId']);
     $helper->expects($this->once())->method('_getPrefixedCurrentCustomerId')->will($this->returnValue($customerId));
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($helper, ['_coreHelper' => $coreHelper, '_factory' => $factory]);
     $this->assertSame($result, $helper->getCurCustomerOrders());
 }
 /**
  * Scenario: Get the "What Is PayPal" localized URL
  *
  * When getWhatIsPayPalUrl is called
  * Then a localized url is returned
  * When a url is set in the config
  * Then that url will be returned
  *
  * @dataProvider provideOverrideWhatIsPageUrl
  */
 public function testGetPaymentMarkUrl($configValue, $expectedUrl)
 {
     $this->config = $this->buildCoreConfigRegistry(['markImageSrc' => null, 'paymentMarkSize' => null, 'whatIsPageUrl' => $configValue]);
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($this->block, ['config' => $this->config]);
     $this->assertSame($expectedUrl, $this->block->getWhatIsPayPalUrl());
 }
 /**
  * verify
  * - order source is from the backend when placing an order from
  *   the admin store.
  * - order source is frontend when placing the order from the frontend
  *   and no order source is found in the session
  * - order source is taken from the session when placing an order from the
  *   frontend and order_source is set in the session
  *
  * @param  bool   $isAdmin
  * @param  string $isAdmin
  * @param  string $orderSource
  * @dataProvider provideOrderSourceData
  */
 public function testGetOrderSource($isAdmin, $orderSource, $expOrderSource)
 {
     $this->_storeStub->expects($this->any())->method('isAdmin')->will($this->returnValue($isAdmin));
     $this->_customerSessionStub->setOrderSource($orderSource);
     $visitorLog = $this->getModelMock('log/visitor', ['load']);
     $visitorLog->expects($this->any())->method('load')->will($this->returnValue(null));
     $visitorLog->setIdFieldName('visitor_id');
     $customerLog = $this->getModelMock('log/customer', ['load']);
     $customerLog->expects($this->any())->method('load')->will($this->returnValue(null));
     $customerLog->setIdFieldName('id');
     $this->_customerSessionStub->expects($this->any())->method('isLoggedIn')->will($this->returnValue(false));
     $helperMock = $this->getHelperMock('eb2cfraud/data', ['_getCustomerSession']);
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($helperMock, ['_customerLog' => $customerLog, '_visitorLog' => $visitorLog, '_coreHelper' => $this->_coreHelperStub]);
     $helperMock->expects($this->any())->method('_getCustomerSession')->will($this->returnValue($this->_customerSessionStub));
     $result = $helperMock->getSessionInfo();
     $this->assertSame($expOrderSource, $result['order_source']);
 }
 /**
  * verify
  * - the request paylad is setup with the correct type of data
  * - the resulting array is in the expected structure
  * - the is_voided field is true if the message succeeded; false otherwise
  * - throws an EbayEnterprise_PayPal_Exception when the message fails
  * @loadExpectation messageReplies
  * @dataProvider provideTrueFalse
  */
 public function testDoVoid($isSuccessful)
 {
     $order = $this->getModelMock('sales/order', ['getIncrementId']);
     $order->expects($this->any())->method('getIncrementId')->will($this->returnValue($this->orderId));
     $this->injectConfig(['apiOperationDoVoid' => 'paypal/void', 'apiService' => 'payments']);
     list($request, $reply) = $this->mockDoVoidPayloads($isSuccessful);
     $this->sdk->expects($this->any())->method('getRequestBody')->will($this->returnValue($request));
     // test setExpressCheckout
     $api = $this->getModelMock('ebayenterprise_paypal/express_api', ['sendRequest']);
     $api->expects($this->any())->method('sendRequest')->will($this->returnValue($reply));
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($api, ['helper' => $this->helper, 'coreHelper' => $this->coreHelper]);
     if (!$isSuccessful) {
         $message = EbayEnterprise_PayPal_Model_Express_Api::EBAYENTERPRISE_PAYPAL_API_FAILED;
         $this->setExpectedException('EbayEnterprise_PayPal_Exception', $message);
     }
     $result = $api->doVoid($order);
     $expectation = 'void/' . ($isSuccessful ? 'success' : 'failure');
     $this->assertEquals($this->expected($expectation)->getData(), $result);
 }
 /**
  * @see testProcess except testing when the exported files has no imported acknowledgment file
  */
 public function testProcessWhenNoAckFileOfExportedFeed()
 {
     $contextStub = $this->getHelperMock('ebayenterprise_magelog/context');
     $contextStub->expects($this->any())->method('getMetaData')->will($this->returnValue([]));
     $loggerStub = $this->getHelperMock('ebayenterprise_magelog/data');
     $loggerStub->expects($this->once())->method('critical');
     $exportedFiles = array('path/to/exported/files/some_exported_file.xml');
     $importedFiles = [];
     $resendable = true;
     $ackMock = $this->getModelMockBuilder('ebayenterprise_catalog/feed_ack')->setMethods(['_listFilesByCfgKey', '_getImportedAckFiles', '_getAck', '_isTimedOut', '_mvTo'])->getMock();
     $ackMock->expects($this->once())->method('_listFilesByCfgKey')->will($this->returnValue($exportedFiles));
     $ackMock->expects($this->once())->method('_getImportedAckFiles')->will($this->returnValue($importedFiles));
     $ackMock->expects($this->once())->method('_getAck')->with($this->identicalTo($exportedFiles[0]), $this->identicalTo($importedFiles))->will($this->returnValue(null));
     $ackMock->expects($this->once())->method('_isTimedOut')->with($this->identicalTo($exportedFiles[0]))->will($this->returnValue($resendable));
     $ackMock->expects($this->once())->method('_mvTo')->with($this->identicalTo($exportedFiles[0]), $this->identicalTo(EbayEnterprise_Catalog_Model_Feed_Ack::CFG_ERROR_DIRECTORY))->will($this->returnSelf());
     EcomDev_Utils_Reflection::setRestrictedPropertyValues($ackMock, ['_logger' => $loggerStub, '_context' => $contextStub]);
     $this->assertSame($ackMock, $ackMock->process());
 }