diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e19df6..175c854 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,9 +2,9 @@ name: CI on: push: - branches: [ main, master, develop ] + branches: [ main, master, develop, 2.2 ] pull_request: - branches: [ main, master, develop ] + branches: [ main, master, develop, 2.2 ] jobs: tests: diff --git a/tests/ParseTest.php b/tests/ParseTest.php index 28ce1a3..523f649 100644 --- a/tests/ParseTest.php +++ b/tests/ParseTest.php @@ -22,8 +22,11 @@ public function testParseEmailAddresses() // Check if test specifies use_whitespace_as_separator option $useWhitespaceAsSeparator = $test['use_whitespace_as_separator'] ?? true; - // Configure Parse to support both comma and semicolon as separators - $options = new ParseOptions(['%', '!'], [',', ';'], $useWhitespaceAsSeparator); + // Check if test specifies custom separators + $separators = $test['separators'] ?? [',', ';']; + + // Configure Parse to support configured separators + $options = new ParseOptions(['%', '!'], $separators, $useWhitespaceAsSeparator); $parser = new Parse(null, $options); $this->assertSame($result, $parser->parse($emails, $multiple)); diff --git a/tests/testspec.yml b/tests/testspec.yml index 52d7285..f848c7f 100644 --- a/tests/testspec.yml +++ b/tests/testspec.yml @@ -1715,3 +1715,201 @@ ip: '' invalid: false invalid_reason: null +- + emails: 'john@example.com;jane@example.com' + multiple: true + separators: [','] + use_whitespace_as_separator: false + result: + success: false + reason: 'Invalid email address' + email_addresses: + - + address: '' + simple_address: '' + original_address: 'john@example.com;jane@example.com' + name: '' + name_parsed: '' + local_part: john + local_part_parsed: john + domain_part: 'example.com' + domain: 'example.com' + ip: '' + invalid: true + invalid_reason: 'Invalid character found in domain of email address (please put in quotes if needed): '';''' +- + emails: 'john@example.com, jane@example.com' + multiple: true + separators: [';'] + use_whitespace_as_separator: false + result: + success: false + reason: 'Invalid email address' + email_addresses: + - + address: '' + simple_address: '' + original_address: 'john@example.com, jane@example.com' + name: '' + name_parsed: '' + local_part: john + local_part_parsed: john + domain_part: 'example.com' + domain: 'example.com' + ip: '' + invalid: true + invalid_reason: 'Invalid character found in domain of email address (please put in quotes if needed): '',''' +- + emails: 'john@example.com, jane@example.com' + multiple: true + separators: [','] + result: + success: true + reason: null + email_addresses: + - + address: john@example.com + simple_address: john@example.com + original_address: john@example.com + name: '' + name_parsed: '' + local_part: john + local_part_parsed: john + domain_part: example.com + domain: example.com + ip: '' + invalid: false + invalid_reason: null + - + address: jane@example.com + simple_address: jane@example.com + original_address: jane@example.com + name: '' + name_parsed: '' + local_part: jane + local_part_parsed: jane + domain_part: example.com + domain: example.com + ip: '' + invalid: false + invalid_reason: null +- + emails: 'john@example.com; jane@example.com' + multiple: true + separators: [';'] + result: + success: true + reason: null + email_addresses: + - + address: john@example.com + simple_address: john@example.com + original_address: john@example.com + name: '' + name_parsed: '' + local_part: john + local_part_parsed: john + domain_part: example.com + domain: example.com + ip: '' + invalid: false + invalid_reason: null + - + address: jane@example.com + simple_address: jane@example.com + original_address: jane@example.com + name: '' + name_parsed: '' + local_part: jane + local_part_parsed: jane + domain_part: example.com + domain: example.com + ip: '' + invalid: false + invalid_reason: null +- + emails: '"Smith, John" ' + multiple: true + result: + success: true + reason: null + email_addresses: + - + address: '"Smith, John" ' + simple_address: john@example.com + original_address: '"Smith, John" ' + name: '"Smith, John"' + name_parsed: 'Smith, John' + local_part: john + local_part_parsed: john + domain_part: example.com + domain: example.com + ip: '' + invalid: false + invalid_reason: null +- + emails: '"Smith, John" , "Doe, Jane" ' + multiple: true + result: + success: true + reason: null + email_addresses: + - + address: '"Smith, John" ' + simple_address: john@example.com + original_address: '"Smith, John" ' + name: '"Smith, John"' + name_parsed: 'Smith, John' + local_part: john + local_part_parsed: john + domain_part: example.com + domain: example.com + ip: '' + invalid: false + invalid_reason: null + - + address: '"Doe, Jane" ' + simple_address: jane@example.com + original_address: '"Doe, Jane" ' + name: '"Doe, Jane"' + name_parsed: 'Doe, Jane' + local_part: jane + local_part_parsed: jane + domain_part: example.com + domain: example.com + ip: '' + invalid: false + invalid_reason: null +- + emails: 'Smith, John ' + multiple: true + result: + success: false + reason: 'Invalid email address' + email_addresses: + - + address: '' + simple_address: '' + original_address: Smith + name: '' + name_parsed: '' + local_part: '' + local_part_parsed: '' + domain_part: '' + domain: '' + ip: '' + invalid: true + invalid_reason: 'Misplaced separator or missing "@" symbol' + - + address: 'John ' + simple_address: john@example.com + original_address: 'John ' + name: John + name_parsed: John + local_part: john + local_part_parsed: john + domain_part: example.com + domain: example.com + ip: '' + invalid: false + invalid_reason: null