روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ دانشجوی سون‌لرن
page and page szize
جامعه پی اچ پی ایجاد شده در ۱۱ شهریور ۱۴۰۱

سوال اول اینکه چرا تو if اول page رو مساوی totalRecords قرار دادید؟ totalPage باید باشه دیگه؟

if ($page >$totalPages){
    $page = $totalRecords;
}

سوال دوم اینکه فکر میکنم باید یه شرط دیگه هم بزاریم برای مواقعی که تعداد کل رکوردها، کوجک‌تر از پیج سایز هست. الان من که اگه ۲۰ تا رکورد داشته باشم و پیج سایز رو ۲۵ پاس بدم خطا میخورم تو assertCount().

jsonBaseRepository.php

public function paginate(string $search = null, int $page, int $pageSize = 20)
{
    $users = json_decode(file_get_contents(base_path().'/users.json'), true);
    $totalRecords = count($users);
    if ($pageSize>$totalRecords){
        $pageSize = $totalRecords;
    }
    $totalPages = ceil($totalRecords / $pageSize);
    if ($page >$totalPages){
        $page = $totalPages+1;
    }
    if ($page < 1){
        $page = 1;
    }
    $offset = ($page-1)*$pageSize;
    return array_slice($users, $offset, $pageSize);
}

UsersTest.php

public function test_should_view_all_users()
{
    $pageSize = 25;
    $response = $this->call('GET', 'api/v1/users', [
        'page'=> 1,
        'pageSize'=> $pageSize,
    ]);
    $data = json_decode($response->getContent(), true);
    if($pageSize > $this->count($data['data'])){
        $pageSize= count($data['data']);
    }
    $this->assertCount($pageSize, $data['data'] );
    $this->assertEquals(200, $response->status());
    $this->seeJsonStructure([
            'success',
            'message',
            'data' => [
            ]
    ]);
}

سلام صباح عزیز

این سرفصل در حال بازتولید هست و در اون خیلی موارد تغییر پیدا می‌کنه

موفق باشید ?

بهترین پاسخ
محمد گازری ۱۶ شهریور ۱۴۰۱، ۱۶:۰۶