Spaces:
No application file
No application file
File size: 2,883 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
<?php
declare(strict_types=1);
namespace Mautic\LeadBundle\Tests\Segment\Query;
use Doctrine\DBAL\Connection;
use Doctrine\ORM\EntityManager;
use Mautic\CoreBundle\Test\Doctrine\MockedConnectionTrait;
use Mautic\LeadBundle\Segment\Query\ContactSegmentQueryBuilder;
use Mautic\LeadBundle\Segment\Query\QueryBuilder;
use Mautic\LeadBundle\Segment\RandomParameterName;
use PHPUnit\Framework\Assert;
use PHPUnit\Framework\TestCase;
use Symfony\Component\EventDispatcher\EventDispatcher;
class ContactSegmentQueryBuilderTest extends TestCase
{
use MockedConnectionTrait;
public function testAddNewContactsRestrictions(): void
{
$queryBuilder = new QueryBuilder($this->createConnection());
$queryBuilder->select('1');
$queryBuilder->from(MAUTIC_TABLE_PREFIX.'leads', 'l');
$queryBuilder->where('NULL');
$filterQueryBuilder = new ContactSegmentQueryBuilder($this->createMock(EntityManager::class), new RandomParameterName(), new EventDispatcher());
Assert::assertSame($queryBuilder, $filterQueryBuilder->addNewContactsRestrictions($queryBuilder, 8));
Assert::assertSame('SELECT 1 FROM '.MAUTIC_TABLE_PREFIX.'leads l WHERE (NULL) AND (l.id NOT IN (SELECT par0.lead_id FROM '.MAUTIC_TABLE_PREFIX.'lead_lists_leads par0 WHERE par0.leadlist_id = 8))', $queryBuilder->getDebugOutput());
}
/**
* @return array<mixed>
*/
public function dataAddNewContactsRestrictionsWithBatchLimiters(): iterable
{
yield [['minId' => 1, 'maxId' => 2], 'par0.lead_id BETWEEN 1 and 2'];
yield [['minId' => 1], 'par0.lead_id >= 1'];
yield [['maxId' => 2], 'par0.lead_id <= 2'];
yield [['lead_id' => 1], 'par0.lead_id = 1'];
}
/**
* @dataProvider dataAddNewContactsRestrictionsWithBatchLimiters
*
* @param array<string, mixed> $batchLimiters
*/
public function testAddNewContactsRestrictionsWithBatchLimiters(array $batchLimiters, string $expectedWhereClause): void
{
$queryBuilder = new QueryBuilder($this->createConnection());
$queryBuilder->select('1');
$queryBuilder->from(MAUTIC_TABLE_PREFIX.'leads', 'l');
$queryBuilder->where('NULL');
$filterQueryBuilder = new ContactSegmentQueryBuilder($this->createMock(EntityManager::class), new RandomParameterName(), new EventDispatcher());
Assert::assertSame($queryBuilder, $filterQueryBuilder->addNewContactsRestrictions($queryBuilder, 8, $batchLimiters));
Assert::assertSame('SELECT 1 FROM '.MAUTIC_TABLE_PREFIX.'leads l WHERE (NULL) AND (l.id NOT IN (SELECT par0.lead_id FROM '.MAUTIC_TABLE_PREFIX.'lead_lists_leads par0 WHERE (par0.leadlist_id = 8) AND ('.$expectedWhereClause.')))', $queryBuilder->getDebugOutput());
}
private function createConnection(): Connection
{
return $this->getMockedConnection();
}
}
|