stats: added pronoun

This commit is contained in:
Xu 2021-04-13 12:16:08 +02:00 committed by Igor Scheller
parent 1cfab91f28
commit cb2ec5457e
3 changed files with 26 additions and 2 deletions

View File

@ -106,6 +106,7 @@ class Controller extends BaseController
['labels' => ['state' => 'arrived', 'working' => 'yes'], 'value' => $this->stats->arrivedUsers(true)],
],
'users_force_active' => ['type' => 'gauge', $this->stats->forceActiveUsers()],
'users_pronouns' => ['type' => 'gauge', $this->stats->usersPronouns()],
'licenses' => [
'type' => 'gauge',
'help' => 'The total number of licenses',

View File

@ -93,6 +93,14 @@ class Stats
return State::whereForceActive(true)->count();
}
/**
* @return int
*/
public function usersPronouns(): int
{
return PersonalData::where('pronoun', '!=', '')->count();
}
/**
* @param string $type
*

View File

@ -238,6 +238,17 @@ class StatsTest extends TestCase
$this->assertEquals(2, $stats->forceActiveUsers());
}
/**
* @covers \Engelsystem\Controllers\Metrics\Stats::usersPronouns
*/
public function testUsersPronouns()
{
$this->addUsers();
$stats = new Stats($this->database);
$this->assertEquals(2, $stats->usersPronouns());
}
/**
* @covers \Engelsystem\Controllers\Metrics\Stats::email
*/
@ -380,10 +391,14 @@ class StatsTest extends TestCase
$this->addUser();
$this->addUser([], ['shirt_size' => 'L'], ['email_human' => true, 'email_shiftinfo' => true]);
$this->addUser(['arrived' => 1], [], ['email_human' => true, 'email_news' => true]);
$this->addUser(['arrived' => 1], [], ['language' => 'lo_RM', 'email_shiftinfo' => true]);
$this->addUser(['arrived' => 1], ['pronoun' => 'unicorn'], ['language' => 'lo_RM', 'email_shiftinfo' => true]);
$this->addUser(['arrived' => 1, 'got_voucher' => 2], ['shirt_size' => 'XXL'], ['language' => 'lo_RM']);
$this->addUser(['arrived' => 1, 'got_voucher' => 9, 'force_active' => true], [], ['theme' => 1]);
$this->addUser(['arrived' => 1, 'got_voucher' => 3], [], ['theme' => 1, 'email_human' => true]);
$this->addUser(
['arrived' => 1, 'got_voucher' => 3],
['pronoun' => 'per'],
['theme' => 1, 'email_human' => true]
);
$this->addUser(['arrived' => 1, 'active' => 1, 'got_shirt' => true, 'force_active' => true]);
$this->addUser(['arrived' => 1, 'active' => 1, 'got_shirt' => true], ['shirt_size' => 'L'], ['theme' => 4]);
}