Skip to content

Commit 83b8759

Browse files
committed
MAGETWO-64802: Implement corrupted data reporting for fieldDataConverter
- covered skipping already converted data with integration test
1 parent 1f3998d commit 83b8759

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

dev/tests/integration/testsuite/Magento/Framework/DB/DataConverter/DataConverterTest.php

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,60 @@ public function testDataConvertErrorReporting()
7272
$queryModifier
7373
);
7474
}
75+
76+
/**
77+
* @magentoAppArea adminhtml
78+
* @magentoDbIsolation enabled
79+
* @magentoDataFixture Magento/Framework/DB/DataConverter/_files/broken_admin_user.php
80+
*/
81+
public function testAlreadyConvertedDataSkipped()
82+
{
83+
/** @var \Magento\User\Model\User $user */
84+
$user = $this->objectManager->create(\Magento\User\Model\User::class);
85+
$user->loadByUsername('broken_admin');
86+
$userId = $user->getId();
87+
88+
/** @var Serialize $serializer */
89+
$serializer = $this->objectManager->create(Serialize::class);
90+
$serializedData = $serializer->serialize(['some' => 'data', 'other' => 'other data']);
91+
$serializedDataLength = strlen($serializedData);
92+
$brokenSerializedData = substr($serializedData, 0, $serializedDataLength - 6);
93+
/** @var AdapterInterface $adapter */
94+
$adapter = $user->getResource()->getConnection();
95+
$adapter->update(
96+
$user->getResource()->getTable('admin_user'),
97+
['extra' => $brokenSerializedData],
98+
"user_id={$userId}"
99+
);
100+
101+
$adapter->update(
102+
$user->getResource()->getTable('admin_user'),
103+
['extra' => '[]'],
104+
"user_id={$userId}"
105+
);
106+
107+
/** @var InQueryModifier $queryModifier */
108+
$queryModifier = $this->objectManager->create(InQueryModifier::class, ['user_id' => $userId]);
109+
110+
/** @var SerializedToJson $dataConverter */
111+
$dataConverter = $this->objectManager->get(SerializedToJson::class);
112+
113+
/** @var FieldDataConverter $fieldDataConverter */
114+
$fieldDataConverter = $this->objectManager->create(
115+
FieldDataConverter::class,
116+
[
117+
'dataConverter' => $dataConverter
118+
]
119+
);
120+
$fieldDataConverter->convert(
121+
$adapter,
122+
'admin_user',
123+
'user_id',
124+
'extra',
125+
$queryModifier
126+
);
127+
128+
$user->load($userId);
129+
$this->assertEquals([], $user->getExtra());
130+
}
75131
}

0 commit comments

Comments
 (0)