123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Customer\Test\Unit\Model\ResourceModel\Customer;
- use Magento\Customer\Model\ResourceModel\Customer\Grid;
- class GridTest extends \PHPUnit\Framework\TestCase
- {
- /** @var \Magento\Framework\App\ResourceConnection|\PHPUnit_Framework_MockObject_MockObject */
- protected $resource;
- /** @var \Magento\Framework\Indexer\IndexerRegistry|\PHPUnit_Framework_MockObject_MockObject */
- protected $indexerRegistry;
- /** @var \Magento\Framework\Indexer\ScopeResolver\FlatScopeResolver|\PHPUnit_Framework_MockObject_MockObject */
- protected $flatScopeResolver;
- /** @var \Magento\Framework\Indexer\IndexerInterface|\PHPUnit_Framework_MockObject_MockObject */
- protected $indexer;
- /** @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject */
- protected $connection;
- /** @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject */
- protected $select;
- /** @var Grid */
- protected $observer;
- /** @var \Zend_Db_Statement_Interface|\PHPUnit_Framework_MockObject_MockObject */
- protected $queryResult;
- protected function setUp()
- {
- $this->resource = $this->createMock(\Magento\Framework\App\ResourceConnection::class);
- $this->indexerRegistry = $this->createMock(\Magento\Framework\Indexer\IndexerRegistry::class);
- $this->flatScopeResolver = $this->createMock(\Magento\Framework\Indexer\ScopeResolver\FlatScopeResolver::class);
- $this->indexer = $this->getMockForAbstractClass(
- \Magento\Framework\Indexer\IndexerInterface::class,
- [],
- '',
- false
- );
- $this->connection = $this->getMockForAbstractClass(
- \Magento\Framework\DB\Adapter\AdapterInterface::class,
- [],
- '',
- false
- );
- $this->select = $this->createMock(\Magento\Framework\DB\Select::class);
- $this->queryResult = $this->getMockForAbstractClass(
- \Zend_Db_Statement_Interface::class,
- [],
- '',
- false
- );
- $this->observer = new Grid(
- $this->resource,
- $this->indexerRegistry,
- $this->flatScopeResolver
- );
- }
- public function testSyncCustomerGrid()
- {
- $gridTable = 'customer_grid_flat';
- $customerLogTable = 'customer_log';
- $this->indexerRegistry->expects($this->once())
- ->method('get')
- ->with(\Magento\Customer\Model\Customer::CUSTOMER_GRID_INDEXER_ID)
- ->willReturn($this->indexer);
- $this->resource
- ->expects($this->once())
- ->method('getConnection')
- ->willReturn($this->connection);
- $this->flatScopeResolver
- ->expects($this->once())
- ->method('resolve')
- ->with(\Magento\Customer\Model\Customer::CUSTOMER_GRID_INDEXER_ID, [])
- ->willReturn($gridTable);
- $this->resource->expects($this->exactly(2))
- ->method('getTableName')
- ->willReturnMap([
- [$gridTable],
- [$customerLogTable],
- ]);
- $this->connection->expects($this->exactly(2))
- ->method('select')
- ->willReturn($this->select);
- $this->select->expects($this->exactly(2))
- ->method('from')
- ->willReturnSelf();
- $this->select->expects($this->once())
- ->method('order')
- ->with('last_visit_at DESC')
- ->willReturnSelf();
- $this->select->expects($this->once())
- ->method('limit')
- ->with(1)
- ->willReturnSelf();
- $this->connection->expects($this->atLeastOnce())
- ->method('query')
- ->with($this->select)
- ->willReturn($this->queryResult);
- $this->queryResult->expects($this->once())
- ->method('fetchColumn')
- ->willReturn('2015-08-13 10:36:44');
- $this->select->expects($this->once())
- ->method('where')
- ->with('last_login_at > ?', '2015-08-13 10:36:44')
- ->willReturnSelf();
- $this->queryResult->expects($this->once())
- ->method('fetchAll')
- ->willReturn([['customer_id' => 23], ['customer_id' => 65]]);
- $this->indexer->expects($this->once())
- ->method('reindexList')
- ->with(['23', '65']);
- $this->observer->syncCustomerGrid();
- }
- }
|