createForm(); $crawler = $this->client->request( Request::METHOD_GET, "/s/forms/preview/{$formId}?email=testform@test.com&firstname=test&description=test-test&checkbox=val1|val3" ); $inputValue = $crawler->filter('input[type=email]')->attr('value'); self::assertSame('testform@test.com', $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%2Bpage@test.com&firstname=test'); $inputValue = $crawler->filter('input[type=email]')->attr('value'); self::assertSame('test+page@test.com', $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' => '