Skip to content

Commit 1bc2dbf

Browse files
committed
Add test for fractional day diffs in conversion metrics
1 parent b6d7140 commit 1bc2dbf

1 file changed

Lines changed: 37 additions & 4 deletions

File tree

tests/Routes/Wiki/ConversionMetricTest.php

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)