43 : Filesystem\Filesystem
44 {
45 $fileSystem = $this->getMockBuilder(
Filesystem\Filesystem::class)->getMock();
46
47 $rootMetadata = [
48 new Filesystem\DTO\Metadata('file_1.txt', MetadataType::FILE),
49 new Filesystem\DTO\Metadata('file_2.mp3', MetadataType::FILE),
50 new Filesystem\DTO\Metadata('dir_1', MetadataType::DIRECTORY),
51 ];
52
53 $level1Metadata = [
54 new Filesystem\DTO\Metadata('dir_1/file_3.log', MetadataType::FILE),
55 new Filesystem\DTO\Metadata('dir_1/file_4.php', MetadataType::FILE),
56 new Filesystem\DTO\Metadata('dir_1/dir_1_1', MetadataType::DIRECTORY),
57 new Filesystem\DTO\Metadata('dir_1/dir_1_2', MetadataType::DIRECTORY),
58 ];
59
60 $level11Metadata = [
61 new Filesystem\DTO\Metadata('dir_1/dir_1_1/file_5.cpp', MetadataType::FILE),
62 ];
63
64 $level12Metadata = [
65 new Filesystem\DTO\Metadata('dir_1/dir_1_2/file_6.py', MetadataType::FILE),
66 new Filesystem\DTO\Metadata('dir_1/dir_1_2/file_7.cpp', MetadataType::FILE),
67 new Filesystem\DTO\Metadata('dir_1/dir_1_2/dir_1_2_1', MetadataType::DIRECTORY),
68 ];
69
70 $fileSystem
71 ->expects($this->atLeast(1))
72 ->method('listContents')
73 ->will($this->returnCallback(function ($path) use (
74 $rootMetadata,
75 $level1Metadata,
76 $level11Metadata,
77 $level12Metadata
78 ) {
79 if ('/' === $path) {
80 return $rootMetadata;
81 } elseif ('dir_1' === $path) {
82 return $level1Metadata;
83 } elseif ('dir_1/dir_1_1' === $path) {
84 return $level11Metadata;
85 } elseif ('dir_1/dir_1_2' === $path) {
86 return $level12Metadata;
87 }
88
89 return [];
90 }));
91
92 return $fileSystem;
93 }