mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-06 02:33:48 +00:00
added it_get_dashboard_data, it_get_new_users_for_dashboard test
This commit is contained in:
@@ -2,14 +2,13 @@
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\File;
|
||||
use App\Models\File;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\UsersCollection;
|
||||
use App\Services\StripeService;
|
||||
use App\Setting;
|
||||
use App\User;
|
||||
use App\Models\User;
|
||||
use ByteUnits\Metric;
|
||||
use Illuminate\Http\Request;
|
||||
use DB;
|
||||
use Laravel\Cashier\Subscription;
|
||||
|
||||
class DashboardController extends Controller
|
||||
@@ -29,26 +28,21 @@ class DashboardController extends Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// Get total users
|
||||
$total_users = User::all()->count();
|
||||
|
||||
// Get total used space
|
||||
$total_used_space = File::all()->map(function ($item) {
|
||||
return (int)$item->getRawOriginal('filesize');
|
||||
})->sum();
|
||||
|
||||
// Get total premium users
|
||||
$total_premium_users = Subscription::where('stripe_status', 'active')->get()->count();
|
||||
$premium_users = Subscription::whereStripeStatus('active')
|
||||
->count();
|
||||
|
||||
// Get License
|
||||
$license = Setting::where('name', 'license')->first();
|
||||
// Get total storage usage
|
||||
$storage_usage = Metric::bytes(
|
||||
DB::table('files')->sum('filesize')
|
||||
)->format();
|
||||
|
||||
return [
|
||||
'license' => $license ? $license->value : null,
|
||||
'license' => get_setting('license'),
|
||||
'app_version' => config('vuefilemanager.version'),
|
||||
'total_users' => $total_users,
|
||||
'total_used_space' => Metric::bytes($total_used_space)->format(),
|
||||
'total_premium_users' => $total_premium_users,
|
||||
'total_users' => User::count(),
|
||||
'total_used_space' => $storage_usage,
|
||||
'total_premium_users' => $premium_users,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -57,10 +51,11 @@ class DashboardController extends Controller
|
||||
*
|
||||
* @return UsersCollection
|
||||
*/
|
||||
public function new_registrations()
|
||||
public function newbies()
|
||||
{
|
||||
return new UsersCollection(
|
||||
User::sortable(['created_at' => 'desc'])->paginate(10)
|
||||
User::sortable(['created_at' => 'desc'])
|
||||
->paginate(10)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ use App\Http\Controllers\SettingController;
|
||||
|
||||
// Dashboard
|
||||
Route::group(['prefix' => 'dashboard'], function () {
|
||||
Route::get('/new-users', [DashboardController::class, 'new_registrations']);
|
||||
Route::get('/newbies', [DashboardController::class, 'newbies']);
|
||||
Route::get('/', [DashboardController::class, 'index']);
|
||||
});
|
||||
|
||||
|
||||
80
tests/Feature/AdminTest.php
Normal file
80
tests/Feature/AdminTest.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Models\File;
|
||||
use App\Models\Setting;
|
||||
use App\Models\User;
|
||||
use DB;
|
||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Laravel\Sanctum\Sanctum;
|
||||
use Stripe\Subscription;
|
||||
use Tests\TestCase;
|
||||
|
||||
class AdminTest extends TestCase
|
||||
{
|
||||
use DatabaseMigrations;
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_get_dashboard_data()
|
||||
{
|
||||
$user = User::factory(User::class)
|
||||
->create(['role' => 'admin']);
|
||||
|
||||
File::factory(File::class)
|
||||
->count(2)
|
||||
->create(['filesize' => 1000000]);
|
||||
|
||||
Setting::create([
|
||||
'name' => 'license',
|
||||
'value' => 'Regular'
|
||||
]);
|
||||
|
||||
DB::table('subscriptions')
|
||||
->insert([
|
||||
'user_id' => $user->id,
|
||||
'name' => 'main',
|
||||
'stripe_id' => 'sub_Hp4jgdIpPDDWXw',
|
||||
'stripe_status' => 'active',
|
||||
]);
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
$this->getJson('/api/admin/dashboard')
|
||||
->assertStatus(200)
|
||||
->assertExactJson([
|
||||
"license" => "Regular",
|
||||
"app_version" => config('vuefilemanager.version'),
|
||||
"total_users" => 1,
|
||||
"total_used_space" => "2.00MB",
|
||||
"total_premium_users" => 1,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_get_new_users_for_dashboard()
|
||||
{
|
||||
$users = User::factory(User::class)
|
||||
->count(5)
|
||||
->create(['role' => 'user']);
|
||||
|
||||
$admin = User::factory(User::class)
|
||||
->create(['role' => 'admin']);
|
||||
|
||||
Sanctum::actingAs($admin);
|
||||
|
||||
$users->each(function ($user) {
|
||||
$this->getJson('/api/admin/dashboard/newbies')
|
||||
->assertStatus(200)
|
||||
->assertJsonFragment([
|
||||
'id' => $user->id,
|
||||
]);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -208,7 +208,7 @@ class SubscriptionTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*
|
||||
*/
|
||||
public function it_get_user_invoices()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user