Skip to content

Commit 62d3811

Browse files
author
serverpod_cloud
committed
feat(scloud): b197e72c451cca8d38eb497ca818ffddcb906595
1 parent 7253102 commit 62d3811

2 files changed

Lines changed: 30 additions & 4 deletions

File tree

serverpod_cloud_cli/lib/commands/admin/user_admin.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,23 @@ abstract class UserAdminCommands {
1919
includeArchived: includeArchived,
2020
);
2121

22+
final userPlanMap = <String, String>{};
23+
for (final user in users) {
24+
switch (user.accountStatus) {
25+
case UserAccountStatus.registered:
26+
final procuredProducts = await cloudApiClient.adminProcurement
27+
.listProcuredProducts(userEmail: user.email);
28+
final procuredPlans = procuredProducts
29+
.where((final p) => p.$2 == 'PlanProduct')
30+
.map((final p) => p.$1);
31+
userPlanMap[user.email] = procuredPlans.join(', ');
32+
break;
33+
case UserAccountStatus.invited:
34+
userPlanMap[user.email] = '';
35+
break;
36+
}
37+
}
38+
2239
final timezoneName = inUtc ? 'UTC' : 'local';
2340

2441
final table = TablePrinter(
@@ -27,12 +44,14 @@ abstract class UserAdminCommands {
2744
'Account status',
2845
'Created at ($timezoneName)',
2946
'Archived at ($timezoneName)',
47+
'Subscribed Plans',
3048
],
3149
rows: users.map((final user) => [
3250
user.email,
3351
user.accountStatus.toString(),
3452
user.createdAt.toTzString(inUtc, 19),
3553
user.archivedAt?.toTzString(inUtc, 19),
54+
userPlanMap[user.email] ?? '',
3655
]),
3756
);
3857
table.writeLines(logger.line);

serverpod_cloud_cli/test_integration/commands/admin/admin_user_list_cmd_test.dart

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ void main() {
9191
.build(),
9292
]),
9393
);
94+
when(() => client.adminProcurement.listProcuredProducts(
95+
userEmail: any(named: 'userEmail'),
96+
)).thenAnswer(
97+
(final invocation) async => Future.value([
98+
('test-plan', 'PlanProduct'),
99+
]),
100+
);
94101

95102
commandResult = cli.run([
96103
'admin',
@@ -111,16 +118,16 @@ void main() {
111118
containsAllInOrder([
112119
equalsLineCall(
113120
line:
114-
'User | Account status | Created at (local) | Archived at (local)'),
121+
'User | Account status | Created at (local) | Archived at (local) | Subscribed Plans'),
115122
equalsLineCall(
116123
line:
117-
'------------------+----------------+---------------------+--------------------'),
124+
'------------------+----------------+---------------------+---------------------+-----------------'),
118125
equalsLineCall(
119126
line:
120-
'test@example.com | registered | 2025-07-02 11:00:00 | '),
127+
'test@example.com | registered | 2025-07-02 11:00:00 | | test-plan '),
121128
equalsLineCall(
122129
line:
123-
'test2@example.com | invited | 2025-07-02 12:00:00 | 2025-07-02 12:10:00'),
130+
'test2@example.com | invited | 2025-07-02 12:00:00 | 2025-07-02 12:10:00 | '),
124131
]),
125132
);
126133
});

0 commit comments

Comments
 (0)