Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\FormBundle\Tests\Model; | |
use Mautic\CoreBundle\Test\MauticMysqlTestCase; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Component\HttpFoundation\Response; | |
class FormModelFunctionalTest extends MauticMysqlTestCase | |
{ | |
protected $useCleanupRollback = false; | |
public function testPopulateValuesWithGetParameters(): void | |
{ | |
$formId = $this->createForm(); | |
$crawler = $this->client->request( | |
Request::METHOD_GET, | |
"/s/forms/preview/{$formId}[email protected]&firstname=test&description=test-test&checkbox=val1|val3" | |
); | |
$inputValue = $crawler->filter('input[type=email]')->attr('value'); | |
self::assertSame('[email protected]', $inputValue); | |
$inputValue = $crawler->filter('input[type=text]')->attr('value'); | |
self::assertSame('test', $inputValue); | |
$inputValue = $crawler->filter('textarea[name^=mauticform]')->html(); | |
self::assertSame('test-test', $inputValue); | |
$inputValue = $crawler->filter('textarea[name^=mauticform]')->html(); | |
self::assertSame('test-test', $inputValue); | |
$inputValue = $crawler->filter('input[value^=val1]')->attr('checked'); | |
self::assertSame('checked', $inputValue); | |
$inputValue = $crawler->filter('input[value^=val2]')->attr('checked'); | |
self::assertNull($inputValue); | |
$inputValue = $crawler->filter('input[value^=val3]')->attr('checked'); | |
self::assertSame('checked', $inputValue); | |
$this->createPage($formId); | |
$crawler = $this->client->request(Request::METHOD_GET, '/test-page?email=test%[email protected]&firstname=test'); | |
$inputValue = $crawler->filter('input[type=email]')->attr('value'); | |
self::assertSame('[email protected]', $inputValue); | |
$inputValue = $crawler->filter('input[type=text]')->attr('value'); | |
self::assertSame('test', $inputValue); | |
} | |
private function createForm(): int | |
{ | |
$formPayload = [ | |
'name' => 'Test Form', | |
'formType' => 'standalone', | |
'description' => 'API test', | |
'fields' => [ | |
[ | |
'label' => 'firstname', | |
'alias' => 'firstname', | |
'type' => 'text', | |
], | |
[ | |
'label' => 'email', | |
'alias' => 'email', | |
'type' => 'email', | |
'leadField' => 'email', | |
], | |
[ | |
'label' => 'description', | |
'alias' => 'description', | |
'type' => 'textarea', | |
], | |
[ | |
'label' => 'checkbox', | |
'alias' => 'checkbox', | |
'type' => 'checkboxgrp', | |
'properties' => [ | |
'syncList' => 0, | |
'optionlist' => [ | |
'list' => [ | |
[ | |
'label' => 'val1', | |
'value' => 'val1', | |
], | |
[ | |
'label' => 'val2', | |
'value' => 'val2', | |
], | |
[ | |
'label' => 'val3', | |
'value' => 'val3', | |
], | |
], | |
], | |
'labelAttributes' => null, | |
], | |
], | |
[ | |
'label' => 'Submit', | |
'alias' => 'submit', | |
'type' => 'button', | |
], | |
], | |
'postAction' => 'return', | |
]; | |
$this->client->request('POST', '/api/forms/new', $formPayload); | |
$clientResponse = $this->client->getResponse(); | |
$this->assertEquals(Response::HTTP_CREATED, $clientResponse->getStatusCode(), $clientResponse->getContent()); | |
$response = json_decode($clientResponse->getContent(), true); | |
return $response['form']['id']; | |
} | |
private function createPage(int $formId): void | |
{ | |
$pagePayload = [ | |
'title' => 'Test Page', | |
'alias' => 'test-page', | |
'description' => 'This is my first page created via API.', | |
'isPublished' => true, | |
'customHtml' => '<!DOCTYPE html> | |
<html> | |
<head> | |
<title>Test Page</title> | |
<meta name="description" content="Test Page" /> | |
</head> | |
<body> | |
<div class="container"> | |
<div>{form='.$formId.'}</div> | |
</div> | |
</body> | |
</html>', | |
]; | |
$this->client->request('POST', '/api/pages/new', $pagePayload); | |
$clientResponse = $this->client->getResponse(); | |
$this->assertEquals(Response::HTTP_CREATED, $clientResponse->getStatusCode(), $clientResponse->getContent()); | |
} | |
} | |