Skip to content

Commit

Permalink
MAGETWO-36706: [GITHUB] Won't accept valid Brazil monetary value as i…
Browse files Browse the repository at this point in the history
…nput #1192

- unit tests
  • Loading branch information
Cristian Partica committed Jul 6, 2015
1 parent 18bb7bb commit 36413b8
Show file tree
Hide file tree
Showing 2 changed files with 149 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ class HelperTest extends \PHPUnit_Framework_TestCase
*/
protected $websiteMock;

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

/**
* @var int
*/
Expand All @@ -66,6 +71,7 @@ protected function setUp()
$this->storeMock = $this->getMock('Magento\Store\Model\Store', [], [], '', false);
$this->websiteMock = $this->getMock('Magento\Store\Model\Website', [], [], '', false);
$this->storeManagerMock = $this->getMock('Magento\Store\Model\StoreManagerInterface');
$this->dateFilterMock = $this->getMock('\Magento\Framework\Stdlib\DateTime\Filter\Date', [], [], '', false);

$this->stockFilterMock = $this->getMock(
'Magento\Catalog\Controller\Adminhtml\Product\Initialization\StockDataFilter',
Expand All @@ -91,6 +97,7 @@ protected function setUp()
'setWebsiteIds',
'isLockedAttribute',
'lockAttribute',
'getAttributes',
'unlockAttribute',
'getOptionsReadOnly',
'setProductOptions',
Expand Down Expand Up @@ -129,14 +136,45 @@ public function testInitialize()
$this->storeManagerMock,
$this->stockFilterMock,
$this->productLinksMock,
$this->jsHelperMock
$this->jsHelperMock,
$this->dateFilterMock
);

$productData = [
'stock_data' => ['stock_data'],
'options' => ['option1', 'option2']
];

$attributeNonDate = $this->getMock('Magento\Catalog\Model\Resource\Eav\Attribute', [], [], '', false);
$attributeDate = $this->getMock('Magento\Catalog\Model\Resource\Eav\Attribute', [], [], '', false);

$attributeNonDateBackEnd =
$this->getMock('Magento\Eav\Model\Entity\Attribute\Backend\DefaultBackend', [], [], '', false);
$attributeDateBackEnd =
$this->getMock('Magento\Eav\Model\Entity\Attribute\Backend\Datetime', [], [], '', false);

$attributeNonDate->expects($this->any())
->method('getBackend')
->will($this->returnValue($attributeNonDateBackEnd));

$attributeDate->expects($this->any())
->method('getBackend')
->will($this->returnValue($attributeDateBackEnd));


$attributeNonDateBackEnd->expects($this->any())
->method('getType')
->will($this->returnValue('non-datetime'));

$attributeDateBackEnd->expects($this->any())
->method('getType')
->will($this->returnValue('datetime'));

$attributesArray = [
$attributeNonDate,
$attributeDate
];

$useDefaults = ['attributeCode1', 'attributeCode2'];

$this->requestMock->expects($this->at(0))
Expand Down Expand Up @@ -186,6 +224,10 @@ public function testInitialize()
->method('lockAttribute')
->with('media');

$this->productMock->expects($this->once())
->method('getAttributes')
->will($this->returnValue($attributesArray));

$productData['category_ids'] = [];
$productData['website_ids'] = [];
$this->productMock->expects($this->once())
Expand Down Expand Up @@ -256,7 +298,8 @@ public function testMergeProductOptions($productOptions, $defaultOptions, $expec
$this->storeManagerMock,
$this->stockFilterMock,
$this->productLinksMock,
$this->jsHelperMock
$this->jsHelperMock,
$this->dateFilterMock
);
$result = $this->helper->mergeProductOptions($productOptions, $defaultOptions);
$this->assertEquals($expectedResults, $result);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Catalog\Test\Unit\Model\Product\Attribute\Backend;

class WeightTest extends \PHPUnit_Framework_TestCase
{
/**
* @var \Magento\Catalog\Model\Product\Attribute\Backend\Weight
*/
protected $model;

protected function setUp()
{
$objectHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);

// we want to use an actual implementation of \Magento\Framework\Locale\FormatInterface
$scopeResolver = $this->getMockForAbstractClass('\Magento\Framework\App\ScopeResolverInterface', [], '', false);
$localeResolver = $this->getMockForAbstractClass('\Magento\Framework\Locale\ResolverInterface', [], '', false);
$currencyFactory = $this->getMock('\Magento\Directory\Model\CurrencyFactory', [], [], '', false);
$localeFormat = $objectHelper->getObject(
'Magento\Framework\Locale\Format',
[
'scopeResolver' => $scopeResolver,
'localeResolver' => $localeResolver,
'currencyFactory' => $currencyFactory,
]
);

// the model we are testing
$this->model = $objectHelper->getObject(
'Magento\Catalog\Model\Product\Attribute\Backend\Weight',
['localeFormat' => $localeFormat]
);

$attribute = $this->getMockForAbstractClass(
'\Magento\Eav\Model\Entity\Attribute\AbstractAttribute',
[],
'',
false
);
$this->model->setAttribute($attribute);
}

/**
* Tests for the cases that expect to pass validation
*
* @dataProvider dataProviderValidate
*/
public function testValidate($value)
{
$object = $this->getMock('Magento\Catalog\Model\Product', [], [], '', false);
$object->expects($this->once())->method('getData')->willReturn($value);

$this->assertTrue($this->model->validate($object));
}

/**
* @return array
*/
public function dataProviderValidate()
{
return [
'US simple' => ['1234.56'],
'US full' => ['123,456.78'],
'Brazil' => ['123.456,78'],
'India' => ['1,23,456.78'],
'Lebanon' => ['1 234'],
'zero' => ['0.00'],
'NaN becomes zero' => ['kiwi'],
];
}

/**
* Tests for the cases that expect to fail validation
*
* @expectedException \Magento\Framework\Exception\LocalizedException
* @dataProvider dataProviderValidateForFailure
*/
public function testValidateForFailure($value)
{
$object = $this->getMock('Magento\Catalog\Model\Product', [], [], '', false);
$object->expects($this->once())->method('getData')->willReturn($value);

$this->model->validate($object);
$this->fail('Expected the following value to NOT validate: ' . $value);
}

/**
* @return array
*/
public function dataProviderValidateForFailure()
{
return [
'negative US simple' => ['-1234.56'],
'negative US full' => ['-123,456.78'],
'negative Brazil' => ['-123.456,78'],
'negative India' => ['-1,23,456.78'],
'negative Lebanon' => ['-1 234'],
];
}
}

0 comments on commit 36413b8

Please sign in to comment.