Security update for permissions_by_term
[yaffs-website] / vendor / behat / gherkin / tests / Behat / Gherkin / Loader / GherkinFileLoaderTest.php
diff --git a/vendor/behat/gherkin/tests/Behat/Gherkin/Loader/GherkinFileLoaderTest.php b/vendor/behat/gherkin/tests/Behat/Gherkin/Loader/GherkinFileLoaderTest.php
new file mode 100644 (file)
index 0000000..8f5d2c1
--- /dev/null
@@ -0,0 +1,111 @@
+<?php
+
+namespace Tests\Behat\Gherkin\Loader;
+
+use Behat\Gherkin\Keywords\CucumberKeywords;
+use Behat\Gherkin\Lexer;
+use Behat\Gherkin\Loader\GherkinFileLoader;
+use Behat\Gherkin\Parser;
+
+class GherkinFileLoaderTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var GherkinFileLoader
+     */
+    private $loader;
+    private $featuresPath;
+
+    public function testSupports()
+    {
+        $this->assertFalse($this->loader->supports('non-existent path'));
+        $this->assertFalse($this->loader->supports('non-existent path:2'));
+
+        $this->assertFalse($this->loader->supports(__DIR__));
+        $this->assertFalse($this->loader->supports(__DIR__ . ':d'));
+        $this->assertFalse($this->loader->supports(__FILE__));
+        $this->assertTrue($this->loader->supports(__DIR__ . '/../Fixtures/features/pystring.feature'));
+    }
+
+    public function testLoad()
+    {
+        $features = $this->loader->load($this->featuresPath . '/pystring.feature');
+        $this->assertEquals(1, count($features));
+        $this->assertEquals('A py string feature', $features[0]->getTitle());
+        $this->assertEquals($this->featuresPath . DIRECTORY_SEPARATOR . 'pystring.feature', $features[0]->getFile());
+
+        $features = $this->loader->load($this->featuresPath . '/multiline_name.feature');
+        $this->assertEquals(1, count($features));
+        $this->assertEquals('multiline', $features[0]->getTitle());
+        $this->assertEquals($this->featuresPath . DIRECTORY_SEPARATOR . 'multiline_name.feature', $features[0]->getFile());
+    }
+
+    public function testParsingUncachedFeature()
+    {
+        $cache = $this->getMockBuilder('Behat\Gherkin\Cache\CacheInterface')->getMock();
+        $this->loader->setCache($cache);
+
+        $cache->expects($this->once())
+            ->method('isFresh')
+            ->with($path = $this->featuresPath . DIRECTORY_SEPARATOR . 'pystring.feature', filemtime($path))
+            ->will($this->returnValue(false));
+
+        $cache->expects($this->once())
+            ->method('write');
+
+        $features = $this->loader->load($this->featuresPath . '/pystring.feature');
+        $this->assertEquals(1, count($features));
+    }
+
+    public function testParsingCachedFeature()
+    {
+        $cache = $this->getMockBuilder('Behat\Gherkin\Cache\CacheInterface')->getMock();
+        $this->loader->setCache($cache);
+
+        $cache->expects($this->once())
+            ->method('isFresh')
+            ->with($path = $this->featuresPath . DIRECTORY_SEPARATOR . 'pystring.feature', filemtime($path))
+            ->will($this->returnValue(true));
+
+        $cache->expects($this->once())
+            ->method('read')
+            ->with($path)
+            ->will($this->returnValue('cache'));
+
+        $cache->expects($this->never())
+            ->method('write');
+
+        $features = $this->loader->load($this->featuresPath . '/pystring.feature');
+        $this->assertEquals('cache', $features[0]);
+    }
+
+    public function testBasePath()
+    {
+        $this->assertFalse($this->loader->supports('features'));
+        $this->assertFalse($this->loader->supports('tables.feature'));
+
+        $this->loader->setBasePath($this->featuresPath . '/../');
+        $this->assertFalse($this->loader->supports('features'));
+        $this->assertFalse($this->loader->supports('tables.feature'));
+        $this->assertTrue($this->loader->supports('features/tables.feature'));
+
+        $features = $this->loader->load('features/pystring.feature');
+        $this->assertEquals(1, count($features));
+        $this->assertEquals('A py string feature', $features[0]->getTitle());
+        $this->assertEquals('features' . DIRECTORY_SEPARATOR . 'pystring.feature', $features[0]->getFile());
+
+        $this->loader->setBasePath($this->featuresPath);
+        $features = $this->loader->load('multiline_name.feature');
+        $this->assertEquals(1, count($features));
+        $this->assertEquals('multiline', $features[0]->getTitle());
+        $this->assertEquals('multiline_name.feature', $features[0]->getFile());
+    }
+
+    protected function setUp()
+    {
+        $keywords = new CucumberKeywords(__DIR__ . '/../Fixtures/i18n.yml');
+        $parser = new Parser(new Lexer($keywords));
+        $this->loader = new GherkinFileLoader($parser);
+
+        $this->featuresPath = realpath(__DIR__ . '/../Fixtures/features');
+    }
+}