From eada0b0bb554c5d935039b32b705acc0590f167c Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 9 Sep 2025 11:58:43 -0700 Subject: [PATCH] Implement test --- app/Http/Controllers/Api/AssetsController.php | 9 ++++---- .../Feature/Assets/Api/AssignedAssetsTest.php | 22 ++++++++++++++++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 5acc533cd5..e18944a1f6 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -1298,11 +1298,12 @@ class AssetsController extends Controller 'assigned_type' => Asset::class, ]); - // @todo: offset - // @todo: limit - $total = $query->count(); - $assets = $query->get(); + + $offset = ($request->input('offset') > $total) ? $total : app('api_offset_value'); + $limit = app('api_limit_value'); + + $assets = $query->skip($offset)->take($limit)->get(); return (new AssetsTransformer)->transformAssets($assets, $total); } diff --git a/tests/Feature/Assets/Api/AssignedAssetsTest.php b/tests/Feature/Assets/Api/AssignedAssetsTest.php index dec9215489..2b0fec16c1 100644 --- a/tests/Feature/Assets/Api/AssignedAssetsTest.php +++ b/tests/Feature/Assets/Api/AssignedAssetsTest.php @@ -12,7 +12,7 @@ class AssignedAssetsTest extends TestCase public function test_requires_permission() { $this->actingAsForApi(User::factory()->create()) - ->getJson(route('api.assets.assigned_assets' , Asset::factory()->create())) + ->getJson(route('api.assets.assigned_assets', Asset::factory()->create())) ->assertForbidden(); } @@ -50,4 +50,24 @@ class AssignedAssetsTest extends TestCase ->assertResponseContainsInRows($assetsAssignedToAsset, 'serial') ->assertResponseDoesNotContainInRows($unassociatedAsset, 'serial'); } + + public function test_adheres_to_offset_and_limit() + { + $asset = Asset::factory()->hasAssignedAssets(2)->create(); + + $assetsAssignedToAsset = Asset::where([ + 'assigned_to' => $asset->id, + 'assigned_type' => Asset::class, + ])->get(); + + $this->actingAsForApi(User::factory()->viewAssets()->create()) + ->getJson(route('api.assets.assigned_assets', [ + 'asset' => $asset, + 'offset' => 1, + 'limit' => 1, + ])) + ->assertOk() + ->assertResponseDoesNotContainInRows($assetsAssignedToAsset->first(), 'serial') + ->assertResponseContainsInRows($assetsAssignedToAsset->last(), 'serial'); + } }