@@ -34,6 +34,11 @@ class ExportTest extends TestCase
34
34
*/
35
35
protected $ _exportConfigMock ;
36
36
37
+ /**
38
+ * @var AbstractEntity|MockObject
39
+ */
40
+ private $ abstractMockEntity ;
41
+
37
42
/**
38
43
* Return mock for \Magento\ImportExport\Model\Export class
39
44
*
@@ -43,8 +48,7 @@ protected function _getMageImportExportModelExportMock()
43
48
{
44
49
$ this ->_exportConfigMock = $ this ->getMockForAbstractClass (ConfigInterface::class);
45
50
46
- /** @var $abstractMockEntity \Magento\ImportExport\Model\Export\AbstractEntity */
47
- $ abstractMockEntity = $ this ->getMockForAbstractClass (
51
+ $ this ->abstractMockEntity = $ this ->getMockForAbstractClass (
48
52
AbstractEntity::class,
49
53
[],
50
54
'' ,
@@ -75,28 +79,55 @@ protected function _getMageImportExportModelExportMock()
75
79
$ exportAdapterFac = $ this ->createMock (\Magento \ImportExport \Model \Export \Adapter \Factory::class);
76
80
/** @var \Magento\ImportExport\Model\Export $mockModelExport */
77
81
$ mockModelExport = $ this ->getMockBuilder (Export::class)
78
- ->setMethods (['getEntityAdapter ' , '_getEntityAdapter ' , '_getWriter ' ])
82
+ ->setMethods (['getEntityAdapter ' , '_getEntityAdapter ' , '_getWriter ' , ' setWriter ' ])
79
83
->setConstructorArgs ([$ logger , $ filesystem , $ this ->_exportConfigMock , $ entityFactory , $ exportAdapterFac ])
80
84
->getMock ();
81
85
$ mockModelExport ->expects (
82
86
$ this ->any ()
83
87
)->method (
84
88
'getEntityAdapter '
85
89
)->willReturn (
86
- $ abstractMockEntity
90
+ $ this -> abstractMockEntity
87
91
);
88
92
$ mockModelExport ->expects (
89
93
$ this ->any ()
90
94
)->method (
91
95
'_getEntityAdapter '
92
96
)->willReturn (
93
- $ abstractMockEntity
97
+ $ this ->abstractMockEntity
98
+ );
99
+ $ mockModelExport ->method (
100
+ 'setWriter '
101
+ )->willReturn (
102
+ $ this ->abstractMockEntity
94
103
);
95
104
$ mockModelExport ->expects ($ this ->any ())->method ('_getWriter ' )->willReturn ($ mockAdapterTest );
96
105
97
106
return $ mockModelExport ;
98
107
}
99
108
109
+ /**
110
+ * Tests that export doesn't use `trim` function while counting the number of exported rows.
111
+ *
112
+ * Using PHP `trim` function allocates the same amount of memory as export result and leads
113
+ * to `out of memory` error.
114
+ */
115
+ public function testExportDoesntTrimResult ()
116
+ {
117
+ $ model = $ this ->_getMageImportExportModelExportMock ();
118
+ $ this ->abstractMockEntity ->method ('export ' )
119
+ ->willReturn ("export data \n\n" );
120
+ $ model ->setData ([
121
+ Export::FILTER_ELEMENT_GROUP => [],
122
+ 'entity ' => 'catalog_product '
123
+ ]);
124
+ $ model ->export ();
125
+ $ this ->assertStringContainsString (
126
+ 'Exported 2 rows ' ,
127
+ var_export ($ model ->getFormatedLogTrace (), true )
128
+ );
129
+ }
130
+
100
131
/**
101
132
* Test get file name with adapter file name
102
133
*/
0 commit comments