Initial commit: CloudOps infrastructure platform
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Mautic\SmsBundle\Tests\Controller;
|
||||
|
||||
use Mautic\CoreBundle\Test\MauticMysqlTestCase;
|
||||
use PHPUnit\Framework\Assert;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
class AjaxControllerFunctionalTest extends MauticMysqlTestCase
|
||||
{
|
||||
public function testGetBuilderTokensAction(): void
|
||||
{
|
||||
$this->client->request(Request::METHOD_POST, '/s/ajax?action=sms:getBuilderTokens');
|
||||
Assert::assertTrue($this->client->getResponse()->isOk());
|
||||
$tokens = json_decode($this->client->getResponse()->getContent(), true);
|
||||
$this->assertArrayHasKey('tokens', $tokens);
|
||||
$this->assertArrayHasKey('{contactfield=email}', $tokens['tokens']);
|
||||
$this->assertArrayHasKey('{ownerfield=email}', $tokens['tokens']);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Mautic\SmsBundle\Tests\Controller;
|
||||
|
||||
use Mautic\CoreBundle\Test\MauticMysqlTestCase;
|
||||
use Mautic\ProjectBundle\Entity\Project;
|
||||
use Mautic\SmsBundle\Entity\Sms;
|
||||
use PHPUnit\Framework\Assert;
|
||||
|
||||
final class SMSControllerFunctionalTest extends MauticMysqlTestCase
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->configParams['site_url'] = 'https://localhost';
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
public function testSmsWithProject(): void
|
||||
{
|
||||
$sms = $this->CreateSms();
|
||||
|
||||
$project = new Project();
|
||||
$project->setName('Test Project');
|
||||
$this->em->persist($project);
|
||||
|
||||
$this->em->flush();
|
||||
$this->em->clear();
|
||||
|
||||
$crawler = $this->client->request('GET', '/s/sms/edit/'.$sms->getId());
|
||||
$form = $crawler->selectButton('Save')->form();
|
||||
$form['sms[projects]']->setValue((string) $project->getId());
|
||||
|
||||
$this->client->submit($form);
|
||||
|
||||
$this->assertResponseIsSuccessful();
|
||||
|
||||
$savedSms = $this->em->find(Sms::class, $sms->getId());
|
||||
Assert::assertSame($project->getId(), $savedSms->getProjects()->first()->getId());
|
||||
}
|
||||
|
||||
private function CreateSms(string $name = 'sms', string $message = 'sms body'): Sms
|
||||
{
|
||||
$sms = new Sms();
|
||||
$sms->setName($name);
|
||||
$sms->setMessage($message);
|
||||
$sms->setSmsType('template');
|
||||
$this->em->persist($sms);
|
||||
$this->em->flush();
|
||||
|
||||
return $sms;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Mautic\SmsBundle\Tests\Controller;
|
||||
|
||||
use Mautic\ProjectBundle\Tests\Functional\AbstractProjectSearchTestCase;
|
||||
use Mautic\SmsBundle\Entity\Sms;
|
||||
|
||||
final class SmsProjectSearchFunctionalTest extends AbstractProjectSearchTestCase
|
||||
{
|
||||
#[\PHPUnit\Framework\Attributes\DataProvider('searchDataProvider')]
|
||||
public function testProjectSearch(string $searchTerm, array $expectedEntities, array $unexpectedEntities): void
|
||||
{
|
||||
$projectOne = $this->createProject('Project One');
|
||||
$projectTwo = $this->createProject('Project Two');
|
||||
$projectThree = $this->createProject('Project Three');
|
||||
|
||||
$smsAlpha = $this->createSms('Sms Alpha');
|
||||
$smsBeta = $this->createSms('Sms Beta');
|
||||
$this->createSms('Sms Gamma');
|
||||
$this->createSms('Sms Delta');
|
||||
|
||||
$smsAlpha->addProject($projectOne);
|
||||
$smsAlpha->addProject($projectTwo);
|
||||
$smsBeta->addProject($projectTwo);
|
||||
$smsBeta->addProject($projectThree);
|
||||
|
||||
$this->em->flush();
|
||||
$this->em->clear();
|
||||
|
||||
$this->searchAndAssert($searchTerm, $expectedEntities, $unexpectedEntities, ['/api/smses', '/s/sms']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Generator<string, array{searchTerm: string, expectedEntities: array<string>, unexpectedEntities: array<string>}>
|
||||
*/
|
||||
public static function searchDataProvider(): \Generator
|
||||
{
|
||||
yield 'search by one project' => [
|
||||
'searchTerm' => 'project:"Project Two"',
|
||||
'expectedEntities' => ['Sms Alpha', 'Sms Beta'],
|
||||
'unexpectedEntities' => ['Sms Gamma', 'Sms Delta'],
|
||||
];
|
||||
|
||||
yield 'search by one project AND sms name' => [
|
||||
'searchTerm' => 'project:"Project Two" AND Beta',
|
||||
'expectedEntities' => ['Sms Beta'],
|
||||
'unexpectedEntities' => ['Sms Alpha', 'Sms Gamma', 'Sms Delta'],
|
||||
];
|
||||
|
||||
yield 'search by one project OR sms name' => [
|
||||
'searchTerm' => 'project:"Project Two" OR Gamma',
|
||||
'expectedEntities' => ['Sms Alpha', 'Sms Beta', 'Sms Gamma'],
|
||||
'unexpectedEntities' => ['Sms Delta'],
|
||||
];
|
||||
|
||||
yield 'search by NOT one project' => [
|
||||
'searchTerm' => '!project:"Project Two"',
|
||||
'expectedEntities' => ['Sms Gamma', 'Sms Delta'],
|
||||
'unexpectedEntities' => ['Sms Alpha', 'Sms Beta'],
|
||||
];
|
||||
|
||||
yield 'search by two projects with AND' => [
|
||||
'searchTerm' => 'project:"Project Two" AND project:"Project Three"',
|
||||
'expectedEntities' => ['Sms Beta'],
|
||||
'unexpectedEntities' => ['Sms Alpha', 'Sms Gamma', 'Sms Delta'],
|
||||
];
|
||||
|
||||
yield 'search by two projects with NOT AND' => [
|
||||
'searchTerm' => '!project:"Project Two" AND !project:"Project Three"',
|
||||
'expectedEntities' => ['Sms Gamma', 'Sms Delta'],
|
||||
'unexpectedEntities' => ['Sms Alpha', 'Sms Beta'],
|
||||
];
|
||||
|
||||
yield 'search by two projects with OR' => [
|
||||
'searchTerm' => 'project:"Project Two" OR project:"Project Three"',
|
||||
'expectedEntities' => ['Sms Alpha', 'Sms Beta'],
|
||||
'unexpectedEntities' => ['Sms Gamma', 'Sms Delta'],
|
||||
];
|
||||
|
||||
yield 'search by two projects with NOT OR' => [
|
||||
'searchTerm' => '!project:"Project Two" OR !project:"Project Three"',
|
||||
'expectedEntities' => ['Sms Alpha', 'Sms Gamma', 'Sms Delta'],
|
||||
'unexpectedEntities' => ['Sms Beta'],
|
||||
];
|
||||
}
|
||||
|
||||
private function createSms(string $name): Sms
|
||||
{
|
||||
$sms = new Sms();
|
||||
$sms->setName($name);
|
||||
$sms->setMessage('Message for '.$name);
|
||||
$this->em->persist($sms);
|
||||
|
||||
return $sms;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user