Skip to content

Commit 795a0cf

Browse files
committed
Add more parameters to the output for the list command
1 parent 2f4355e commit 795a0cf

File tree

4 files changed

+102
-3
lines changed

4 files changed

+102
-3
lines changed

src/Console/ListCommand.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ public function getRows() : array
5959

6060
$rows[] = [
6161
'name' => $feature->getName(),
62-
'status' => $feature->getDisplayStatus()
62+
'status' => $feature->getDisplayStatus(),
63+
'request-parameter' => $feature->getRequestParameter(),
64+
'percentage' => $feature->getPercentage(),
65+
'users' => $feature->getUsers()
6366
];
6467
}
6568

@@ -73,7 +76,7 @@ public function getRows() : array
7376
*/
7477
public function handle()
7578
{
76-
$headers = ['name', 'status'];
79+
$headers = ['name', 'status', 'request-parameter', 'percentage', 'users'];
7780
$rows = $this->getRows();
7881

7982
$this->table($headers, $rows);

src/FeaturePresenter.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,37 @@ public function getDisplayStatus() : string
7474

7575
return self::$statuses['disabled'];
7676
}
77+
78+
/**
79+
* Returns the request parameter if one is available for enabling the
80+
* feature.
81+
*
82+
* @return string
83+
* The request parameter if it's available, empty string otherwise.
84+
*/
85+
public function getRequestParameter() : string
86+
{
87+
return $this->feature->getRequestParam() ?: '';
88+
}
89+
90+
/**
91+
* Returns the percentage the feature is enabled for.
92+
*
93+
* @return int
94+
* The whole percentage of users that have the feature enabled.
95+
*/
96+
public function getPercentage() : int
97+
{
98+
return (int) $this->feature->getPercentage();
99+
}
100+
101+
/**
102+
* Returns a list of the users that have this feature enabled.
103+
*
104+
* @return string
105+
*/
106+
public function getUsers() : string
107+
{
108+
return implode(', ', $this->feature->getUsers());
109+
}
77110
}

tests/Console/ListCommandTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ class ListCommandTest extends TestCase
1919
*/
2020
function it_returns_an_empty_table_if_there_are_no_stored_features()
2121
{
22-
$expected = "+------+--------+\n| name | status |\n+------+--------+\n";
22+
$expected = "+------+--------+-------------------+------------+-------+
23+
| name | status | request-parameter | percentage | users |
24+
+------+--------+-------------------+------------+-------+
25+
";
2326

2427
Artisan::call('rollout:list', []);
2528

tests/FeaturePresenterTest.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,64 @@ function get_display_status_returns_the_whitelist_message_if_it_is_enabled_for_u
8989

9090
$this->assertEquals(FeaturePresenter::$statuses['whitelist'], $presenter->getDisplayStatus());
9191
}
92+
93+
/**
94+
* @test
95+
*/
96+
function get_request_parameter_returns_an_emtpy_string_if_a_request_parameter_is_not_set_on_the_feature()
97+
{
98+
$feature = new Feature('name');
99+
$presenter = new FeaturePresenter($feature);
100+
101+
$this->assertEquals('', $presenter->getRequestParameter());
102+
}
103+
104+
/**
105+
* @test
106+
*/
107+
function get_request_parameter_returns_the_request_parameter_when_one_is_set()
108+
{
109+
$feature = new Feature('name', '0|a|d|param');
110+
$presenter = new FeaturePresenter($feature);
111+
112+
$this->assertEquals('param', $presenter->getRequestParameter());
113+
}
114+
115+
/**
116+
* @test
117+
*/
118+
function get_percentage_returns_the_percentage_of_users_the_feature_is_enabled_for()
119+
{
120+
$feature = new Feature('name');
121+
$presenter = new FeaturePresenter($feature);
122+
123+
$this->assertEquals(0, $presenter->getPercentage());
124+
125+
$feature = new Feature('name', '88|a|d|param');
126+
$presenter = new FeaturePresenter($feature);
127+
128+
$this->assertEquals(88, $presenter->getPercentage());
129+
}
130+
131+
/**
132+
* @test
133+
*/
134+
function get_users_returns_an_empty_string_by_default()
135+
{
136+
$feature = new Feature('name');
137+
$presenter = new FeaturePresenter($feature);
138+
139+
$this->assertEmpty($presenter->getUsers());
140+
}
141+
142+
/**
143+
* @test
144+
*/
145+
function get_users_returns_a_comma_seperated_string_of_users()
146+
{
147+
$feature = new Feature('name', '0|user_1,user_2,user_3||param');
148+
$presenter = new FeaturePresenter($feature);
149+
150+
$this->assertEquals('user_1, user_2, user_3', $presenter->getUsers());
151+
}
92152
}

0 commit comments

Comments
 (0)