mirror of
https://github.com/opdavies/gmail-filter-builder.git
synced 2025-02-02 08:57:31 +00:00
Merge branch 'add-addresses-helper-11'
This commit is contained in:
commit
65aa4f6ecb
42
src/Helpers/Addresses.php
Normal file
42
src/Helpers/Addresses.php
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
namespace Opdavies\GmailFilterBuilder\Helpers;
|
||||
|
||||
/**
|
||||
* A helper class for loading addresses from separate files.
|
||||
*/
|
||||
class Addresses
|
||||
{
|
||||
/**
|
||||
* The name of the default directory containing the address files.
|
||||
*/
|
||||
const DIRECTORY_NAME = '.gmail-filters';
|
||||
|
||||
/**
|
||||
* Load addresses from a file.
|
||||
*
|
||||
* @param string $filename The filename to load.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function load($filename = 'my-addresses.php')
|
||||
{
|
||||
if (file_exists($file = (new static())->getDirectoryPath() . $filename)) {
|
||||
return include $file;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the directory name containing the addresses file.
|
||||
*
|
||||
* Defaults to a .gmail-filters directory within the user's home directory.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getDirectoryPath()
|
||||
{
|
||||
return getenv('HOME') . DIRECTORY_SEPARATOR . self::DIRECTORY_NAME . DIRECTORY_SEPARATOR;
|
||||
}
|
||||
}
|
38
tests/Unit/Helpers/AddressesTest.php
Normal file
38
tests/Unit/Helpers/AddressesTest.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
namespace Opdavies\Tests\GmailFilterBuilder\Model;
|
||||
|
||||
use Opdavies\GmailFilterBuilder\Helpers\Addresses;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* Test loading addresses from a separate file.
|
||||
*
|
||||
* @coversDefaultClass \Opdavies\GmailFilterBuilder\Helpers\Addresses
|
||||
*/
|
||||
class AddressesTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers ::load
|
||||
*/
|
||||
public function testLoad()
|
||||
{
|
||||
$expected = [
|
||||
'foo@example.com',
|
||||
'bar@example.com'
|
||||
];
|
||||
|
||||
$this->assertEquals($expected, FakeAddresses::load());
|
||||
}
|
||||
}
|
||||
|
||||
class FakeAddresses extends Addresses
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getDirectoryPath()
|
||||
{
|
||||
return __DIR__ . '/../../stubs/';
|
||||
}
|
||||
}
|
6
tests/stubs/my-addresses.php
Normal file
6
tests/stubs/my-addresses.php
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'foo@example.com',
|
||||
'bar@example.com',
|
||||
];
|
Loading…
Reference in a new issue