1313use BugCatcher \Tests \App \KernelTestCase ;
1414use BugCatcher \Tests \Integration \Trait \GetStackTrace ;
1515use BugCatcher \Twig \Components \LogList \RecordLog ;
16+ use DateTimeImmutable ;
1617use Symfony \UX \TwigComponent \Test \InteractsWithTwigComponents ;
1718use Zenstruck \Foundry \Test \Factories ;
1819use Zenstruck \Foundry \Test \ResetDatabase ;
@@ -25,22 +26,23 @@ class RecordLogTest extends KernelTestCase {
2526
2627 public function testClearOne () {
2728
28- RecordLogFactory::createMany (10 , [
29+ $ startDate = new DateTime ("2022-01-01 00:00:00 " );
30+ RecordLogFactory::createMany (10 , [
2931 "status " => "new " ,
3032 "hash " => "hash-2 " ,
31- " date " => new DateTime ( " 2022-01-01 00:00:00 " ) ,
33+ " date " => $ startDate ,
3234 ]);
3335
3436 $ record = RecordLogFactory::createMany (10 , [
3537 "status " => "new " ,
3638 "hash " => "hash " ,
37- " date " => new DateTime ( " 2022-01-01 00:00:00 " ) ,
39+ " date " => $ startDate ,
3840 ])[0 ];
3941
4042 $ rendered = $ this ->mountTwigComponent ('LogList:RecordLog ' , ['log ' => $ record ->_real (), "status " => "new " ]);
4143 $ this ->assertInstanceOf (RecordLog::class, $ rendered );
4244
43- $ rendered ->clearOne ("resolved " );
45+ $ rendered ->clearOne ("resolved " , $ startDate );
4446
4547 $ count = RecordLogFactory::count ([
4648 "hash " => "hash " ,
@@ -56,17 +58,55 @@ public function testClearOne() {
5658
5759 }
5860
61+ function testClearOneStack (): void
62+ {
63+ $ startDate = new DateTimeImmutable ("2022-01-01 00:00:00 " );
64+
65+ for ($ i = 1 ; $ i <= 10 ; $ i ++) {
66+ RecordLogFactory::createOne ([
67+ "status " => "new " ,
68+ "hash " => "hash " ,
69+ "date " => $ startDate ->modify ("+ {$ i } day " ),
70+ ]);
71+ }
72+ $ lastDate = $ startDate ->modify ("+11 day " );
73+ $ record = RecordLogFactory::createOne ([
74+ "status " => "new " ,
75+ "hash " => "hash " ,
76+ "date " => $ lastDate ,
77+ ]);
78+
79+ $ rendered = $ this ->mountTwigComponent ('LogList:RecordLog ' , ['log ' => $ record ->_real (), "status " => "new " ]);
80+ $ this ->assertInstanceOf (RecordLog::class, $ rendered );
81+
82+ $ count = RecordLogFactory::count ([
83+ "hash " => "hash " ,
84+ "status " => "new " ,
85+ ]);
86+ $ this ->assertEquals (11 , $ count );
87+
88+ $ rendered ->clearOne ("resolved " , $ startDate );
89+
90+ $ count = RecordLogFactory::count ([
91+ "hash " => "hash " ,
92+ "status " => "new " ,
93+ ]);
94+ $ this ->assertEquals (0 , $ count );
95+ }
96+
5997 public function testClearStackTrace () {
98+ $ startDate = new DateTimeImmutable ("2022-01-01 00:00:00 " );
6099 $ record = RecordLogTraceFactory::createOne ([
61100 "stackTrace " => $ this ->getStackTrace (),
62101 "status " => "new " ,
63102 "hash " => "hash " ,
103+ "date " => $ startDate ,
64104 ]);
65105
66106 $ rendered = $ this ->mountTwigComponent ('LogList:RecordLog ' , ['log ' => $ record ->_real (), "status " => "new " ]);
67107 $ this ->assertInstanceOf (RecordLog::class, $ rendered );
68108
69- $ rendered ->clearOne ("resolved " );
109+ $ rendered ->clearOne ("resolved " , $ startDate );
70110 $ record ->_refresh ();
71111 $ this ->assertNull ($ record ->getStackTrace ());
72112
0 commit comments