PluginProbe
Extendify / 3.0.4
Extendify v3.0.4
3.2.1 3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 All 127 releases
extendify / tests / Integration / Shared / Services / Import / ImagesImporterRunnerTest.php

ImagesImporterRunnerTest.php in Extendify 3.0.4, at tests/Integration/Shared/Services/Import/ImagesImporterRunnerTest.php

101 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Extendify\Tests\Integration\Shared\Services\Import;
4
5 use Extendify\Shared\Services\Import\ImagesImporterRunner;
6 use Extendify\Shared\Services\Import\Post;
7 use WP_UnitTestCase;
8
9 /**
10 * Tests for ImagesImporterRunner focusing on lock functionality.
11 *
12 * These tests verify that the runner correctly respects post-locks
13 * and does not process images when a post is locked.
14 */
15 class ImagesImporterRunnerTest extends WP_UnitTestCase
16 {
17 public function test_cant_update_post_when_locked_by_cron_user()
18 {
19 $originalContent = '<p class="extendify-image-import">Content</p>';
20 $postId = self::factory()->post->create([
21 'post_content' => $originalContent,
22 ]);
23
24 update_option('extendify_check_for_image_imports', true);
25
26 // Create a user and lock the post.
27 $user = self::factory()->user->create();
28 wp_set_current_user($user);
29 wp_set_post_lock($postId);
30
31 // Run the importer as the cron user (no user).
32 wp_set_current_user(0);
33 $runner = new ImagesImporterRunner();
34
35 $this->assertNull($runner->run());
36 $this->assertTrue(Post::isLocked($postId));
37 $this->assertSame($originalContent, get_post($postId)->post_content);
38 $this->assertNotEmpty(get_transient('extendify_import_images_check_delay'));
39 }
40
41 public function test_delay_processing_sets_transient()
42 {
43 $runner = new ImagesImporterRunner();
44 $runner->delayProcessing(300);
45
46 $this->assertNotEmpty(get_transient('extendify_import_images_check_delay'));
47 }
48
49 public function test_run_returns_early_when_delay_transient_is_set()
50 {
51 $originalContent = '<p class="extendify-image-import">Content</p>';
52 $postId = self::factory()->post->create([
53 'post_content' => $originalContent,
54 ]);
55
56 update_option('extendify_check_for_image_imports', true);
57 set_transient('extendify_import_images_check_delay', time(), HOUR_IN_SECONDS);
58
59 $runner = new ImagesImporterRunner();
60
61 $this->assertNull($runner->run());
62 $this->assertSame($originalContent, get_post($postId)->post_content);
63 }
64
65 /**
66 * @see https://developer.wordpress.org/reference/hooks/upload_dir/
67 */
68 public function test_run_returns_early_when_upload_dir_has_error()
69 {
70 $originalContent = '<p class="extendify-image-import">Content</p>';
71 $postId = self::factory()->post->create([
72 'post_content' => $originalContent,
73 ]);
74
75 update_option('extendify_check_for_image_imports', true);
76
77 add_filter('upload_dir', function ($dir) {
78 $dir['error'] = 'Upload directory is not writable.';
79 return $dir;
80 });
81
82 $runner = new ImagesImporterRunner();
83
84 $this->assertNull($runner->run());
85 $this->assertSame($originalContent, get_post($postId)->post_content);
86 }
87
88 public function test_run_returns_early_when_check_for_image_imports_option_not_set()
89 {
90 $originalContent = '<p class="extendify-image-import">Content</p>';
91 $postId = self::factory()->post->create([
92 'post_content' => $originalContent,
93 ]);
94
95 $runner = new ImagesImporterRunner();
96
97 $this->assertNull($runner->run());
98 $this->assertSame($originalContent, get_post($postId)->post_content);
99 }
100 }
101