summaryrefslogtreecommitdiff
path: root/tests/Unit/Controllers/Metrics/StatsTest.php
diff options
context:
space:
mode:
authorIgor Scheller <igor.scheller@igorshp.de>2018-12-18 02:23:44 +0100
committermsquare <msquare@notrademark.de>2018-12-19 22:36:42 +0100
commitc5621b82cfeddee23b81871a53035fde747f73a9 (patch)
tree36e91622ac463011bd2b45f552d837a1abfb56ba /tests/Unit/Controllers/Metrics/StatsTest.php
parent3c8d0eeb440b8c263686ba81df7be87290ad9695 (diff)
Implemented /metrics endpoint and reimplemented /stats
closes #418 (/metrics endpoint) Usage: ```yaml scrape_configs: - job_name: 'engelsystem' static_configs: - targets: ['engelsystem.example.com:80'] ```
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();
+ }
+}