CaseSubmissionTest.php in Webform CiviCRM Integration 8.5
File
tests/src/FunctionalJavascript/CaseSubmissionTest.php
View source
<?php
namespace Drupal\Tests\webform_civicrm\FunctionalJavascript;
use Drupal\Core\Url;
final class CaseSubmissionTest extends WebformCivicrmTestBase {
public function testCaseSubmission() {
$this
->drupalLogin($this->rootUser);
$this
->enableComponent('CiviCase');
$this->_caseContact = $this
->createIndividual();
$this
->drupalGet(Url::fromRoute('entity.webform.civicrm', [
'webform' => $this->webform
->id(),
]));
$this
->enableCivicrmOnWebform();
$this
->getSession()
->getPage()
->clickLink('Cases');
$this
->getSession()
->getPage()
->selectFieldOption('case_number_of_case', 1);
$this
->assertSession()
->assertWaitOnAjaxRequest();
$this
->getSession()
->getPage()
->selectFieldOption('Update Existing Case', 'Ongoing');
$this
->getSession()
->getPage()
->selectFieldOption('Case Type', 'Housing Support');
$this
->getSession()
->getPage()
->checkField('Case Subject');
$this
->saveCiviCRMSettings();
$this
->drupalGet($this->webform
->toUrl('edit-form'));
$editContact = [
'selector' => "edit-webform-ui-elements-civicrm-1-contact-1-contact-existing-operations",
'widget' => 'Autocomplete',
'default' => '- None -',
];
$this
->editContactElement($editContact);
$caseSubject = "Test Case" . substr(sha1(rand()), 0, 7);
$this
->submitCaseAndVerifyResult($caseSubject);
$caseSubject = "Update Test Case" . substr(sha1(rand()), 0, 7);
$this
->submitCaseAndVerifyResult($caseSubject);
}
protected function submitCaseAndVerifyResult($caseSubject) {
$this
->drupalGet($this->webform
->toUrl('canonical'));
$this
->assertPageNoErrorMessages();
$this
->fillContactAutocomplete('token-input-edit-civicrm-1-contact-1-contact-existing', $this->_caseContact['first_name']);
$this
->assertFieldValue('edit-civicrm-1-contact-1-contact-first-name', $this->_caseContact['first_name']);
$this
->assertFieldValue('edit-civicrm-1-contact-1-contact-last-name', $this->_caseContact['last_name']);
$this
->getSession()
->getPage()
->fillField('Case Subject', $caseSubject);
$this
->getSession()
->getPage()
->pressButton('Submit');
$this
->assertSession()
->pageTextContains('New submission added to CiviCRM Webform Test.');
$case_result = $this->utils
->wf_civicrm_api('Case', 'get', [
'sequential' => 1,
'contact_id' => $this->_caseContact['id'],
]);
$this
->assertEquals(1, $case_result['count']);
$this
->assertEquals($caseSubject, $case_result['values'][0]['subject']);
}
}