mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 16:22:14 +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;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\File;
|
use App\Models\File;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Resources\UsersCollection;
|
use App\Http\Resources\UsersCollection;
|
||||||
use App\Services\StripeService;
|
use App\Services\StripeService;
|
||||||
use App\Setting;
|
use App\Models\User;
|
||||||
use App\User;
|
|
||||||
use ByteUnits\Metric;
|
use ByteUnits\Metric;
|
||||||
use Illuminate\Http\Request;
|
use DB;
|
||||||
use Laravel\Cashier\Subscription;
|
use Laravel\Cashier\Subscription;
|
||||||
|
|
||||||
class DashboardController extends Controller
|
class DashboardController extends Controller
|
||||||
@@ -29,26 +28,21 @@ class DashboardController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
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
|
// Get total premium users
|
||||||
$total_premium_users = Subscription::where('stripe_status', 'active')->get()->count();
|
$premium_users = Subscription::whereStripeStatus('active')
|
||||||
|
->count();
|
||||||
|
|
||||||
// Get License
|
// Get total storage usage
|
||||||
$license = Setting::where('name', 'license')->first();
|
$storage_usage = Metric::bytes(
|
||||||
|
DB::table('files')->sum('filesize')
|
||||||
|
)->format();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'license' => $license ? $license->value : null,
|
'license' => get_setting('license'),
|
||||||
'app_version' => config('vuefilemanager.version'),
|
'app_version' => config('vuefilemanager.version'),
|
||||||
'total_users' => $total_users,
|
'total_users' => User::count(),
|
||||||
'total_used_space' => Metric::bytes($total_used_space)->format(),
|
'total_used_space' => $storage_usage,
|
||||||
'total_premium_users' => $total_premium_users,
|
'total_premium_users' => $premium_users,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,10 +51,11 @@ class DashboardController extends Controller
|
|||||||
*
|
*
|
||||||
* @return UsersCollection
|
* @return UsersCollection
|
||||||
*/
|
*/
|
||||||
public function new_registrations()
|
public function newbies()
|
||||||
{
|
{
|
||||||
return new UsersCollection(
|
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
|
// Dashboard
|
||||||
Route::group(['prefix' => 'dashboard'], function () {
|
Route::group(['prefix' => 'dashboard'], function () {
|
||||||
Route::get('/new-users', [DashboardController::class, 'new_registrations']);
|
Route::get('/newbies', [DashboardController::class, 'newbies']);
|
||||||
Route::get('/', [DashboardController::class, 'index']);
|
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()
|
public function it_get_user_invoices()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user