Spaces:
No application file
No application file
namespace Mautic\LeadBundle\Tests\Model; | |
use Mautic\CoreBundle\Translation\Translator; | |
use Mautic\FormBundle\Entity\Field; | |
use Mautic\LeadBundle\Model\CompanyReportData; | |
use Mautic\LeadBundle\Model\FieldModel; | |
use Mautic\ReportBundle\Event\ReportGeneratorEvent; | |
use Symfony\Contracts\Translation\TranslatorInterface; | |
class CompanyReportDataTest extends \PHPUnit\Framework\TestCase | |
{ | |
/** | |
* @var TranslatorInterface | |
*/ | |
private \PHPUnit\Framework\MockObject\MockObject $translator; | |
protected function setUp(): void | |
{ | |
$this->translator = $this->getMockBuilder(Translator::class) | |
->disableOriginalConstructor() | |
->getMock(); | |
$this->translator->method('trans') | |
->willReturnCallback( | |
fn ($key) => $key | |
); | |
} | |
/** | |
* @covers \Mautic\LeadBundle\Model\CompanyReportData::getCompanyData | |
*/ | |
public function testGetCompanyData(): void | |
{ | |
$fieldModelMock = $this->getMockBuilder(FieldModel::class) | |
->disableOriginalConstructor() | |
->getMock(); | |
$field1 = new Field(); | |
$field1->setType('boolean'); | |
$field1->setAlias('boolField'); | |
$field1->setLabel('boolFieldLabel'); | |
$field2 = new Field(); | |
$field2->setType('email'); | |
$field2->setAlias('emailField'); | |
$field2->setLabel('emailFieldLabel'); | |
$fields = [ | |
$field1, | |
$field2, | |
]; | |
$fieldModelMock->expects($this->once()) | |
->method('getEntities') | |
->willReturn($fields); | |
$companyReportData = new CompanyReportData($fieldModelMock, $this->translator); | |
$result = $companyReportData->getCompanyData(); | |
$expected = [ | |
'comp.id' => [ | |
'alias' => 'comp_id', | |
'label' => 'mautic.lead.report.company.company_id', | |
'type' => 'int', | |
'link' => 'mautic_company_action', | |
], | |
'companies_lead.is_primary' => [ | |
'label' => 'mautic.lead.report.company.is_primary', | |
'type' => 'bool', | |
], | |
'companies_lead.date_added' => [ | |
'label' => 'mautic.lead.report.company.date_added', | |
'type' => 'datetime', | |
], | |
'comp.boolField' => [ | |
'label' => 'mautic.report.field.company.label', | |
'type' => 'bool', | |
], | |
'comp.emailField' => [ | |
'label' => 'mautic.report.field.company.label', | |
'type' => 'email', | |
], | |
]; | |
$this->assertSame($expected, $result); | |
} | |
/** | |
* @covers \Mautic\LeadBundle\Model\CompanyReportData::eventHasCompanyColumns | |
*/ | |
public function testEventHasCompanyColumns(): void | |
{ | |
$fieldModelMock = $this->getMockBuilder(FieldModel::class) | |
->disableOriginalConstructor() | |
->getMock(); | |
$eventMock = $this->getMockBuilder(ReportGeneratorEvent::class) | |
->disableOriginalConstructor() | |
->getMock(); | |
$field = new Field(); | |
$field->setType('email'); | |
$field->setAlias('email'); | |
$field->setLabel('Email'); | |
$fieldModelMock->expects($this->once()) | |
->method('getEntities') | |
->willReturn([$field]); | |
$eventMock->expects($this->once()) | |
->method('hasColumn') | |
->with('comp.id') | |
->willReturn(true); | |
$companyReportData = new CompanyReportData($fieldModelMock, $this->translator); | |
$result = $companyReportData->eventHasCompanyColumns($eventMock); | |
$this->assertTrue($result); | |
} | |
/** | |
* @covers \Mautic\LeadBundle\Model\CompanyReportData::eventHasCompanyColumns | |
*/ | |
public function testEventDoesNotHaveCompanyColumns(): void | |
{ | |
$fieldModelMock = $this->getMockBuilder(FieldModel::class) | |
->disableOriginalConstructor() | |
->getMock(); | |
$eventMock = $this->getMockBuilder(ReportGeneratorEvent::class) | |
->disableOriginalConstructor() | |
->getMock(); | |
$field = new Field(); | |
$field->setType('email'); | |
$field->setAlias('email'); | |
$field->setLabel('Email'); | |
$fieldModelMock->expects($this->once()) | |
->method('getEntities') | |
->willReturn([$field]); | |
$eventMock->expects($this->any()) | |
->method('hasColumn') | |
->willReturn(false); | |
$companyReportData = new CompanyReportData($fieldModelMock, $this->translator); | |
$result = $companyReportData->eventHasCompanyColumns($eventMock); | |
$this->assertFalse($result); | |
} | |
} | |