Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\IntegrationsBundle\Tests\Functional\Command; | |
| use Mautic\CoreBundle\Test\MauticMysqlTestCase; | |
| use Mautic\IntegrationsBundle\Command\CleanupCommand; | |
| use Mautic\IntegrationsBundle\Entity\FieldChange; | |
| use Mautic\LeadBundle\Entity\Lead; | |
| use PHPUnit\Framework\Assert; | |
| use Symfony\Component\Console\Command\Command; | |
| class CleanupCommandTest extends MauticMysqlTestCase | |
| { | |
| public function testOrphanFieldChangeRecordDeleted(): void | |
| { | |
| $lead = $this->createLead(); | |
| $fieldChangeExistLead = $this->createFieldChange((int) $lead->getId()); | |
| $fieldChangeNonExistLead = $this->createFieldChange(9999); | |
| $response = $this->testSymfonyCommand(CleanupCommand::NAME); | |
| Assert::assertSame(Command::SUCCESS, $response->getStatusCode()); | |
| Assert::assertStringContainsString('1 records deleted.', $response->getDisplay()); | |
| $fieldChangeRecordDeleted = $this->em->getRepository(FieldChange::class)->findOneBy(['id' => $fieldChangeNonExistLead->getId()]); | |
| Assert::assertNull($fieldChangeRecordDeleted); | |
| $fieldChangeRecordShouldNotDeleted = $this->em->getRepository(FieldChange::class)->findOneBy(['id' => $fieldChangeExistLead->getId()]); | |
| Assert::assertNotNull($fieldChangeRecordShouldNotDeleted); | |
| } | |
| public function testWhenNoRecordsToDelete(): void | |
| { | |
| $response = $this->testSymfonyCommand(CleanupCommand::NAME); | |
| Assert::assertSame(Command::SUCCESS, $response->getStatusCode()); | |
| Assert::assertStringContainsString('0 records deleted.', $response->getDisplay()); | |
| } | |
| private function createFieldChange(int $objectID): FieldChange | |
| { | |
| $fieldChange = new FieldChange(); | |
| $fieldChange->setIntegration('testIntegration'); | |
| $fieldChange->setObjectId($objectID); | |
| $fieldChange->setObjectType(Lead::class); | |
| $fieldChange->setModifiedAt(new \DateTime('now', new \DateTimeZone('UTC'))); | |
| $fieldChange->setColumnName('firstname'); | |
| $fieldChange->setColumnType('string'); | |
| $fieldChange->setColumnValue('test-value'); | |
| $this->em->persist($fieldChange); | |
| $this->em->flush(); | |
| return $fieldChange; | |
| } | |
| private function createLead(): Lead | |
| { | |
| $lead = new Lead(); | |
| $this->em->persist($lead); | |
| $this->em->flush(); | |
| return $lead; | |
| } | |
| } | |