1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace lloc\Msls\ContentImport\Importers\PostMeta; |
4
|
|
|
|
5
|
|
|
|
6
|
|
|
use lloc\Msls\ContentImport\TestCase; |
7
|
|
|
|
8
|
|
|
class DuplicatingTest extends TestCase { |
9
|
|
|
/** |
10
|
|
|
* It should duplicate the source post meta to the destination post |
11
|
|
|
* |
12
|
|
|
* @test |
13
|
|
|
*/ |
14
|
|
|
public function should_duplicate_the_source_post_meta_to_the_destination_post() { |
15
|
|
|
list( $import_coordinates, $logger, $relations, $dest_post_data ) = $this->setup_source_and_dest(); |
16
|
|
|
$source_post_id = $import_coordinates->source_post_id; |
17
|
|
|
$dest_post_id = $import_coordinates->dest_post_id; |
18
|
|
|
|
19
|
|
|
$obj = new Duplicating( $import_coordinates, $logger->reveal(), $relations->reveal() ); |
20
|
|
|
|
21
|
|
|
switch_to_blog( $import_coordinates->source_blog_id ); |
22
|
|
|
update_post_meta( $source_post_id, 'foo', 'bar' ); |
23
|
|
|
update_post_meta( $source_post_id, 'bar', [ 23, 89 ] ); |
24
|
|
|
add_post_meta( $source_post_id, 'multi', 'one' ); |
25
|
|
|
add_post_meta( $source_post_id, 'multi', 'two' ); |
26
|
|
|
$source_post_meta = get_post_meta( $source_post_id ); |
27
|
|
|
switch_to_blog( $import_coordinates->dest_blog_id ); |
28
|
|
|
update_post_meta( $dest_post_id, 'foo', 'not-bar' ); |
29
|
|
|
update_post_meta( $dest_post_id, 'multi', 'another-value' ); |
30
|
|
|
$dest_post_meta = get_post_meta( $import_coordinates->dest_post_id ); |
31
|
|
|
add_filter( 'msls_content_import_post_meta_blacklist', function ( array $meta ) { |
32
|
|
|
$meta[] = 'foo'; |
33
|
|
|
|
34
|
|
|
return $meta; |
35
|
|
|
} ); |
36
|
|
|
|
37
|
|
|
restore_current_blog(); |
38
|
|
|
|
39
|
|
|
$imported_fields = $obj->filter_post_meta( $source_post_meta ); |
40
|
|
|
$meta_to_import = array_intersect_key( $source_post_meta, $imported_fields ); |
41
|
|
|
$meta_not_to_import = array_diff_key( $dest_post_meta, $imported_fields ); |
42
|
|
|
|
43
|
|
|
$mutated_data = $obj->import( $dest_post_data ); |
44
|
|
|
|
45
|
|
|
$this->assertEqualSets( $dest_post_data, $mutated_data ); |
46
|
|
|
|
47
|
|
|
switch_to_blog( $import_coordinates->dest_blog_id ); |
48
|
|
|
$mutated_meta = get_post_meta( $import_coordinates->dest_post_id ); |
49
|
|
|
restore_current_blog(); |
50
|
|
|
|
51
|
|
|
foreach ( $meta_to_import as $field => $value ) { |
52
|
|
|
$this->assertEquals( $value, $mutated_meta[ $field ] ); |
53
|
|
|
} |
54
|
|
|
|
55
|
|
|
foreach ( $meta_not_to_import as $field => $value ) { |
56
|
|
|
$this->assertEquals( $dest_post_meta[ $field ], $mutated_meta[ $field ] ); |
57
|
|
|
} |
58
|
|
|
} |
59
|
|
|
} |
60
|
|
|
|