Merge remote-tracking branch 'origin/develop'
This commit is contained in:
@@ -10,7 +10,6 @@ use App\Http\Transformers\ActionlogsTransformer;
|
||||
use App\Http\Transformers\ComponentsTransformer;
|
||||
use App\Models\Asset;
|
||||
use App\Models\Component;
|
||||
use App\Models\ComponentAssignment;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Query\Builder;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
@@ -252,13 +251,11 @@ class ComponentsController extends Controller
|
||||
{
|
||||
$this->authorize('view', Asset::class);
|
||||
|
||||
$component_checkouts = ComponentAssignment::where('component_id', $component->id)->with('adminuser')->with('assets');
|
||||
|
||||
$offset = request('offset', 0);
|
||||
$limit = $request->input('limit', 50);
|
||||
|
||||
if ($request->filled('search')) {
|
||||
$assets = $component_checkouts->assets()
|
||||
$assets = $component->assets()
|
||||
->where(function ($query) use ($request) {
|
||||
$search_str = '%'.$request->input('search').'%';
|
||||
$query->where('name', 'like', $search_str)
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature\Components\Api;
|
||||
|
||||
use App\Models\Asset;
|
||||
use App\Models\Component;
|
||||
use App\Models\User;
|
||||
use Illuminate\Testing\Fluent\AssertableJson;
|
||||
use Tests\TestCase;
|
||||
|
||||
class ComponentAssetsTest extends TestCase
|
||||
{
|
||||
public function test_requires_permission()
|
||||
{
|
||||
$component = Component::factory()->create();
|
||||
|
||||
$this->actingAsForApi(User::factory()->create())
|
||||
->getJson(route('api.components.assets', $component))
|
||||
->assertForbidden();
|
||||
}
|
||||
|
||||
public function test_can_search_assets_assigned_to_specific_component()
|
||||
{
|
||||
$component = Component::factory()->create();
|
||||
$user = User::factory()->viewAssets()->create();
|
||||
|
||||
$matchingAsset = Asset::factory()->create([
|
||||
'name' => 'Laptop 1331',
|
||||
'asset_tag' => 'ASSET-1331',
|
||||
]);
|
||||
|
||||
$nonMatchingAsset = Asset::factory()->create([
|
||||
'name' => 'Laptop 9999',
|
||||
'asset_tag' => 'ASSET-9999',
|
||||
]);
|
||||
|
||||
$component->assets()->attach($matchingAsset->id, [
|
||||
'component_id' => $component->id,
|
||||
'asset_id' => $matchingAsset->id,
|
||||
'assigned_qty' => 2,
|
||||
'created_at' => now(),
|
||||
'created_by' => $user->id,
|
||||
]);
|
||||
|
||||
$component->assets()->attach($nonMatchingAsset->id, [
|
||||
'component_id' => $component->id,
|
||||
'asset_id' => $nonMatchingAsset->id,
|
||||
'assigned_qty' => 1,
|
||||
'created_at' => now(),
|
||||
'created_by' => $user->id,
|
||||
]);
|
||||
|
||||
$this->actingAsForApi($user)
|
||||
->getJson(route('api.components.assets', $component).'?search=1331')
|
||||
->assertOk()
|
||||
->assertJson(function (AssertableJson $json) use ($matchingAsset) {
|
||||
$json->where('total', 1)
|
||||
->count('rows', 1)
|
||||
->where('rows.0.name.id', $matchingAsset->id)
|
||||
->where('rows.0.assigned_qty', 2)
|
||||
->etc();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ use App\Models\Statuslabel;
|
||||
use App\Models\Supplier;
|
||||
use App\Models\User;
|
||||
use Illuminate\Testing\Fluent\AssertableJson;
|
||||
use PHPUnit\Framework\Attributes\Group;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@@ -272,9 +273,8 @@ class SearchableTraitTest extends TestCase
|
||||
|
||||
/**
|
||||
* Test User free-text search on attributes
|
||||
*
|
||||
* @group skip-flaky
|
||||
*/
|
||||
#[Group('skip-flaky')]
|
||||
public function test_user_free_text_search_on_attributes()
|
||||
{
|
||||
// Note: User search includes the acting user in results, making this test flaky
|
||||
|
||||
Reference in New Issue
Block a user