@@ -1041,4 +1041,102 @@ public function testSearchSubStoragesLimitOffset(int $offset, int $limit, array
10411041 }, $ result );
10421042 $ this ->assertEquals ($ expectedPaths , $ ids );
10431043 }
1044+
1045+ private function callBuildNotExistingFileNameForView (string $ path , string $ name , View &MockObject $ view ): string {
1046+ $ rootFolder = $ this ->createMock (IRootFolder::class);
1047+ $ folder = new Folder ($ rootFolder , $ view , $ path );
1048+ return $ path . (str_ends_with ('/ ' , $ path ) ? '' : '/ ' ) . $ folder ->getNonExistingName ($ name );
1049+ }
1050+
1051+ public function testBuildNotExistingFileNameForView (): void {
1052+ $ viewMock = $ this ->createMock (View::class);
1053+ $ this ->assertEquals ('/filename ' , $ this ->callBuildNotExistingFileNameForView ('/ ' , 'filename ' , $ viewMock ));
1054+ $ this ->assertEquals ('dir/filename.ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename.ext ' , $ viewMock ));
1055+
1056+ $ viewMock = $ this ->createMock (View::class);
1057+ $ viewMock ->expects ($ this ->exactly (2 ))
1058+ ->method ('file_exists ' )
1059+ ->willReturnMap ([
1060+ // Conflict on filename.ext
1061+ ['dir/filename.ext ' , true ],
1062+ ['dir/filename (2).ext ' , false ],
1063+ ]);
1064+ $ this ->assertEquals ('dir/filename (2).ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename.ext ' , $ viewMock ));
1065+
1066+ $ viewMock = $ this ->createMock (View::class);
1067+ $ viewMock ->expects ($ this ->exactly (3 ))
1068+ ->method ('file_exists ' )
1069+ ->willReturnMap ([
1070+ // Conflict on filename.ext
1071+ ['dir/filename.ext ' , true ],
1072+ ['dir/filename (2).ext ' , true ],
1073+ ['dir/filename (3).ext ' , false ],
1074+ ]);
1075+ $ this ->assertEquals ('dir/filename (3).ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename.ext ' , $ viewMock ));
1076+
1077+ $ viewMock = $ this ->createMock (View::class);
1078+ $ viewMock ->expects ($ this ->exactly (2 ))
1079+ ->method ('file_exists ' )
1080+ ->willReturnMap ([
1081+ ['dir/filename (1).ext ' , true ],
1082+ ['dir/filename (2).ext ' , false ],
1083+ ]);
1084+ $ this ->assertEquals ('dir/filename (2).ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename (1).ext ' , $ viewMock ));
1085+
1086+ $ viewMock = $ this ->createMock (View::class);
1087+ $ viewMock ->expects ($ this ->exactly (2 ))
1088+ ->method ('file_exists ' )
1089+ ->willReturnMap ([
1090+ ['dir/filename (2).ext ' , true ],
1091+ ['dir/filename (3).ext ' , false ],
1092+ ]);
1093+ $ this ->assertEquals ('dir/filename (3).ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename (2).ext ' , $ viewMock ));
1094+
1095+ $ viewMock = $ this ->createMock (View::class);
1096+ $ viewMock ->expects ($ this ->exactly (3 ))
1097+ ->method ('file_exists ' )
1098+ ->willReturnMap ([
1099+ ['dir/filename (2).ext ' , true ],
1100+ ['dir/filename (3).ext ' , true ],
1101+ ['dir/filename (4).ext ' , false ],
1102+ ]);
1103+ $ this ->assertEquals ('dir/filename (4).ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename (2).ext ' , $ viewMock ));
1104+
1105+ $ viewMock = $ this ->createMock (View::class);
1106+ $ viewMock ->expects ($ this ->exactly (2 ))
1107+ ->method ('file_exists ' )
1108+ ->willReturnMap ([
1109+ ['dir/filename(1).ext ' , true ],
1110+ ['dir/filename(2).ext ' , false ],
1111+ ]);
1112+ $ this ->assertEquals ('dir/filename(2).ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename(1).ext ' , $ viewMock ));
1113+
1114+ $ viewMock = $ this ->createMock (View::class);
1115+ $ viewMock ->expects ($ this ->exactly (2 ))
1116+ ->method ('file_exists ' )
1117+ ->willReturnMap ([
1118+ ['dir/filename(1) (1).ext ' , true ],
1119+ ['dir/filename(1) (2).ext ' , false ],
1120+ ]);
1121+ $ this ->assertEquals ('dir/filename(1) (2).ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename(1) (1).ext ' , $ viewMock ));
1122+
1123+ $ viewMock = $ this ->createMock (View::class);
1124+ $ viewMock ->expects ($ this ->exactly (3 ))
1125+ ->method ('file_exists ' )
1126+ ->willReturnMap ([
1127+ ['dir/filename(1) (1).ext ' , true ],
1128+ ['dir/filename(1) (2).ext ' , true ],
1129+ ['dir/filename(1) (3).ext ' , false ],
1130+ ]);
1131+ $ this ->assertEquals ('dir/filename(1) (3).ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename(1) (1).ext ' , $ viewMock ));
1132+
1133+ $ viewMock = $ this ->createMock (View::class);
1134+ $ viewMock ->expects ($ this ->exactly (2 ))
1135+ ->method ('file_exists ' )
1136+ ->willReturnMap ([
1137+ ['dir/filename(1) (2) (3).ext ' , true ],
1138+ ['dir/filename(1) (2) (4).ext ' , false ],
1139+ ]);
1140+ $ this ->assertEquals ('dir/filename(1) (2) (4).ext ' , $ this ->callBuildNotExistingFileNameForView ('dir ' , 'filename(1) (2) (3).ext ' , $ viewMock ));
1141+ }
10441142}
0 commit comments