Merge branch 'add-addresses-helper-11'

This commit is contained in:
Oliver Davies 2018-08-20 14:06:48 +01:00
commit 65aa4f6ecb
3 changed files with 86 additions and 0 deletions

42
src/Helpers/Addresses.php Normal file
View 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;
}
}

View 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/';
}
}

View file

@ -0,0 +1,6 @@
<?php
return [
'foo@example.com',
'bar@example.com',
];