_object = new \Magento\Framework\DataObject();
}
/**
* Cleans up the environment after running a test.
*/
protected function tearDown()
{
$this->_object = null;
parent::tearDown();
}
/**
* Tests \Magento\Framework\DataObject->__construct()
*/
public function testConstruct()
{
$object = new \Magento\Framework\DataObject();
$this->assertEquals([], $object->getData());
$data = ['test' => 'test'];
$object = new \Magento\Framework\DataObject($data);
$this->assertEquals($data, $object->getData());
}
/**
* Tests \Magento\Framework\DataObject->addData()
*/
public function testAddData()
{
$this->_object->addData(['test' => 'value']);
$this->assertEquals('value', $this->_object->getData('test'));
$this->_object->addData(['test' => 'value1']);
$this->assertEquals('value1', $this->_object->getData('test'));
$this->_object->addData(['test2' => 'value2']);
$this->assertEquals(['test' => 'value1', 'test2' => 'value2'], $this->_object->getData());
}
/**
* Tests \Magento\Framework\DataObject->setData()
*/
public function testSetData()
{
$data = ['key1' => 'value1', 'key2' => 'value2', 'key3' => 3];
$this->_object->setData($data);
$this->assertEquals($data, $this->_object->getData());
$data['key1'] = 1;
$this->_object->setData('key1', 1);
$this->assertEquals($data, $this->_object->getData());
$this->_object->setData('key1');
$data['key1'] = null;
$this->assertEquals($data, $this->_object->getData());
}
/**
* Tests \Magento\Framework\DataObject->unsetData()
*/
public function testUnsetData()
{
$data = ['key1' => 'value1', 'key2' => 'value2', 'key3' => 3, 'key4' => 4];
$this->_object->setData($data);
$this->_object->unsetData('key1');
unset($data['key1']);
$this->assertEquals($data, $this->_object->getData());
$this->_object->unsetData(['key2', 'key3']);
unset($data['key2']);
unset($data['key3']);
$this->assertEquals($data, $this->_object->getData());
$this->_object->unsetData();
$this->assertEquals([], $this->_object->getData());
}
/**
* Tests \Magento\Framework\DataObject->getData()
*/
public function testGetData()
{
$data = [
'key1' => 'value1',
'key2' => [
'subkey2.1' => 'value2.1',
'subkey2.2' => 'multiline'. PHP_EOL .'string',
'subkey2.3' => new \Magento\Framework\DataObject(['test_key' => 'test_value']),
],
'key3' => 5,
];
foreach ($data as $key => $value) {
$this->_object->setData($key, $value);
}
$this->assertEquals($data, $this->_object->getData());
$this->assertEquals('value1', $this->_object->getData('key1'));
$this->assertEquals('value2.1', $this->_object->getData('key2/subkey2.1'));
$this->assertEquals('value2.1', $this->_object->getData('key2', 'subkey2.1'));
$this->assertEquals('string', $this->_object->getData('key2/subkey2.2', 1));
$this->assertEquals('test_value', $this->_object->getData('key2/subkey2.3', 'test_key'));
$this->assertNull($this->_object->getData('key3', 'test_key'));
}
public function testGetDataByPath()
{
$data = [
'key1' => 'value1',
'key2' => [
'subkey2.1' => 'value2.1',
'subkey2.2' => 'multiline
string',
'subkey2.3' => new \Magento\Framework\DataObject(['test_key' => 'test_value']),
],
];
foreach ($data as $key => $value) {
$this->_object->setData($key, $value);
}
$this->assertEquals('value1', $this->_object->getDataByPath('key1'));
$this->assertEquals('value2.1', $this->_object->getDataByPath('key2/subkey2.1'));
$this->assertEquals('test_value', $this->_object->getDataByPath('key2/subkey2.3/test_key'));
$this->assertNull($this->_object->getDataByPath('empty'));
$this->assertNull($this->_object->getDataByPath('empty/path'));
}
public function testGetDataByKey()
{
$this->_object->setData('key', 'value');
$this->assertEquals('value', $this->_object->getDataByKey('key'));
$this->assertNull($this->_object->getDataByKey('empty'));
}
/**
* Tests \Magento\Framework\DataObject->setDataUsingMethod()
*/
public function testSetGetDataUsingMethod()
{
$mock = $this->getMock('Magento\Framework\DataObject', ['setTestData', 'getTestData']);
$mock->expects($this->once())->method('setTestData')->with($this->equalTo('data'));
$mock->expects($this->once())->method('getTestData');
$mock->setDataUsingMethod('test_data', 'data');
$mock->getDataUsingMethod('test_data');
}
/**
* Tests \Magento\Framework\DataObject->hasData()
*/
public function testHasData()
{
$this->assertFalse($this->_object->hasData());
$this->assertFalse($this->_object->hasData('key'));
$this->_object->setData('key', 'value');
$this->assertTrue($this->_object->hasData('key'));
}
/**
* Tests \Magento\Framework\DataObject->toArray()
*/
public function testToArray()
{
$this->assertEquals([], $this->_object->toArray());
$this->assertEquals(['key' => null], $this->_object->toArray(['key']));
$this->_object->setData('key1', 'value1');
$this->_object->setData('key2', 'value2');
$this->assertEquals(['key1' => 'value1'], $this->_object->toArray(['key1']));
$this->assertEquals(['key2' => 'value2'], $this->_object->convertToArray(['key2']));
}
/**
* Tests \Magento\Framework\DataObject->toXml()
*/
public function testToXml()
{
$this->_object->setData('key1', 'value1');
$this->_object->setData('key2', 'value2');
$xml = '-
';
$this->assertEquals($xml, $this->_object->toXml());
$xml = '-
';
$this->assertEquals($xml, $this->_object->toXml(['key2']));
$xml = '
';
$this->assertEquals($xml, $this->_object->toXml([], 'my_item'));
$xml = '
';
$this->assertEquals($xml, $this->_object->toXml([], false));
$xml = '
-
';
$this->assertEquals($xml, $this->_object->toXml([], 'item', true));
$xml = '
-
value1
value2
';
$this->assertEquals($xml, $this->_object->convertToXml([], 'item', true, false));
}
/**
* Tests \Magento\Framework\DataObject->toJson()
*/
public function testToJson()
{
$this->_object->setData('key1', 'value1');
$this->_object->setData('key2', 'value2');
$this->assertEquals('{"key1":"value1","key2":"value2"}', $this->_object->toJson());
$this->assertEquals('{"key1":"value1"}', $this->_object->toJson(['key1']));
$this->assertEquals('{"key1":"value1","key":null}', $this->_object->convertToJson(['key1', 'key']));
}
/**
* Tests \Magento\Framework\DataObject->toString()
*/
public function testToString()
{
$this->_object->setData('key1', 'value1');
$this->_object->setData('key2', 'value2');
$this->assertEquals('value1, value2', $this->_object->toString());
$this->assertEquals('test value1 with value2', $this->_object->toString('test {{key1}} with {{key2}}'));
}
/**
* Tests \Magento\Framework\DataObject->__call()
*
* @expectedException \Magento\Framework\Exception\LocalizedException
*/
public function testCall()
{
$this->_object->setData('key', 'value');
$this->_object->setTest('test');
$this->assertEquals('test', $this->_object->getData('test'));
$this->assertEquals($this->_object->getData('test'), $this->_object->getTest());
$this->assertTrue($this->_object->hasTest());
$this->_object->unsTest();
$this->assertNull($this->_object->getData('test'));
$this->_object->testTest();
}
/**
* Tests \Magento\Framework\DataObject->__get()
*/
public function testGetSet()
{
$this->_object->test = 'test';
$this->assertEquals('test', $this->_object->test);
$this->_object->testTest = 'test';
$this->assertEquals('test', $this->_object->testTest);
}
/**
* Tests \Magento\Framework\DataObject->isEmpty()
*/
public function testIsEmpty()
{
$this->assertTrue($this->_object->isEmpty());
$this->_object->setData('test', 'test');
$this->assertFalse($this->_object->isEmpty());
}
/**
* Tests \Magento\Framework\DataObject->serialize()
*/
public function testSerialize()
{
$this->_object->setData('key1', 'value1');
$this->_object->setData('key2', 'value2');
$this->assertEquals('key1="value1" key2="value2"', $this->_object->serialize());
$this->assertEquals(
'key1:\'value1\'_key2:\'value2\'',
$this->_object->serialize(['key', 'key1', 'key2'], ':', '_', '\'')
);
}
/**
* Tests \Magento\Framework\DataObject->debug()
*/
public function testDebug()
{
$data = ['key1' => 'value1', 'key2' => ['test'], 'key3' => $this->_object];
foreach ($data as $key => $value) {
$this->_object->setData($key, $value);
}
$debug = $data;
unset($debug['key3']);
$debug['key3 (Magento\Framework\DataObject)'] = '*** RECURSION ***';
$this->assertEquals($debug, $this->_object->debug());
}
/**
* Tests \Magento\Framework\DataObject->offsetSet()
*/
public function testOffset()
{
$this->_object->offsetSet('key1', 'value1');
$this->assertTrue($this->_object->offsetExists('key1'));
$this->assertFalse($this->_object->offsetExists('key2'));
$this->assertEquals('value1', $this->_object->offsetGet('key1'));
$this->assertNull($this->_object->offsetGet('key2'));
$this->_object->offsetUnset('key1');
$this->assertFalse($this->_object->offsetExists('key1'));
}
/**
* Tests _underscore method directly
*
* @dataProvider underscoreDataProvider
*/
public function testUnderscore($input, $expectedOutput)
{
$refObject = new \ReflectionObject($this->_object);
$refMethod = $refObject->getMethod('_underscore');
$refMethod->setAccessible(true);
$output = $refMethod->invoke($this->_object, $input);
$this->assertEquals($expectedOutput, $output);
}
public function underscoreDataProvider()
{
return [
'Test 1' => ['Stone1Color', 'stone_1_color'],
'Test 2' => ['StoneColor', 'stone_color'],
'Test 3' => ['StoneToXml', 'stone_to_xml'],
'Test 4' => ['1StoneColor', '1_stone_color'],
'Test 5' => ['getCcLast4', 'get_cc_last_4'],
'Test 6' => ['99Bottles', '99_bottles'],
'Test 7' => ['XApiLogin', 'x_api_login']
];
}
}