actingAsUser(); $workspace = $this->createUserWorkspace($user); $form = $this->createForm($user, $workspace, []); // Create 10 views & submissions (in the past of 1 day so that it's cleaned) for ($i = 1; $i <= 10; $i++) { $submission = $form->submissions()->create(); $submission->created_at = now()->subDay(); $submission->save(); $view = $form->views()->create(); $view->created_at = now()->subDay(); $view->save(); } // Create a submission & a view for another date $submission = $form->submissions()->create(); $submission->created_at = now()->subDays(2); $submission->save(); $view = $form->views()->create(); $view->created_at = now()->subDays(2); $view->save(); // Run Command Artisan::call('forms:database-cleanup'); // Create 5 views & submissions for ($i = 1; $i <= 5; $i++) { $form->views()->create(); $form->submissions()->create(); } // Now check counters $statistics = $form->statistics()->get(); expect($form->views_count)->toBe(16); expect($form->submissions_count)->toBe(16); expect($form->views()->count())->toBe(5); expect($form->submissions()->count())->toBe(16); expect(count($statistics))->toBe(2); // 1 per day for 2 different dates expect($statistics[0]['date'])->toBe(now()->subDays(2)->toDateString()); expect($statistics[0]['data'])->toBe(['views' => 1, 'submissions' => 1]); expect($statistics[1]['date'])->toBe(now()->subDay()->toDateString()); expect($statistics[1]['data'])->toBe(['views' => 10, 'submissions' => 10]); });