From 31455e7c246d72ab98d7f7da5631d12df0c1a045 Mon Sep 17 00:00:00 2001 From: Chirag Chhatrala <60499540+chiragchhatrala@users.noreply.github.com> Date: Mon, 3 Jun 2024 13:44:59 +0530 Subject: [PATCH] confirmation email integration fixes (#434) --- .../Integrations/SubmissionConfirmationIntegration.php | 9 +++++++++ .../integrations/SubmissionConfirmationIntegration.vue | 3 ++- tests/Feature/Forms/ConfirmationEmailTest.php | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/Service/Forms/Integrations/SubmissionConfirmationIntegration.php b/app/Service/Forms/Integrations/SubmissionConfirmationIntegration.php index cc84eed1..8b8f453b 100644 --- a/app/Service/Forms/Integrations/SubmissionConfirmationIntegration.php +++ b/app/Service/Forms/Integrations/SubmissionConfirmationIntegration.php @@ -17,6 +17,15 @@ class SubmissionConfirmationIntegration extends AbstractIntegrationHandler public static function getValidationRules(): array { return [ + 'respondent_email' => [ + 'required', + 'boolean', + function ($attribute, $value, $fail) { + if ($value !== true) { + $fail('Need at least 1 email field.'); + } + }, + ], 'confirmation_reply_to' => 'email|nullable', 'notification_sender' => 'required', 'notification_subject' => 'required', diff --git a/client/components/open/integrations/SubmissionConfirmationIntegration.vue b/client/components/open/integrations/SubmissionConfirmationIntegration.vue index b7c3362f..832c3768 100644 --- a/client/components/open/integrations/SubmissionConfirmationIntegration.vue +++ b/client/components/open/integrations/SubmissionConfirmationIntegration.vue @@ -81,13 +81,14 @@ const emailSubmissionConfirmationHelp = computed(() => { onBeforeMount(() => { for (const [keyname, defaultValue] of Object.entries({ + respondent_email: emailSubmissionConfirmationField.value !== null, notification_sender: "OpnForm", notification_subject: "We saved your answers", notification_body: "Hello there 👋
This is a confirmation that your submission was successfully saved.", notifications_include_submission: true, })) { - if (props.integrationData.settings[keyname] === undefined) { + if (keyname === 'respondent_email' || props.integrationData.settings[keyname] === undefined) { props.integrationData.settings[keyname] = defaultValue } } diff --git a/tests/Feature/Forms/ConfirmationEmailTest.php b/tests/Feature/Forms/ConfirmationEmailTest.php index d98feab6..83b07d5f 100644 --- a/tests/Feature/Forms/ConfirmationEmailTest.php +++ b/tests/Feature/Forms/ConfirmationEmailTest.php @@ -8,6 +8,7 @@ it('creates confirmation emails with the submitted data', function () { $workspace = $this->createUserWorkspace($user); $form = $this->createForm($user, $workspace); $integrationData = $this->createFormIntegration('submission_confirmation', $form->id, [ + 'respondent_email' => true, 'notifications_include_submission' => true, 'notification_sender' => 'Custom Sender', 'notification_subject' => 'Test subject', @@ -31,6 +32,7 @@ it('creates confirmation emails without the submitted data', function () { $workspace = $this->createUserWorkspace($user); $form = $this->createForm($user, $workspace); $integrationData = $this->createFormIntegration('submission_confirmation', $form->id, [ + 'respondent_email' => true, 'notifications_include_submission' => false, 'notification_sender' => 'Custom Sender', 'notification_subject' => 'Test subject', @@ -55,6 +57,7 @@ it('sends a confirmation email if needed', function () { $form = $this->createForm($user, $workspace); $this->createFormIntegration('submission_confirmation', $form->id, [ + 'respondent_email' => true, 'notifications_include_submission' => true, 'notification_sender' => 'Custom Sender', 'notification_subject' => 'Test subject', @@ -118,6 +121,7 @@ it('does send a confirmation email even when reply to is broken', function () { $workspace = $this->createUserWorkspace($user); $form = $this->createForm($user, $workspace); $integrationData = $this->createFormIntegration('submission_confirmation', $form->id, [ + 'respondent_email' => true, 'notifications_include_submission' => true, 'notification_sender' => 'Custom Sender', 'notification_subject' => 'Test subject',