added it_get_dashboard_data, it_get_new_users_for_dashboard test

This commit is contained in:
Peter Papp
2021-03-04 16:22:10 +01:00
parent d4df26bf35
commit 9b91fe3d59
4 changed files with 98 additions and 23 deletions

View File

@@ -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)
);
}
}

View File

@@ -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']);
});

View 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,
]);
});
}
}

View File

@@ -208,7 +208,7 @@ class SubscriptionTest extends TestCase
}
/**
* @test
*
*/
public function it_get_user_invoices()
{