summaryrefslogtreecommitdiff
path: root/tests/Unit/Controllers/Metrics/StatsTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Unit/Controllers/Metrics/StatsTest.php')
-rw-r--r--tests/Unit/Controllers/Metrics/StatsTest.php74
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/Unit/Controllers/Metrics/StatsTest.php b/tests/Unit/Controllers/Metrics/StatsTest.php
new file mode 100644
index 00000000..1618b99b
--- /dev/null
+++ b/tests/Unit/Controllers/Metrics/StatsTest.php
@@ -0,0 +1,74 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Controllers\Metrics;
+
+use Engelsystem\Controllers\Metrics\Stats;
+use Engelsystem\Models\User\State;
+use Engelsystem\Models\User\User;
+use Engelsystem\Test\Unit\HasDatabase;
+use Engelsystem\Test\Unit\TestCase;
+use Illuminate\Support\Str;
+
+class StatsTest extends TestCase
+{
+ use HasDatabase;
+
+ /**
+ * @covers \Engelsystem\Controllers\Metrics\Stats::newUsers
+ * @covers \Engelsystem\Controllers\Metrics\Stats::getQuery
+ * @covers \Engelsystem\Controllers\Metrics\Stats::__construct
+ */
+ public function testNewUsers()
+ {
+ $this->initDatabase();
+ $this->addUsers();
+
+ $stats = new Stats($this->database);
+ $this->assertEquals(2, $stats->newUsers());
+ }
+
+ /**
+ * @covers \Engelsystem\Controllers\Metrics\Stats::arrivedUsers
+ */
+ public function testArrivedUsers()
+ {
+ $this->initDatabase();
+ $this->addUsers();
+
+ $stats = new Stats($this->database);
+ $this->assertEquals(3, $stats->arrivedUsers());
+ }
+
+ /**
+ * Add some example users
+ */
+ protected function addUsers()
+ {
+ $this->addUser();
+ $this->addUser();
+ $this->addUser(['arrived' => 1]);
+ $this->addUser(['arrived' => 1, 'active' => 1]);
+ $this->addUser(['arrived' => 1, 'active' => 1]);
+ }
+
+ /**
+ * @param array $state
+ */
+ protected function addUser(array $state = [])
+ {
+ $name = 'user_' . Str::random(5);
+
+ $user = new User([
+ 'name' => $name,
+ 'password' => '',
+ 'email' => $name . '@engel.example.com',
+ 'api_key' => '',
+ ]);
+ $user->save();
+
+ $state = new State($state);
+ $state->user()
+ ->associate($user)
+ ->save();
+ }
+}