11<?php
22namespace phpbu \App \Backup \Cleaner ;
33
4+ use phpbu \App \Backup \Collector \Local ;
5+ use phpbu \App \Backup \Target ;
6+ use phpbu \App \Result ;
7+
48/**
59 * StepwiseTest
610 *
913 * @author Sebastian Feldmann <sebastian@phpbu.de>
1014 * @copyright Sebastian Feldmann <sebastian@phpbu.de>
1115 * @license https://opensource.org/licenses/MIT The MIT License (MIT)
12- * @link http ://www.phpbu.de/
16+ * @link https ://www.phpbu.de/
1317 * @since Class available since Release 5.0.0
1418 */
1519class StepwiseTest extends TestCase
@@ -21,66 +25,22 @@ public function testCleanupDeleteOldestFile()
2125 {
2226 $ fileList = $ this ->getFileMockList (
2327 [
24- [
25- 'size ' => 100 ,
26- 'shouldBeDeleted ' => false ,
27- 'mTime ' => $ this ->getMTime ('1d ' ),
28- ],
29- [
30- 'size ' => 100 ,
31- 'shouldBeDeleted ' => false ,
32- 'mTime ' => $ this ->getMTime ('2d ' ),
33- ],
34- [
35- 'size ' => 100 ,
36- 'shouldBeDeleted ' => false ,
37- 'mTime ' => $ this ->getMTime ('3d ' ),
38- ],
39- [
40- 'size ' => 100 ,
41- 'shouldBeDeleted ' => false ,
42- 'mTime ' => $ this ->getMTime ('1w ' ),
43- ],
44- [
45- 'size ' => 100 ,
46- 'shouldBeDeleted ' => false ,
47- 'mTime ' => $ this ->getMTime ('2w ' ),
48- ],
49- [
50- 'size ' => 100 ,
51- 'shouldBeDeleted ' => true ,
52- 'mTime ' => $ this ->getMTime ('2y ' ),
53- ],
54- [
55- 'size ' => 100 ,
56- 'shouldBeDeleted ' => false ,
57- 'mTime ' => $ this ->getMTime ('2i ' ),
58- ],
59- [
60- 'size ' => 100 ,
61- 'shouldBeDeleted ' => false ,
62- 'mTime ' => $ this ->getMTime ('3i ' ),
63- ],
64- [
65- 'size ' => 100 ,
66- 'shouldBeDeleted ' => false ,
67- 'mTime ' => $ this ->getMTime ('5i ' ),
68- ],
69- [
70- 'size ' => 100 ,
71- 'shouldBeDeleted ' => false ,
72- 'mTime ' => $ this ->getMTime ('6i ' ),
73- ],
74- [
75- 'size ' => 100 ,
76- 'shouldBeDeleted ' => false ,
77- 'mTime ' => $ this ->getMTime ('7i ' ),
78- ],
28+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('1d ' )],
29+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('2d ' )],
30+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('3d ' )],
31+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('1w ' )],
32+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('2w ' )],
33+ ['size ' => 100 , 'shouldBeDeleted ' => true , 'mTime ' => $ this ->getMTime ('2y ' )],
34+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('2i ' )],
35+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('3i ' )],
36+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('5i ' )],
37+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('6i ' )],
38+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => $ this ->getMTime ('7i ' )],
7939 ]
8040 );
81- $ resultStub = $ this ->createMock (\ phpbu \ App \ Result::class);
82- $ collectorStub = $ this ->createMock (\ phpbu \ App \ Backup \ Collector \ Local::class);
83- $ targetStub = $ this ->createMock (\ phpbu \ App \ Backup \ Target::class);
41+ $ resultStub = $ this ->createMock (Result::class);
42+ $ collectorStub = $ this ->createMock (Local::class);
43+ $ targetStub = $ this ->createMock (Target::class);
8444
8545 $ collectorStub ->method ('getBackupFiles ' )->willReturn ($ fileList );
8646
@@ -98,6 +58,67 @@ public function testCleanupDeleteOldestFile()
9858 $ cleaner ->cleanup ($ targetStub , $ collectorStub , $ resultStub );
9959 }
10060
61+ /**
62+ * Tests Stepwise::cleanup
63+ */
64+ public function testCleanupDeleteOldestFileIssue197 ()
65+ {
66+ $ fileList = $ this ->getFileMockList (
67+ [
68+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-13 19:59:00 ' )],
69+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-13 19:58:00 ' )],
70+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-13 19:55:00 ' )],
71+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-13 19:54:00 ' )],
72+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-13 19:53:00 ' )],
73+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-13 19:48:00 ' )],
74+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-13 03:00:00 ' )],
75+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-12 03:00:00 ' )],
76+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-11 03:00:00 ' )],
77+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-10 03:00:00 ' )],
78+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-09 03:00:00 ' )],
79+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-08 03:00:00 ' )],
80+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-07 03:00:00 ' )],
81+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-06 03:00:00 ' )],
82+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-05 03:00:00 ' )],
83+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-04 03:00:00 ' )],
84+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-03 03:00:00 ' )],
85+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-02 03:00:00 ' )],
86+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-08-01 03:00:00 ' )],
87+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-31 03:00:00 ' )],
88+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-30 03:00:00 ' )],
89+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-29 03:00:00 ' )],
90+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-28 03:00:00 ' )],
91+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-27 03:00:00 ' )],
92+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-26 03:00:00 ' )],
93+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-25 03:00:00 ' )],
94+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-24 03:00:00 ' )],
95+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-22 03:00:00 ' )],
96+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-07-06 03:00:00 ' )],
97+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-06-27 03:00:00 ' )],
98+ ['size ' => 100 , 'shouldBeDeleted ' => false , 'mTime ' => strtotime ('2019-05-10 03:00:00 ' )],
99+ ['size ' => 100 , 'shouldBeDeleted ' => true , 'mTime ' => strtotime ('2019-05-09 03:00:00 ' )],
100+ ]
101+ );
102+ $ resultStub = $ this ->createMock (Result::class);
103+ $ collectorStub = $ this ->createMock (Local::class);
104+ $ targetStub = $ this ->createMock (Target::class);
105+
106+ $ collectorStub ->method ('getBackupFiles ' )->willReturn ($ fileList );
107+
108+ $ cleaner = new Stepwise (strtotime ('2019-08-13 20:00:00 ' ));
109+ $ cleaner ->setup (
110+ [
111+ 'daysToKeepAll ' => '10 ' ,
112+ 'daysToKeepDaily ' => '10 ' ,
113+ 'weeksToKeepWeekly ' => '1 ' ,
114+ 'monthToKeepMonthly ' => '1 ' ,
115+ 'yearsToKeepYearly ' => '1 ' ,
116+ ]
117+ );
118+
119+ $ cleaner ->cleanup ($ targetStub , $ collectorStub , $ resultStub );
120+ }
121+
101122 /**
102123 * Tests Stepwise::cleanup
103124 */
@@ -113,9 +134,9 @@ public function testCleanupInvalidRange()
113134 ]
114135 ]
115136 );
116- $ resultStub = $ this ->createMock (\ phpbu \ App \ Result::class);
117- $ collectorStub = $ this ->createMock (\ phpbu \ App \ Backup \ Collector \ Local::class);
118- $ targetStub = $ this ->createMock (\ phpbu \ App \ Backup \ Target::class);
137+ $ resultStub = $ this ->createMock (Result::class);
138+ $ collectorStub = $ this ->createMock (Local::class);
139+ $ targetStub = $ this ->createMock (Target::class);
119140
120141 $ collectorStub ->expects ($ this ->once ())->method ('getBackupFiles ' )->willReturn ($ fileList );
121142
0 commit comments