mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 08:12:15 +00:00
record daily usage
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Domain\Traffic;
|
||||
|
||||
use Domain\Traffic\Models\Traffic;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Storage;
|
||||
use Tests\TestCase;
|
||||
use App\Users\Models\User;
|
||||
@@ -9,12 +12,11 @@ use Domain\Files\Models\File;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class TrafficTest extends TestCase
|
||||
{
|
||||
public UploadedFile $file;
|
||||
public User $user;
|
||||
public Model $user;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
@@ -62,9 +64,9 @@ class TrafficTest extends TestCase
|
||||
])->assertStatus(201);
|
||||
|
||||
$this->assertDatabaseHas('traffic', [
|
||||
'user_id' => $this->user->id,
|
||||
'upload' => 991,
|
||||
'created_at' => now(),
|
||||
'user_id' => $this->user->id,
|
||||
'upload' => 991,
|
||||
'created_at' => now(),
|
||||
]);
|
||||
|
||||
$this->travel(1)->day();
|
||||
@@ -82,9 +84,9 @@ class TrafficTest extends TestCase
|
||||
])->assertStatus(201);
|
||||
|
||||
$this->assertDatabaseHas('traffic', [
|
||||
'user_id' => $this->user->id,
|
||||
'upload' => 991,
|
||||
'created_at' => now(),
|
||||
'user_id' => $this->user->id,
|
||||
'upload' => 991,
|
||||
'created_at' => now(),
|
||||
]);
|
||||
|
||||
$this->assertDatabaseCount('traffic', 2);
|
||||
@@ -193,21 +195,18 @@ class TrafficTest extends TestCase
|
||||
*/
|
||||
public function it_get_user_traffic_test()
|
||||
{
|
||||
$user = User::factory()
|
||||
->create();
|
||||
|
||||
foreach (range(0, 30) as $day) {
|
||||
DB::table('traffic')->insert([
|
||||
'id' => Str::uuid(),
|
||||
'user_id' => $user->id,
|
||||
'upload' => 10000 * $day,
|
||||
'download' => 1000000 * $day,
|
||||
'created_at' => now()->subDays($day),
|
||||
'updated_at' => now()->subDays($day),
|
||||
]);
|
||||
Traffic::factory()
|
||||
->create([
|
||||
'user_id' => $this->user->id,
|
||||
'upload' => 10000 * $day,
|
||||
'download' => 1000000 * $day,
|
||||
'created_at' => now()->subDays($day),
|
||||
'updated_at' => now()->subDays($day),
|
||||
]);
|
||||
}
|
||||
|
||||
$this->actingAs($user)
|
||||
$this->actingAs($this->user)
|
||||
->get('/api/user/storage')
|
||||
->assertOk()
|
||||
->assertJsonFragment([
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Support\Scheduler;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Traffic\Models\Traffic;
|
||||
use Storage;
|
||||
use Support\Scheduler\Actions\ReportUsageAction;
|
||||
use Tests\TestCase;
|
||||
use App\Users\Models\User;
|
||||
use Domain\Sharing\Models\Share;
|
||||
@@ -9,9 +13,71 @@ use Illuminate\Http\UploadedFile;
|
||||
use Support\Scheduler\Actions\DeleteFailedFilesAction;
|
||||
use Support\Scheduler\Actions\DeleteUnverifiedUsersAction;
|
||||
use Support\Scheduler\Actions\DeleteExpiredShareLinksAction;
|
||||
use VueFileManager\Subscription\Domain\Plans\Models\Plan;
|
||||
use VueFileManager\Subscription\Domain\Plans\Models\PlanMeteredFeature;
|
||||
use VueFileManager\Subscription\Domain\Subscriptions\Models\Subscription;
|
||||
|
||||
class SchedulerTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_report_usage_of_subscription()
|
||||
{
|
||||
$user = User::factory()
|
||||
->create();
|
||||
|
||||
$plan = Plan::factory()
|
||||
->create([
|
||||
'type' => 'metered',
|
||||
]);
|
||||
|
||||
PlanMeteredFeature::factory()
|
||||
->count(2)
|
||||
->sequence(
|
||||
['key' => 'storage'],
|
||||
['key' => 'bandwidth'],
|
||||
)
|
||||
->create([
|
||||
'plan_id' => $plan->id,
|
||||
]);
|
||||
|
||||
$subscription = Subscription::factory()
|
||||
->create([
|
||||
'status' => 'active',
|
||||
'type' => 'pre-paid',
|
||||
'plan_id' => $plan->id,
|
||||
'user_id' => $user->id,
|
||||
]);
|
||||
|
||||
File::factory()
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'filesize' => 125000000,
|
||||
]);
|
||||
|
||||
Traffic::factory()
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'download' => 155000000,
|
||||
'created_at' => now()->subDay(),
|
||||
]);
|
||||
|
||||
resolve(ReportUsageAction::class)();
|
||||
|
||||
$this
|
||||
->assertDatabaseHas('usages', [
|
||||
'metered_feature_id' => $plan->meteredFeatures()->get()[0]->id,
|
||||
'subscription_id' => $subscription->id,
|
||||
'quantity' => 0.125,
|
||||
])
|
||||
->assertDatabaseHas('usages', [
|
||||
'metered_feature_id' => $plan->meteredFeatures()->get()[1]->id,
|
||||
'subscription_id' => $subscription->id,
|
||||
'quantity' => 0.155,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user