@@ -58,10 +58,10 @@ private function createTestWiki($name, $createdWeeksAgo, $firstEditedWeeksAgo, $
5858 $ wiki ->created_at = $ current_date ->subWeeks ($ createdWeeksAgo );
5959 $ events = $ wiki ->wikiLifecycleEvents ();
6060 $ update = [];
61- if ($ lastEditedWeeksAgo ) {
61+ if ($ lastEditedWeeksAgo !== null ) {
6262 $ update ['last_edited ' ] = $ current_date ->subWeeks ($ lastEditedWeeksAgo );
6363 }
64- if ($ firstEditedWeeksAgo ) {
64+ if ($ firstEditedWeeksAgo !== null ) {
6565 $ update ['first_edited ' ] = $ current_date ->subWeeks ($ firstEditedWeeksAgo );
6666 }
6767 $ events ->updateOrCreate ($ update );
@@ -118,7 +118,7 @@ public function testDownloadJson() {
118118 );
119119 $ response ->assertJsonFragment (
120120 [
121- 'domain ' => 'unused. for.a.year.but.now.active .wikibase.cloud ' ,
121+ 'domain ' => 'acvtively.used. for.the.last.year .wikibase.cloud ' ,
122122 'time_to_engage_days ' => 0 ,
123123 'time_before_wiki_abandoned_days ' => null ,
124124 'number_of_active_editors ' => 5 ,
@@ -134,9 +134,42 @@ public function testDownloadJson() {
134134 );
135135 }
136136
137+ public function testDownloadJsonTruncatesFractionalDayDiffs () {
138+ $ currentDate = CarbonImmutable::now ();
139+ $ createdAt = $ currentDate ->subDays (200 )->subHours (12 ); //200.5 days ago
140+ $ firstEditedAt = $ createdAt ->addDays (1 )->addHours (12 ); //1.5 days after
141+ $ lastEditedAt = $ currentDate ->subDays (100 ); //100 days ago
142+
143+ $ wiki = Wiki::factory ()->create ([
144+ 'domain ' => 'fractional.days.cloud ' ,
145+ 'sitename ' => 'Fractional Days Site ' ,
146+ ]);
147+ WikiSiteStats::factory ()->create ([
148+ 'wiki_id ' => $ wiki ->id ,
149+ 'pages ' => 77 ,
150+ 'activeusers ' => 2 ,
151+ ]);
152+ $ wiki ->created_at = $ createdAt ;
153+ $ wiki ->wikiLifecycleEvents ()->updateOrCreate ([
154+ 'first_edited ' => $ firstEditedAt ,
155+ 'last_edited ' => $ lastEditedAt ,
156+ ]);
157+ $ wiki ->save ();
158+
159+ $ response = $ this ->getJson ($ this ->route );
160+
161+ $ response ->assertStatus (200 );
162+ $ response ->assertJsonFragment ([
163+ 'domain ' => 'fractional.days.cloud ' ,
164+ 'time_to_engage_days ' => 1 ,
165+ 'time_before_wiki_abandoned_days ' => 100 ,
166+ 'number_of_active_editors ' => 2 ,
167+ ]);
168+ }
169+
137170 public function testFunctionalWithMissingLifecycleEventsandStats () {
138171 $ wiki = Wiki::factory ()->create ([
139- 'domain ' => 'very.new.wikibase. cloud ' , 'sitename ' => 'bsite ' ,
172+ 'domain ' => 'very.new.cloud ' , 'sitename ' => 'Very New Site ' ,
140173 ]);
141174
142175 $ response = $ this ->get ($ this ->route );
0 commit comments