setup() публичный статический Метод

typically you'd use the passed function to register some fixtures
См. также: FUnit::fixture()
public static setup ( Closure $setup )
$setup Closure an anon function
<?php

require __DIR__ . '/../vendor/autoload.php';
use FUnit as fu;
use Zend\Stdlib\Hydrator\ObjectProperty;
use Knlv\Zf2\Hydrator\Strategy\DateTimeStrategy;
fu::setup(function () {
    $hydrator = new ObjectProperty();
    $strategy = new DateTimeStrategy();
    $hydrator->addStrategy('created', $strategy);
    fu::fixture('strategy', $strategy);
    fu::fixture('hydrator', $hydrator);
});
fu::test('Testing hydrate/extract methods', function () {
    $hydrator = fu::fixture('hydrator');
    $object = new stdClass();
    $object->name = 'test';
    $object->data = array('data1', 'data2');
    $object->created = new DateTime('2015-01-02 10:10:10');
    $expected = array('name' => 'test', 'data' => array('data1', 'data2'), 'created' => '2015-01-02 10:10:10');
    fu::equal($expected, $hydrator->extract($object), 'Assert extract works');
    fu::equal($object, $hydrator->hydrate($expected, new stdClass()), 'Assert hydrate works');
});
fu::test('Test set/get format methods', function () {
    $strategy = fu::fixture('strategy');
    fu::equal($strategy::DEFAULT_FORMAT, $strategy->getFormat(), 'Assert default format if no other set');
    $strategy->setFormat(DateTime::ATOM);
    fu::equal(DateTime::ATOM, $strategy->getFormat(), 'Assert format changed');
});
fu::test('Test set/get timzone methods', function () {
    $strategy = fu::fixture('strategy');
<?php

require __DIR__ . '/../vendor/autoload.php';
use FUnit as fu;
use Zend\Stdlib\Hydrator\ObjectProperty;
use Knlv\Zf2\Hydrator\Strategy\MultilineTextStrategy;
fu::setup(function () {
    $hydrator = new ObjectProperty();
    $strategy = new MultilineTextStrategy();
    $hydrator->addStrategy('items', $strategy);
    fu::fixture('strategy', $strategy);
    fu::fixture('hydrator', $hydrator);
});
fu::test('Testing hydrate/extract methods', function () {
    $hydrator = fu::fixture('hydrator');
    $object = new stdClass();
    $object->name = 'test';
    $object->items = array('item1', 'item2', 'item3', 'item4', 'item5');
    $expected = array('name' => 'test', 'items' => <<<EOL
item1
item2
item3
item4
item5
EOL
);
    fu::equal($expected, $hydrator->extract($object), 'Assert extract works');
    fu::equal($object, $hydrator->hydrate($expected, new stdClass()), 'Assert hydrate works');
});
Пример #3
0
<?php

use FUnit as fu;
fu::setup(function () {
    // set a fixture to use in tests
    fu::fixture('foobar', array('foo' => 'bar'));
});
fu::teardown(function () {
    // this resets the fu::$fixtures array. May not provide clean shutdown
    fu::reset_fixtures();
});
fu::test('Checking for exceptions', function () {
    $callback = function () {
        throw new RuntimeException();
    };
    fu::throws($callback, 'RuntimeException', 'Correct exception');
    $callback = function ($foo) {
        throw new RuntimeException($foo);
    };
    fu::throws($callback, array('bar'), 'LogicException', 'Not the correct exception');
});
fu::test('Forced failure', function () {
    fu::fail('This is a forced fail');
});
fu::test('Expected failure', function () {
    fu::expect_fail('This is a good place to describe a missing test');
});
fu::test('Forced Errors/Exception', function () {
    trigger_error('This was triggered inside a test', E_USER_ERROR);
    trigger_error('This was triggered inside a test', E_USER_NOTICE);
    throw new Exception('This was thrown inside a test');
<?php

require __DIR__ . '/../vendor/autoload.php';
use FUnit as fu;
use Knlv\Zf2\Validator\NotIdentical;
fu::setup(function () {
    $validator = new NotIdentical();
    fu::fixture('validator', $validator);
});
fu::test('Test not_identical validates correctly', function () {
    $validator = fu::fixture('validator');
    $validator->setToken('token');
    fu::not_ok($validator->isValid('value', array('token' => 'value')), 'Assert validator returns false on same');
    fu::ok($validator->isValid('value', array('token' => 'other')), 'Assert validator retuns true on different');
    fu::ok($validator->isValid('value'), 'Assert validator returns true if no context provided');
    fu::ok($validator->isValid('value', array('other_token' => 'value')), 'Assert validator returns true if token not found in context');
    $validator->setToken(null);
    fu::not_ok($validator->isValid('value', array('token' => 'value')), 'Assert validator return false if no token is set');
});
fu::test('Test not_identical messages', function () {
    $validator = fu::fixture('validator');
    $validator->setToken('token');
    $validator->isValid('value', array('token' => 'value'));
    fu::has($validator::SAME, $validator->getMessages(), 'Assert same message');
    $validator->isValid('value', array('token' => 'other'));
    $messages = $validator->getMessages();
    fu::ok(empty($messages), 'Assert empty messages if validator validates');
    $validator->setToken(null);
    $validator->isValid('value', array('token' => 'value'));
    fu::has($validator::MISSING_TOKEN, $validator->getMessages(), 'Assert missing token message');
});
<?php

require __DIR__ . '/../vendor/autoload.php';
use FUnit as fu;
use Knlv\Zf2\Validator\ExplodeWithContext;
use Zend\Validator\Callback;
// Zend\Validator\Callback uses context in isValid method in order to test
fu::setup(function () {
    $validator = new ExplodeWithContext();
    fu::fixture('validator', $validator);
});
fu::test('Test explode_with_context passes context', function () {
    $validator = fu::fixture('validator');
    $validator->setValueDelimiter(',');
    $validator->setValidator(new Callback(function ($value, $context) {
        fu::equal('value', $context, 'Assert context pass');
        return false;
    }));
    $validator->isValid('value 1,value 2,other value', 'value');
});
fu::test('Test explode_with_context validates correctly', function () {
    $validator = fu::fixture('validator');
    $validator->setValueDelimiter('|');
    $validator->setValidator(new Callback(function ($value, $context) {
        // value begins with value from context
        return 0 === strpos($value, $context);
    }));
    fu::ok($validator->isValid('value 1|value 2|value 3', 'value'), 'Assert returns true if validates');
    fu::not_ok($validator->isValid('value 1|other value 2|value 3', 'value'), 'Assert returns false if one does not validate');
});
Пример #6
0
<?php

use FUnit as fu;
use FUnit\TestSuite;
require_once __DIR__ . '/../src/FUnit.php';
fu::suite('Test suite tests');
fu::setup(function () {
    fu::fixture('ts', new TestSuite('Fixture Suite'));
});
fu::teardown(function () {
    fu::reset_fixtures();
});
fu::test("Check suite name", function () {
    $ts = fu::fixture('ts');
    fu::strict_equal('Fixture Suite', $ts->getName());
});
fu::test("Check suite run state", function () {
    $ts = fu::fixture('ts');
    fu::strict_equal(false, $ts->run);
    $ts->run();
    fu::strict_equal(true, $ts->run);
});
fu::test("Check suite exit code 1", function () {
    $ts = fu::fixture('ts');
    fu::strict_equal(0, $ts->getExitCode());
    $ts->addTest('known to fail for suite', function () use($ts) {
        // this forces the result of this assertion to be recorded in
        // the `$ts` TestSuite instance
        fu::fail($ts, 'this always fails');
    });
    $ts->run();
use FUnit as fu;
use Knlv\Zf2\InputFilter\CollectionUniqueInputFilter;
use Zend\InputFilter\BaseInputFilter;
use Zend\InputFilter\Input;
use Zend\InputFilter\InputFilter;
use Zend\Validator;
use Zend\Filter;
fu::setup(function () {
    $collectionFilter = new CollectionUniqueInputFilter();
    $foo = new Input();
    $foo->getFilterChain()->attach(new Filter\StringTrim());
    $foo->getValidatorChain()->attach(new Validator\StringLength(3, 6));
    $bar = new Input();
    $bar->getFilterChain()->attach(new Filter\StringTrim());
    $bar->getValidatorChain()->attach(new Validator\Digits());
    $baz = new Input();
    $baz->setRequired(false);
    $baz->getFilterChain()->attach(new Filter\StringTrim());
    $baz->getValidatorChain()->attach(new Validator\StringLength(1, 6));
    $inputFilter = new BaseInputFilter();
    $inputFilter->add($foo, 'foo')->add($bar, 'bar')->add($baz, 'baz');
    $collectionFilter->setInputFilter($inputFilter);
    fu::fixture('collectionFilter', $collectionFilter);
    fu::fixture('inputFilter', $inputFilter);
});
fu::test('Test inputfilter validates on valid data', function () {
    $data = array(array('foo' => ' bazbat ', 'bar' => ' 12345 ', 'baz' => ''), array('foo' => ' bazbar ', 'bar' => ' 54321 ', 'baz' => ''));
    $expected = array(array('foo' => 'bazbat', 'bar' => '12345', 'baz' => ''), array('foo' => 'bazbar', 'bar' => '54321', 'baz' => ''));
    $collectionFilter = fu::fixture('collectionFilter');
    $collectionFilter->setData($data);
    fu::ok($collectionFilter->isValid(), 'Assert inputfilter is valid');
    fu::equal($expected, $collectionFilter->getValues(), 'Assert inputfilter returns expected values');
<?php

require __DIR__ . '/../vendor/autoload.php';
use FUnit as fu;
use Zend\Permissions\Acl\Acl;
use Knlv\Zf2\Permissions\Acl\Assertion\Callback as AclCallback;
fu::setup(function () {
    $acl = new Acl();
    // add roles
    $acl->addRole('guest');
    $acl->addRole('member', 'guest');
    // add resources
    $acl->addResource('article');
    // add rules
    $acl->allow('guest', 'article', array('read'));
    $acl->allow('member', 'article', array('write', 'delete'));
    fu::fixture('acl', $acl);
});
fu::test('Test acl callback assertion', function () {
    $acl = fu::fixture('acl');
    $test = $acl->isAllowed('guest', 'article', 'read') && $acl->isAllowed('member', 'article', 'read') && $acl->isAllowed('member', 'article', 'write') && !$acl->isAllowed('guest', 'article', 'write');
    fu::ok($test, 'Test acl without assertions');
    $assertTrue = new AclCallback(function () {
        return true;
    });
    $assertFalse = new AclCallback(function () {
        return false;
    });
    $acl->removeAllow('member', 'article', 'write');
    $acl->allow('member', 'article', 'write', $assertFalse);
    fu::not_ok($acl->isAllowed('member', 'article', 'write'), 'Assert not allowed when callback returns false');
<?php

require __DIR__ . '/../vendor/autoload.php';
use FUnit as fu;
use Zend\Permissions\Rbac\Rbac;
use Knlv\Zf2\Permissions\Rbac\Assertion\Callback as RbacCallback;
fu::setup(function () {
    $rbac = new Rbac();
    $rbac->addRole('member');
    $rbac->addRole('guest', 'member');
    $rbac->getRole('guest')->addPermission('read');
    $rbac->getRole('member')->addPermission('write');
    fu::fixture('rbac', $rbac);
});
fu::test('Test rbac callback assertion', function () {
    $rbac = fu::fixture('rbac');
    $test = $rbac->isGranted('guest', 'read') && $rbac->isGranted('member', 'read') && !$rbac->isGranted('guest', 'write') && $rbac->isGranted('member', 'write');
    fu::ok($test, 'Test rbac without assertions');
    $assertTrue = new RbacCallback(function () {
        return true;
    });
    $assertFalse = new RbacCallback(function () {
        return false;
    });
    fu::not_ok($rbac->isGranted('member', 'read', $assertFalse), 'Assert permission not granted when callback returns false');
    fu::ok($rbac->isGranted('member', 'write', $assertTrue), 'Assert permission granted when callback returns true');
});