vendor and env first commit

This commit is contained in:
2025-03-28 08:52:46 +01:00
parent f8388bc81b
commit 8f26283832
10976 changed files with 1349952 additions and 2 deletions
@@ -0,0 +1,134 @@
<?php
namespace Vanguard\UserActivity\Tests\Feature\Api;
use Facades\Tests\Setup\UserFactory;
use Tests\Feature\ApiTestCase;
use Vanguard\User;
use Vanguard\UserActivity\Activity;
use Vanguard\UserActivity\Http\Resources\ActivityResource;
class ActivityTest extends ApiTestCase
{
/** @test */
public function unauthenticated()
{
$this->getJson('/api/activity')->assertStatus(401);
}
/** @test */
public function get_activities_without_permission()
{
$user = User::factory()->create();
$this->actingAs($user, self::API_GUARD)
->getJson('/api/activity')
->assertStatus(403);
}
/** @test */
public function paginate_activities()
{
$user = $this->getUser();
$user2 = User::factory()->create();
$activities = Activity::factory()->times(25)->create(['user_id' => $user->id]);
Activity::factory()->times(10)->create(['user_id' => $user2->id]);
$response = $this->actingAs($user, self::API_GUARD)->getJson('/api/activity');
$transformed = ActivityResource::collection($activities->take(20))->resolve();
$this->assertEquals($response->json('data'), $transformed);
$response->assertJson([
'meta' => [
'current_page' => 1,
'from' => 1,
'to' => 20,
'last_page' => 2,
'path' => url('api/activity'),
'total' => 35,
'per_page' => 20,
],
]);
}
/** @test */
public function paginate_activities_with_search_param()
{
$user = $this->getUser();
$set1 = Activity::factory()->times(10)->create([
'user_id' => $user->id,
'description' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
]);
$set2 = Activity::factory()->times(5)->create([
'user_id' => $user->id,
'description' => 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...',
]);
$transformed = ActivityResource::collection($set2)->resolve();
$response = $this->actingAs($user, self::API_GUARD)
->getJson('/api/activity?filter[description]=minim&per_page=10&sort=created_at')
->assertOk();
$this->assertEquals($response->json('data'), $transformed);
$response->assertJson([
'meta' => [
'current_page' => 1,
'from' => 1,
'to' => 5,
'last_page' => 1,
'total' => 5,
'per_page' => 10,
'path' => url('api/activity'),
],
]);
}
/** @test */
public function paginate_activities_with_more_records_per_page_than_allowed()
{
$this->actingAs($this->getUser(), self::API_GUARD)
->getJson('/api/activity?per_page=140')
->assertStatus(422);
}
/** @test */
public function paginate_activities_for_user()
{
$user = UserFactory::user()->withPermissions('users.activity')->create();
$this->be($user, self::API_GUARD);
$activities = Activity::factory()->times(25)->create(['user_id' => $user->id]);
$response = $this->getJson("/api/activity?filters[user]={$user->id}");
$transformed = ActivityResource::collection($activities->take(20))->resolve();
$this->assertEquals($response->json('data'), $transformed);
$response->assertJson([
'meta' => [
'current_page' => 1,
'from' => 1,
'to' => 20,
'last_page' => 2,
'path' => url('api/activity'),
'total' => 25,
'per_page' => 20,
],
]);
}
/**
* @return mixed
*/
private function getUser()
{
return UserFactory::user()->withPermissions('users.activity')->create();
}
}
@@ -0,0 +1,35 @@
<?php
namespace Vanguard\UserActivity\Tests\Feature\Api;
use Carbon\Carbon;
use Tests\Feature\ApiTestCase;
use Vanguard\User;
use Vanguard\UserActivity\Activity;
use Vanguard\UserActivity\Repositories\Activity\ActivityRepository;
class StatsTest extends ApiTestCase
{
/** @test */
public function non_admin_users_cannot_get_user_stats()
{
$user = User::factory()->create();
Carbon::setTestNow(Carbon::now()->subWeek());
Activity::factory()->times(5)->create(['user_id' => $user->id]);
Carbon::setTestNow(null);
Activity::factory()->times(5)->create(['user_id' => $user->id]);
$response = $this->actingAs($user, self::API_GUARD)->getJson('/api/stats/activity');
$expected = app(ActivityRepository::class)->userActivityForPeriod(
$user->id,
Carbon::now()->subWeek(2),
Carbon::now()
)->toArray();
$response->assertOk()
->assertJson($expected);
}
}
@@ -0,0 +1,72 @@
<?php
namespace Vanguard\UserActivity\Tests\Feature\Web;
use Carbon\Carbon;
use Facades\Tests\Setup\UserFactory;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
use Vanguard\UserActivity\Logger;
class ActivityTest extends TestCase
{
use RefreshDatabase;
public $logger;
protected function setUp(): void
{
parent::setUp();
$this->logger = app(Logger::class);
$this->artisan('db:seed');
}
/** @test */
public function display_all_activities()
{
$this->withoutMiddleware();
$user1 = UserFactory::create();
$user2 = UserFactory::create();
Carbon::setTestNow(Carbon::now());
$this->be($user1);
$this->logger->log('foo');
$this->be($user2);
$this->logger->log('bar');
$this->get('activity')
->assertSee('foo')
->assertSee('bar');
}
/** @test */
public function display_activities_for_a_specific_user()
{
$user = UserFactory::admin()->create();
$this->be($user);
$this->logger->log('foo');
$this->get("activity/user/{$user->id}/log")
->assertSee('foo');
}
/** @test */
public function search_activities()
{
$this->withoutMiddleware();
$user = UserFactory::create();
$this->be($user);
$this->logger->log('foo');
$this->logger->log('barrr');
$this->get('activity?search=foo')
->assertSee('foo')
->assertDontSee('barrr');
}
}