From 55ea24232b1d05cec8e4879e6125f51e87e4fcb3 Mon Sep 17 00:00:00 2001 From: Michael Nowina-Krowicki Date: Mon, 28 Jan 2019 14:58:55 +1030 Subject: [PATCH] Test for EmailRecipient Subject with MergeField --- .../Control/UserDefinedFormControllerTest.php | 39 ++++++++++++++++++- tests/Model/EditableFormFieldTest.yml | 4 +- tests/UserFormsTest.yml | 4 +- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/tests/Control/UserDefinedFormControllerTest.php b/tests/Control/UserDefinedFormControllerTest.php index 2a3fe00..434edce 100644 --- a/tests/Control/UserDefinedFormControllerTest.php +++ b/tests/Control/UserDefinedFormControllerTest.php @@ -11,6 +11,7 @@ use SilverStripe\Forms\FormAction; use SilverStripe\ORM\DataObject; use SilverStripe\UserForms\Control\UserDefinedFormController; use SilverStripe\UserForms\Model\EditableFormField\EditableTextField; +use SilverStripe\UserForms\Model\Recipient\EmailRecipient; use SilverStripe\UserForms\Model\Submission\SubmittedFormField; use SilverStripe\UserForms\Model\UserDefinedForm; use SilverStripe\View\ArrayData; @@ -51,10 +52,10 @@ class UserDefinedFormControllerTest extends FunctionalTest $response = $this->submitForm('UserForm_Form_' . $form->ID, null, [$field->Name => 'Basic Value']); // should have a submitted form field now - $submitted = DataObject::get(SubmittedFormField::class, "\"Name\" = 'basic-text-name'"); + $submitted = DataObject::get(SubmittedFormField::class, "\"Name\" = 'basic_text_name'"); $this->assertListAllMatch( [ - 'Name' => 'basic-text-name', + 'Name' => 'basic_text_name', 'Value' => 'Basic Value', 'Title' => 'Basic Text Field' ], @@ -332,4 +333,38 @@ class UserDefinedFormControllerTest extends FunctionalTest $this->assertEquals((string) $action[0]['value'], "Submit", "Submit button has default text"); } + + + public function testRecipientSubjectMergeFields() + { + $form = $this->setupFormFrontend(); + + $recipient = $this->objFromFixture(EmailRecipient::class, 'recipient-1'); + $recipient->EmailSubject = 'Email Subject: $basic_text_name'; + $recipient->write(); + + $this->autoFollowRedirection = false; + $this->clearEmails(); + + // load the form + $this->get($form->URLSegment); + + $field = $this->objFromFixture(EditableTextField::class, 'basic-text'); + + $response = $this->submitForm('UserForm_Form_' . $form->ID, null, [$field->Name => 'Basic Value']); + + // should have a submitted form field now + $submitted = DataObject::get(SubmittedFormField::class, "\"Name\" = 'basic_text_name'"); + $this->assertListAllMatch( + [ + 'Name' => 'basic_text_name', + 'Value' => 'Basic Value', + 'Title' => 'Basic Text Field' + ], + $submitted + ); + + // check emails + $this->assertEmailSent('test@example.com', 'no-reply@example.com', 'Email Subject: Basic Value'); + } } diff --git a/tests/Model/EditableFormFieldTest.yml b/tests/Model/EditableFormFieldTest.yml index f165d5a..b514964 100644 --- a/tests/Model/EditableFormFieldTest.yml +++ b/tests/Model/EditableFormFieldTest.yml @@ -1,10 +1,10 @@ SilverStripe\UserForms\Model\EditableFormField\EditableTextField: basic-text: - Name: basic-text-name + Name: basic_text_name Title: Basic Text Field basic-text-2: - Name: basic-text-name + Name: basic_text_name Title: Basic Text Field required-text: diff --git a/tests/UserFormsTest.yml b/tests/UserFormsTest.yml index dcb4f7b..9098845 100644 --- a/tests/UserFormsTest.yml +++ b/tests/UserFormsTest.yml @@ -63,11 +63,11 @@ SilverStripe\UserForms\Model\EditableFormField\EditableOption: SilverStripe\UserForms\Model\EditableFormField\EditableTextField: basic-text: - Name: basic-text-name + Name: basic_text_name Title: Basic Text Field basic-text-2: - Name: basic-text-name + Name: basic_text_name Title: Basic Text Field your-name-field: