PHP code example of tkaratug / eloquent-scope-assertion
1. Go to this page and download the library: Download tkaratug/eloquent-scope-assertion library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tkaratug / eloquent-scope-assertion example snippets
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Tkaratug\EloquentScopeAssertion\Traits\HasScopeAssertion;
use Illuminate\Support\Facades\Event;
use App\Events\ModelScopeCalled;
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
use HasScopeAssertion;
public function setUp(): void
{
parent::setUp();
Event::fake([ModelScopeCalled::class]);
}
}
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Tkaratug\EloquentScopeAssertion\Traits\HasScopeWatcher;
class Order extends Model
{
use HasFactory;
use HasScopeWatcher;
public function scopeUnpaid(Builder $query): Builder
{
return $query->where('is_paid', false);
}
public function scopeCreatedAtDesc(Builder $query): Builder
{
return $query->latest('created_at');
}
}
use App\Models\Order;
use App\Http\Resources\OrderResource;
public OrderController extends Controller
{
public function index(): void
{
$orders = Order::query()
->unpaid()
->createdAtDesc()
->get();
return OrderResource::collection($orders);
}
}
use App\Models\Order;
use Illuminate\Database\Eloquent\Factories\Sequence;
class OrderControllerTest extends TestCase
{
public function user_can_get_unpaid_orders_sorted_by_creation_date_descenting(): void
{
Order::factory()
->unpaid()
->createMany([
['created_at' => Carbon::parse('7 days ago')],
['created_at' => Carbon::parse('14 days ago')],
['created_at' => Carbon::parse('21 days ago')],
]);
$response = $this->get(route('orders.index'));
$response->assertOk();
$this->assertScopeCalled('unpaid', Order::class);
$this->assertScopeCalled('createdAtDesc', Order::class);
}
}
// The `unpaid` scope must have been called 2 times in tested code.
$this->assertScopeCalled('unpaid', Order::class, 2);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.