diff --git a/assets/js/src/form_editor/store/form_validator.jsx b/assets/js/src/form_editor/store/form_validator.jsx index 5539076963..6d8dd476f5 100644 --- a/assets/js/src/form_editor/store/form_validator.jsx +++ b/assets/js/src/form_editor/store/form_validator.jsx @@ -7,8 +7,12 @@ export default (formData, formBlocks) => { if (!Array.isArray(formBlocks)) { throw new Error('formBlocks are expected to be an array.'); } + const customSegmentsBlock = findBlock(formBlocks, 'mailpoet-form/segment-select'); const errors = []; - if (!formData.settings.segments || formData.settings.segments.length === 0) { + if ( + (!customSegmentsBlock || customSegmentsBlock.attributes.values.length === 0) + && (!formData.settings.segments || formData.settings.segments.length === 0) + ) { errors.push('missing-lists'); } const emailInput = findBlock(formBlocks, 'mailpoet-form/email-input'); diff --git a/tests/javascript/form_editor/store/form_validator.spec.js b/tests/javascript/form_editor/store/form_validator.spec.js index 6c78cb0e30..833605e83b 100644 --- a/tests/javascript/form_editor/store/form_validator.spec.js +++ b/tests/javascript/form_editor/store/form_validator.spec.js @@ -21,6 +21,16 @@ const submitBlock = { }, }; +const segmentsBlock = { + clientId: 'segments', + isValid: true, + innerBlocks: [], + name: 'mailpoet-form/segment-select', + attributes: { + values: [], + }, +}; + const columns = { clientId: 'columns-1', name: 'core/columns', @@ -71,11 +81,24 @@ describe('Form validator', () => { segments: [], }, }; - const blocks = [emailBlock, submitBlock]; + const blocks = [emailBlock, submitBlock, segmentsBlock]; const result = validate(formData, blocks); expect(result).to.contain('missing-lists'); }); + it('Should not return error for when segments block with lists is present', () => { + const filledSegmentsBlock = { ...segmentsBlock }; + filledSegmentsBlock.attributes.values = [{ id: 1, name: 'cool people' }]; + const formData = { + settings: { + segments: [], + }, + }; + const blocks = [emailBlock, submitBlock, filledSegmentsBlock]; + const result = validate(formData, blocks); + expect(result).to.be.empty; + }); + it('Should return error for missing email', () => { const formData = { settings: {