Fix #20226: Revert all PR for "Data providers perform unnecessary COUNT queries that negatively affect performance"

This commit is contained in:
Wilmer Arambula
2024-07-12 01:48:58 -04:00
committed by GitHub
parent 5f5ef64892
commit a6257d8f46
10 changed files with 86 additions and 158 deletions

View File

@ -10,7 +10,6 @@ namespace yiiunit\framework\rest;
use yii\base\Model;
use yii\data\ArrayDataProvider;
use yii\rest\Serializer;
use yii\web\Request;
use yiiunit\TestCase;
/**
@ -416,56 +415,6 @@ class SerializerTest extends TestCase
$this->assertEquals($expectedResult, $serializer->serialize($dataProvider));
}
/**
* @dataProvider dataProviderSerializeDataProvider
*
* @param \yii\data\DataProviderInterface $dataProvider
* @param array $expectedResult
* @param bool $saveKeys
*/
public function testHeadSerializeDataProvider($dataProvider, $expectedResult, $saveKeys = false)
{
$serializer = new Serializer();
$serializer->preserveKeys = $saveKeys;
$serializer->collectionEnvelope = 'data';
$this->assertEquals($expectedResult, $serializer->serialize($dataProvider)['data']);
$_SERVER['REQUEST_METHOD'] = 'HEAD';
$request = new Request();
$_POST[$request->methodParam] = 'HEAD';
$serializer = new Serializer([
'request' => $request
]);
$serializer->preserveKeys = $saveKeys;
$this->assertEmpty($serializer->serialize($dataProvider));
$this->assertNotEmpty($serializer->response->getHeaders()->get($serializer->totalCountHeader));
$arrayDataProviderMock = $this->getMockBuilder(ArrayDataProvider::className())
->disableOriginalConstructor()
->getMock();
// stub getModels to prevent empty
$arrayDataProviderMock
->method('getModels')
->willReturn($expectedResult);
// stub getPagination for header
$arrayDataProviderMock
->method('getPagination')
->willReturn($dataProvider->getPagination());
// assert normal HEAD is empty response
$this->assertEmpty($serializer->serialize($arrayDataProviderMock));
// Test #20002: Set up the expectation for the getModels method
$arrayDataProviderMock->expects($this->never())
->method('getModels');
// reset Method
unset($_POST[$request->methodParam], $_SERVER['REQUEST_METHOD']);
}
/**
* @see https://github.com/yiisoft/yii2/issues/16334
*/