1313 */
1414class StreamImporterTest extends TestCase {
1515
16+ private $ tmp_dir ;
17+
1618 protected function setUp (): void {
1719 parent ::setUp ();
1820
1921 if ( ! isset ( $ _SERVER ['SERVER_SOFTWARE ' ] ) || $ _SERVER ['SERVER_SOFTWARE ' ] !== 'PHP.wasm ' ) {
2022 // $this->markTestSkipped( 'Test only runs in Playground' );
2123 }
24+
25+ $ this ->tmp_dir = sys_get_temp_dir () . '/uploads- ' . uniqid ();
26+ @mkdir ( $ this ->tmp_dir , 0777 , true );
27+ }
28+
29+ protected function tearDown (): void {
30+ parent ::tearDown ();
31+ if ( is_dir ( $ this ->tmp_dir ) ) {
32+ array_map ( 'unlink ' , glob ( "$ this ->tmp_dir /*.* " ) );
33+ rmdir ( $ this ->tmp_dir );
34+ }
2235 }
2336
2437 /**
@@ -39,19 +52,10 @@ public function clean_up_uploads(): void {
3952 }
4053 }
4154
42- public function test_import_simple_wxr () {
43- $ import = data_liberation_import ( __DIR__ . '/wxr/small-export.xml ' );
44-
45- $ this ->assertTrue ( $ import );
46- }
47-
4855 /**
4956 *
5057 */
5158 public function test_stylish_press_local_file () {
52- $ uploads_path = sys_get_temp_dir () . '/uploads ' ;
53- @mkdir ( $ uploads_path , 0777 , true );
54-
5559 $ sink = new class () {
5660 public $ imported_entities = [];
5761 public $ imported_attachments = [];
@@ -69,7 +73,7 @@ public function import_attachment( $filepath, $post_id = null ) {
6973 $ importer = StreamImporter::create_for_wxr_file ( __DIR__ . '/wxr/stylish-press.xml ' , [
7074 'new_site_content_root_url ' => 'http://127.0.0.1:9400 ' ,
7175 'new_media_root_url ' => 'http://127.0.0.1:9400/wp-content/uploads ' ,
72- 'uploads_path ' => $ uploads_path ,
76+ 'uploads_path ' => $ this -> tmp_dir ,
7377 'entity_sink ' => $ sink
7478 ] );
7579 while ( $ importer ->next_step () || $ importer ->advance_to_next_stage () ) {
@@ -82,9 +86,6 @@ public function import_attachment( $filepath, $post_id = null ) {
8286 *
8387 */
8488 public function test_stylish_press_remote_stream () {
85- $ uploads_path = sys_get_temp_dir () . '/uploads ' ;
86- @mkdir ( $ uploads_path , 0777 , true );
87-
8889 $ sink = new class () {
8990 public $ imported_entities = [];
9091 public $ imported_attachments = [];
@@ -112,7 +113,7 @@ public function import_attachment( $filepath, $post_id = null ) {
112113 $ importer = StreamImporter::create ( $ entity_reader_factory , [
113114 'new_site_content_root_url ' => 'http://127.0.0.1:9400 ' ,
114115 'new_media_root_url ' => 'http://127.0.0.1:9400/wp-content/uploads ' ,
115- 'uploads_path ' => $ uploads_path ,
116+ 'uploads_path ' => $ this -> tmp_dir ,
116117 'entity_sink ' => $ sink
117118 ] );
118119 while ( $ importer ->next_step () || $ importer ->advance_to_next_stage () ) {
@@ -123,21 +124,32 @@ public function import_attachment( $filepath, $post_id = null ) {
123124
124125 public function test_frontloading () {
125126 $ wxr_path = __DIR__ . '/wxr/frontloading-1-attachment.xml ' ;
126- $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path );
127+ $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path , [
128+ 'new_site_content_root_url ' => 'http://127.0.0.1:9400 ' ,
129+ 'new_media_root_url ' => 'http://127.0.0.1:9400/wp-content/uploads ' ,
130+ 'uploads_path ' => $ this ->tmp_dir ,
131+ ] );
127132 $ this ->skip_to_stage ( $ importer , StreamImporter::STAGE_FRONTLOAD_ASSETS );
128133 while ( $ importer ->next_step () ) {
129134 // noop
130135 }
131- $ files = glob ( ' /wordpress/wp-content/uploads /* ' );
136+ $ files = glob ( $ this -> tmp_dir . ' /* ' );
132137 $ this ->assertCount ( 1 , $ files );
133138 $ this ->assertStringEndsWith ( '.jpg ' , $ files [0 ] );
134139 }
135140
136141 public function test_resume_frontloading () {
142+ $ this ->markTestSkipped ( 'The tested file is getting downloaded too quickly for this test to work. There is nothing to resume. @TODO: use a larger file or a smaller chunk size. ' );
137143 $ wxr_path = __DIR__ . '/wxr/frontloading-1-attachment.xml ' ;
138- $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path );
144+ $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path , [
145+ 'entity_sink ' => '' ,
146+ 'new_site_content_root_url ' => 'http://127.0.0.1:9400 ' ,
147+ 'new_media_root_url ' => 'http://127.0.0.1:9400/wp-content/uploads ' ,
148+ 'uploads_path ' => $ this ->tmp_dir ,
149+ ] );
139150 $ this ->skip_to_stage ( $ importer , StreamImporter::STAGE_FRONTLOAD_ASSETS );
140151
152+ $ progress = $ importer ->get_frontloading_progress ();
141153 $ progress_url = null ;
142154 $ progress_value = null ;
143155 for ( $ i = 0 ; $ i < 20 ; ++ $ i ) {
@@ -160,21 +172,25 @@ public function test_resume_frontloading() {
160172 $ this ->assertGreaterThan ( 0 , $ progress_value ['total ' ] );
161173
162174 $ cursor = $ importer ->get_reentrancy_cursor ();
163- $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path , array (), $ cursor );
175+ $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path , [
176+ 'new_site_content_root_url ' => 'http://127.0.0.1:9400 ' ,
177+ 'new_media_root_url ' => 'http://127.0.0.1:9400/wp-content/uploads ' ,
178+ 'uploads_path ' => $ this ->tmp_dir ,
179+ ], $ cursor );
164180 // Rewind back to the entity we were on.
165181 $ this ->assertTrue ( $ importer ->next_step () );
166182
167183 // Restart the download of the same entity – from scratch.
168184 $ progress_value = array ();
169185 for ( $ i = 0 ; $ i < 20 ; ++ $ i ) {
170- $ importer ->next_step ();
171186 $ progress = $ importer ->get_frontloading_progress ();
172187 if ( count ( $ progress ) === 0 ) {
173188 continue ;
174189 }
175190 $ progress_url = array_keys ( $ progress )[0 ];
176191 $ progress_value = array_values ( $ progress )[0 ];
177192 if ( null === $ progress_value ['received ' ] ) {
193+ $ importer ->next_step ();
178194 continue ;
179195 }
180196 break ;
@@ -190,13 +206,35 @@ public function test_resume_frontloading() {
190206 */
191207 public function test_resume_entity_import () {
192208 $ wxr_path = __DIR__ . '/wxr/entities-options-and-posts.xml ' ;
193- $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path );
209+ $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path , [
210+ 'new_site_content_root_url ' => 'http://127.0.0.1:9400 ' ,
211+ 'new_media_root_url ' => 'http://127.0.0.1:9400/wp-content/uploads ' ,
212+ 'uploads_path ' => sys_get_temp_dir () . '/uploads ' ,
213+ 'entity_sink ' => new class () {
214+ public $ imported_entities = [];
215+ public function import_entity ( $ entity ) {
216+ $ this ->imported_entities [] = $ entity ;
217+ return true ;
218+ }
219+ },
220+ ] );
194221 $ this ->skip_to_stage ( $ importer , StreamImporter::STAGE_IMPORT_ENTITIES );
195222
196223 for ( $ i = 0 ; $ i < 11 ; ++ $ i ) {
197224 $ this ->assertTrue ( $ importer ->next_step () );
198225 $ cursor = $ importer ->get_reentrancy_cursor ();
199- $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path , array (), $ cursor );
226+ $ importer = StreamImporter::create_for_wxr_file ( $ wxr_path , [
227+ 'new_site_content_root_url ' => 'http://127.0.0.1:9400 ' ,
228+ 'new_media_root_url ' => 'http://127.0.0.1:9400/wp-content/uploads ' ,
229+ 'uploads_path ' => sys_get_temp_dir () . '/uploads ' ,
230+ 'entity_sink ' => new class () {
231+ public $ imported_entities = [];
232+ public function import_entity ( $ entity ) {
233+ $ this ->imported_entities [] = $ entity ;
234+ return true ;
235+ }
236+ },
237+ ], $ cursor );
200238 // Rewind back to the entity we were on.
201239 // Note this means we may attempt to insert it twice. It's
202240 // the importer's job to detect that and skip the duplicate
0 commit comments