Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@
phperrors.log
phpunit.xml
Tests/autoload.php

vendor
composer.lock
13 changes: 11 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,18 @@ language: php
php:
- 5.3
- 5.4
- 5.5
- 5.6
- hhvm

env:
- SYMFONY_VERSION=v2.0.5
- SYMFONY_VERSION=2.0.*
- SYMFONY_VERSION=2.1.*
- SYMFONY_VERSION=2.2.*
- SYMFONY_VERSION=2.3.*
- SYMFONY_VERSION=2.4.*
- SYMFONY_VERSION=origin/master

before_script: php vendor/vendors.php
before_script:
- wget http://getcomposer.org/composer.phar
- php composer.phar --prefer-source --dev install
35 changes: 18 additions & 17 deletions Tests/Templating/Helper/FeatureToggleHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,22 @@

class FeatureToggleHelperTest extends \PHPUnit_Framework_TestCase
{
public function testDisabledFeature() {
$helper = new FeatureToggleHelper(array(
array(
'name' => 'test',
'enabled' => false,
)));

$this->assertEquals(
'<div class="feature-toggle">',
$helper->startToggle('test')
);

$this->assertEquals(
'</div>',
$helper->endToggle('test')
);
}
public function testDisabledFeature()
{
$helper = new FeatureToggleHelper(array(
array(
'name' => 'test',
'enabled' => false,
)));

$this->assertEquals(
'<div class="feature-toggle">',
$helper->startToggle('test')
);

$this->assertEquals(
'</div>',
$helper->endToggle('test')
);
}
}
33 changes: 33 additions & 0 deletions Tests/Twig/FeatureToggleExtensionTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php
namespace Emka\FeatureToggleBundle\Test\Twig;

use Emka\FeatureToggleBundle\Feature\Feature;
use Emka\FeatureToggleBundle\Feature\FeatureManager;
use Emka\FeatureToggleBundle\Twig\FeatureToggleExtension;

class FeatureToggleExtensionTest extends \PHPUnit_Framework_TestCase
{

public function testIsEnabled()
{
$feature = new Feature('test', false);
$manager = new FeatureManager(array('test' => $feature));

$extension = new FeatureToggleExtension($manager);

$this->assertFalse($extension->isEnabled('test'));
}

/**
* @expectedException \Emka\FeatureToggleBundle\Exception\FeatureToggleNotFoundException
*/
public function testException()
{
$feature = new Feature('test', false);
$manager = new FeatureManager(array('test' => $feature));

$extension = new FeatureToggleExtension($manager);

$this->assertFalse($extension->isEnabled('nono'));
}
}
34 changes: 2 additions & 32 deletions Tests/autoload.php.dist
Original file line number Diff line number Diff line change
@@ -1,34 +1,4 @@
<?php
require_once __DIR__ . '/../vendor/autoload.php';

/*
* This file was shamelessly copied from the FOSUserBundle package.
* Although it's slightly modified, I'd like to credit those guys for
* all the good work they do.
*/

$vendorDir = __DIR__.'/../vendor';
require_once $vendorDir.'/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php';

use Symfony\Component\ClassLoader\UniversalClassLoader;

$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
'Symfony' => array($vendorDir.'/symfony/src', $vendorDir.'/bundles'),
));
$loader->registerPrefixes(array(
'Twig_Extensions_' => __DIR__.'/../vendor/twig-extensions/lib',
'Twig_' => __DIR__.'/../vendor/twig/lib',
));

$loader->register();

spl_autoload_register(function($class) {
if (0 === strpos($class, 'Emka\\FeatureToggleBundle\\')) {
$path = __DIR__.'/../'.implode('/', array_slice(explode('\\', $class), 2)).'.php';
if (!stream_resolve_include_path($path)) {
return false;
}
require_once $path;
return true;
}
});
// custom bootstrap stuff goes here ... if needed
48 changes: 47 additions & 1 deletion Twig/FeatureToggleExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,23 @@
* @since 2011-09-17
*/

use Emka\FeatureToggleBundle\Twig\FeatureToggleTokenParser;
use Emka\FeatureToggleBundle\Exception\FeatureToggleNotFoundException;
use Emka\FeatureToggleBundle\Feature\FeatureManager;

/**
* Class FeatureToggleExtension
* @package Emka\FeatureToggleBundle\Twig
*/
class FeatureToggleExtension extends \Twig_Extension
{
/**
* @var FeatureManager
*/
protected $manager;

/**
* @param FeatureManager $manager
*/
public function __construct(FeatureManager $manager)
{
$this->manager = $manager;
Expand All @@ -29,16 +39,52 @@ public function getManager()
return $this->manager;
}

/**
* @return array
*/
public function getTokenParsers()
{
return array(new FeatureToggleTokenParser($this->getManager()));
}

/**
* @return array
*/
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('feature_enabled', [$this, 'isEnabled']),
);
}

/**
* @return array
*/
public function getFilters()
{
return array();
}

/**
* @param $name
* @return bool
* @throws FeatureToggleNotFoundException
*/
public function isEnabled($name)
{
if (!$this->manager->has($name)) {
throw new FeatureToggleNotFoundException(sprintf('The feature "%s" does not exist.', $name));
} else {
$feature = $this->manager->get($name);
}

return $feature->isEnabled();
}


/**
* @return string
*/
public function getName()
{
return 'featuretoggle';
Expand Down
2 changes: 1 addition & 1 deletion Twig/FeatureToggleTokenParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public function parse(\Twig_Token $token)
$name = $stream->next()->getValue();

if (!$this->manager->has($name)) {
throw new FeatureToggleNotFoundException('The feature "%s" does not exist.', $name);
throw new FeatureToggleNotFoundException(sprintf('The feature "%s" does not exist.', $name));
} else {
$feature = $this->manager->get($name);
}
Expand Down
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
}
],
"require": {
"twig/extensions": "dev-master"
"symfony/framework-bundle": "~2.0",
"twig/extensions": "~1.0"
},
"autoload": {
"psr-0": { "Emka\\FeatureToggleBundle": "" }
Expand Down
31 changes: 0 additions & 31 deletions vendor/vendors.php

This file was deleted.