2016-09-24 13:09:20 +03:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
|
|
namespace bkrukowski\TransparentEmail\Tests\Emails;
|
|
|
|
|
|
|
|
|
|
use bkrukowski\TransparentEmail\Emails\Email;
|
|
|
|
|
use bkrukowski\TransparentEmail\Emails\InvalidEmailException;
|
2020-02-13 16:27:05 +03:00
|
|
|
|
use PHPUnit\Framework\TestCase;
|
2016-09-24 13:09:20 +03:00
|
|
|
|
|
2020-02-13 16:27:05 +03:00
|
|
|
|
class EmailTest extends TestCase
|
2016-09-24 13:09:20 +03:00
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider providerConstructor
|
|
|
|
|
*
|
|
|
|
|
* @param string $email
|
|
|
|
|
* @param bool $expectedException
|
|
|
|
|
* @param string $localPart
|
|
|
|
|
* @param string $domain
|
|
|
|
|
* @param bool $caseSensitive
|
2022-05-05 15:52:56 +03:00
|
|
|
|
* @param bool $cyrillicAllowed
|
2016-09-24 13:09:20 +03:00
|
|
|
|
*/
|
|
|
|
|
public function testConstructor(
|
|
|
|
|
string $email,
|
|
|
|
|
bool $expectedException,
|
|
|
|
|
string $localPart = '',
|
|
|
|
|
string $domain = '',
|
2022-05-05 15:52:56 +03:00
|
|
|
|
bool $caseSensitive = false,
|
|
|
|
|
bool $cyrillicAllowed = false
|
2016-09-24 13:09:20 +03:00
|
|
|
|
) {
|
|
|
|
|
if ($expectedException) {
|
|
|
|
|
$this->expectException(InvalidEmailException::class);
|
|
|
|
|
}
|
2022-05-05 15:52:56 +03:00
|
|
|
|
$object = new Email($email, $caseSensitive, $cyrillicAllowed);
|
2016-09-24 13:09:20 +03:00
|
|
|
|
$this->assertSame($localPart, $object->getLocalPart());
|
|
|
|
|
$this->assertSame($domain, $object->getDomain());
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-14 21:25:52 +03:00
|
|
|
|
public function providerConstructor() : array
|
2016-09-24 13:09:20 +03:00
|
|
|
|
{
|
|
|
|
|
return [
|
|
|
|
|
['john doe@example.com', true],
|
|
|
|
|
['.johndoe@example.com', true],
|
|
|
|
|
['Jane.Doe@Example.COM', false, 'Jane.Doe', 'example.com', true],
|
|
|
|
|
['Jane.Doe@Example.COM', false, 'jane.doe', 'example.com'],
|
2022-05-05 15:52:56 +03:00
|
|
|
|
// Cyrillic use
|
|
|
|
|
['тест тест@example.com', true],
|
|
|
|
|
['.тест@example.com', true],
|
|
|
|
|
['Тест.Тест@Example.COM', false, 'Тест.Тест', 'example.com', true, true],
|
|
|
|
|
['Тест.Тест@Example.COM', false, 'тест.тест', 'example.com', false, true],
|
|
|
|
|
['Тест.Тест@Тест.РУ', false, 'Тест.Тест', 'тест.ру', true, true],
|
|
|
|
|
['Тест.Тест@Тест.РУ', false, 'тест.тест', 'тест.ру', false, true],
|
2016-09-24 13:09:20 +03:00
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
}
|