@@ -72,4 +72,60 @@ public function testDataConvertErrorReporting()
72
72
$ queryModifier
73
73
);
74
74
}
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
+ }
75
131
}
0 commit comments