Skip to content

Commit

Permalink
Merge pull request #179 from magento-firedrakes/MAGETWO-44191
Browse files Browse the repository at this point in the history
[Firedrakes && South] Bugfixes
  • Loading branch information
Logvin, Michael(mlogvin) authored and Logvin, Michael(mlogvin) committed Nov 13, 2015
2 parents ca97943 + 63cd8a3 commit c044a2d
Show file tree
Hide file tree
Showing 8 changed files with 289 additions and 39 deletions.
13 changes: 3 additions & 10 deletions app/code/Magento/Customer/Model/CustomerExtractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,17 +65,10 @@ public function __construct(
public function extract($formCode, RequestInterface $request)
{
$customerForm = $this->formFactory->create('customer', $formCode);

$customerData = $customerForm->extractData($request);
$allowedAttributes = $customerForm->getAllowedAttributes();
$isGroupIdEmpty = true;
$customerData = [];
foreach ($allowedAttributes as $attribute) {
$attributeCode = $attribute->getAttributeCode();
if ($attributeCode == 'group_id') {
$isGroupIdEmpty = false;
}
$customerData[$attributeCode] = $request->getParam($attributeCode);
}
$isGroupIdEmpty = isset($allowedAttributes['group_id']);

$customerDataObject = $this->customerFactory->create();
$this->dataObjectHelper->populateWithArray(
$customerDataObject,
Expand Down
161 changes: 161 additions & 0 deletions app/code/Magento/Customer/Test/Unit/Model/CustomerExtractorTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Customer\Test\Unit\Model;

use Magento\Customer\Model\CustomerExtractor;

class CustomerExtractorTest extends \PHPUnit_Framework_TestCase
{
/** @var CustomerExtractor */
protected $customerExtractor;

/** @var \Magento\Customer\Model\Metadata\FormFactory|\PHPUnit_Framework_MockObject_MockObject */
protected $formFactory;

/** @var \Magento\Customer\Api\Data\CustomerInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject */
protected $customerFactory;

/** @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject */
protected $storeManager;

/** @var \Magento\Customer\Api\GroupManagementInterface|\PHPUnit_Framework_MockObject_MockObject */
protected $customerGroupManagement;

/** @var \Magento\Framework\Api\DataObjectHelper|\PHPUnit_Framework_MockObject_MockObject */
protected $dataObjectHelper;

/** @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject */
protected $request;

/** @var \Magento\Customer\Model\Metadata\Form|\PHPUnit_Framework_MockObject_MockObject */
protected $customerForm;

/** @var \Magento\Customer\Api\Data\CustomerInterface|\PHPUnit_Framework_MockObject_MockObject */
protected $customerData;

/** @var \Magento\Store\Api\Data\StoreInterface|\PHPUnit_Framework_MockObject_MockObject */
protected $store;

/** @var \Magento\Customer\Api\Data\GroupInterface|\PHPUnit_Framework_MockObject_MockObject */
protected $customerGroup;

public function setUp()
{
$this->formFactory = $this->getMockForAbstractClass(
'Magento\Customer\Model\Metadata\FormFactory',
[],
'',
false,
false,
true,
['create']
);
$this->customerFactory = $this->getMockForAbstractClass(
'Magento\Customer\Api\Data\CustomerInterfaceFactory',
[],
'',
false,
false,
true,
['create']
);
$this->storeManager = $this->getMockForAbstractClass(
'Magento\Store\Model\StoreManagerInterface',
[],
'',
false
);
$this->customerGroupManagement = $this->getMockForAbstractClass(
'Magento\Customer\Api\GroupManagementInterface',
[],
'',
false
);
$this->dataObjectHelper = $this->getMock('Magento\Framework\Api\DataObjectHelper', [], [], '', false);
$this->request = $this->getMockForAbstractClass('Magento\Framework\App\RequestInterface', [], '', false);
$this->customerForm = $this->getMock('Magento\Customer\Model\Metadata\Form', [], [], '', false);
$this->customerData = $this->getMockForAbstractClass(
'Magento\Customer\Api\Data\CustomerInterface',
[],
'',
false
);
$this->store = $this->getMockForAbstractClass(
'Magento\Store\Api\Data\StoreInterface',
[],
'',
false
);
$this->customerGroup = $this->getMockForAbstractClass(
'Magento\Customer\Api\Data\GroupInterface',
[],
'',
false
);
$this->customerExtractor = new CustomerExtractor(
$this->formFactory,
$this->customerFactory,
$this->storeManager,
$this->customerGroupManagement,
$this->dataObjectHelper
);
}

public function testExtract()
{
$customerData = [
'firstname' => 'firstname',
'lastname' => 'firstname',
'email' => 'email.example.com',
];

$this->formFactory->expects($this->once())
->method('create')
->with('customer', 'form-code')
->willReturn($this->customerForm);
$this->customerForm->expects($this->once())
->method('extractData')
->with($this->request)
->willReturn($customerData);
$this->customerForm->expects($this->once())
->method('getAllowedAttributes')
->willReturn(['group_id' => 'attribute object']);
$this->customerFactory->expects($this->once())
->method('create')
->willReturn($this->customerData);
$this->dataObjectHelper->expects($this->once())
->method('populateWithArray')
->with($this->customerData, $customerData, '\Magento\Customer\Api\Data\CustomerInterface')
->willReturn($this->customerData);
$this->storeManager->expects($this->once())
->method('getStore')
->willReturn($this->store);
$this->store->expects($this->exactly(2))
->method('getId')
->willReturn(1);
$this->customerGroupManagement->expects($this->once())
->method('getDefaultGroup')
->with(1)
->willReturn($this->customerGroup);
$this->customerGroup->expects($this->once())
->method('getId')
->willReturn(1);
$this->customerData->expects($this->once())
->method('setGroupId')
->with(1);
$this->store->expects($this->once())
->method('getWebsiteId')
->willReturn(1);
$this->customerData->expects($this->once())
->method('setWebsiteId')
->with(1);
$this->customerData->expects($this->once())
->method('setStoreId')
->with(1);

$this->assertSame($this->customerData, $this->customerExtractor->extract('form-code', $this->request));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -135,23 +135,6 @@
</item>
</argument>
</column>
<!-- <column name="remote_addr">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">IP Address</item>
</item>
</argument>
</column> -->
<column name="first_visit_at" class="Magento\Ui\Component\Listing\Columns\Date">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="filter" xsi:type="string">dateRange</item>
<item name="dataType" xsi:type="string">date</item>
<item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item>
<item name="label" xsi:type="string" translate="true">Session Start Time</item>
</item>
</argument>
</column>
<column name="last_visit_at" class="Magento\Ui\Component\Listing\Columns\Date">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
Expand All @@ -173,12 +156,5 @@
</item>
</argument>
</column>
<!-- <column name="last_url">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Last URL</item>
</item>
</argument>
</column> -->
</columns>
</listing>
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,14 @@ protected function _construct()
*/
public function getTotals()
{
return $this->getQuote()->getTotals();
$this->getQuote()->setTotalsCollectedFlag(false);
$this->getQuote()->collectTotals();
if ($this->getQuote()->isVirtual()) {
$totals = $this->getQuote()->getBillingAddress()->getTotals();
} else {
$totals = $this->getQuote()->getShippingAddress()->getTotals();
}
return $totals;
}

/**
Expand Down
111 changes: 111 additions & 0 deletions app/code/Magento/Sales/Test/Unit/Block/Order/Create/TotalsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\Sales\Test\Unit\Block\Order\Create;

/**
* Class TotalsTest
*/
class TotalsTest extends \PHPUnit_Framework_TestCase
{
/**
* @var \PHPUnit_Framework_MockObject_MockObject
*/
protected $shippingAddressMock;

/**
* @var \PHPUnit_Framework_MockObject_MockObject
*/
protected $billingAddressMock;

/**
* @var \Magento\Sales\Block\Adminhtml\Order\Create\Totals
*/
protected $totals;

/**
* @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
*/
protected $helperManager;

/**
* @var \Magento\Backend\Model\Session\Quote|\PHPUnit_Framework_MockObject_MockObject
*/
protected $sessionQuoteMock;

/**
* @var \Magento\Quote\Model\Quote|\PHPUnit_Framework_MockObject_MockObject
*/
protected $quoteMock;

/**
* Init
*/
protected function setUp()
{
$this->helperManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
$this->sessionQuoteMock = $this->getMockBuilder('Magento\Backend\Model\Session\Quote')
->disableOriginalConstructor()
->getMock();
$this->quoteMock = $this->getMockBuilder('Magento\Quote\Model\Quote')
->disableOriginalConstructor()
->setMethods([
'setTotalsCollectedFlag',
'collectTotals',
'getTotals',
'isVirtual',
'getBillingAddress',
'getShippingAddress'
])
->getMock();
$this->shippingAddressMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Address')
->disableOriginalConstructor()
->getMock();
$this->billingAddressMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Address')
->disableOriginalConstructor()
->getMock();

$this->quoteMock->expects($this->any())
->method('getBillingAddress')
->willreturn($this->billingAddressMock);
$this->quoteMock->expects($this->any())
->method('getShippingAddress')
->willreturn($this->shippingAddressMock);
$this->sessionQuoteMock->expects($this->any())->method('getQuote')->willReturn($this->quoteMock);
$this->totals = $this->helperManager->getObject(
'Magento\Sales\Block\Adminhtml\Order\Create\Totals',
['sessionQuote' => $this->sessionQuoteMock]
);
}

/**
* @dataProvider totalsDataProvider
*/
public function testGetTotals($isVirtual)
{
$expected = 'expected';
$this->quoteMock->expects($this->at(0))->method('setTotalsCollectedFlag')->with(false);
$this->quoteMock->expects($this->at(1))->method('collectTotals');
$this->quoteMock->expects($this->once())->method('isVirtual')->willreturn($isVirtual);
if ($isVirtual) {
$this->billingAddressMock->expects($this->once())->method('getTotals')->willReturn($expected);
} else {
$this->shippingAddressMock->expects($this->once())->method('getTotals')->willReturn($expected);
}
$this->assertEquals($expected, $this->totals->getTotals());
}

/**
* @return array
*/
public function totalsDataProvider()
{
return [
[true],
[false]
];
}
}
2 changes: 1 addition & 1 deletion lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php
Original file line number Diff line number Diff line change
Expand Up @@ -3628,7 +3628,7 @@ protected function _prepareSqlDateCondition($condition, $key)
$result = $this->formatDate($condition[$key]);
}
} else {
$result = $this->formatDate($condition[$key]);
$result = $this->formatDate($condition[$key], false);
}

return $result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,17 @@
* To aid in security, the cookie manager will make it possible for the application to indicate if the cookie contains
* sensitive data so that extra protection can be added to the contents of the cookie as well as how the browser
* stores the cookie.
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class PhpCookieManager implements CookieManagerInterface
{
/**#@+
* Constants for Cookie manager.
* RFC 2109 - Page 15
* http://www.ietf.org/rfc/rfc2109.txt
* http://www.ietf.org/rfc/rfc6265.txt
*/
const MAX_NUM_COOKIES = 20;
const MAX_NUM_COOKIES = 50;
const MAX_COOKIE_SIZE = 4096;
const EXPIRE_NOW_TIME = 1;
const EXPIRE_AT_END_OF_SESSION_TIME = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class PhpCookieManagerTest extends \PHPUnit_Framework_TestCase
const COOKIE_HTTP_ONLY = true;
const COOKIE_NOT_HTTP_ONLY = false;
const COOKIE_EXPIRE_END_OF_SESSION = 0;
const MAX_NUM_COOKIES = 20;
const MAX_NUM_COOKIES = 50;
const MAX_COOKIE_SIZE = 4096;

/**
Expand Down

0 comments on commit c044a2d

Please sign in to comment.