mirror of
https://github.com/wintercms/winter.git
synced 2024-06-28 05:33:29 +02:00
Retain previous listInTheme cache functionality
This commit is contained in:
parent
fad028bc40
commit
4922d6d284
@ -99,7 +99,19 @@ class CmsObject extends HalcyonModel implements CmsObjectContract
|
||||
*/
|
||||
public static function listInTheme($theme, $skipCache = false)
|
||||
{
|
||||
return static::inTheme($theme)->get();
|
||||
$instance = static::inTheme($theme);
|
||||
|
||||
if ($skipCache) {
|
||||
return $instance->get();
|
||||
}
|
||||
|
||||
$items = $instance->newQuery()->lists('fileName');
|
||||
|
||||
$items = array_map(function ($item) use ($theme) {
|
||||
return static::loadCached($theme, $item);
|
||||
}, $items);
|
||||
|
||||
return $instance->newCollection($items);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -75,7 +75,7 @@ class Page extends CmsCompoundObject
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of layouts available in the theme.
|
||||
* Returns a list of layouts available in the theme.
|
||||
* This method is used by the form widget.
|
||||
* @return array Returns an array of strings.
|
||||
*/
|
||||
|
@ -1,338 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Cms\Classes\SectionParser;
|
||||
|
||||
class SectionParserTest extends TestCase
|
||||
{
|
||||
public function testParse()
|
||||
{
|
||||
// Test a single section
|
||||
$result = SectionParser::parse("this is a twig content");
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertCount(3, $result);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertEmpty($result["settings"]);
|
||||
$this->assertNull($result["code"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertEquals("this is a twig content", $result["markup"]);
|
||||
|
||||
// Test two sections
|
||||
$result = SectionParser::parse("url = \"/blog/post/\" \n==\n this is a twig content");
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertCount(3, $result);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNull($result["code"]);
|
||||
$this->assertEquals("this is a twig content", $result["markup"]);
|
||||
$this->assertInternalType("array", $result["settings"]);
|
||||
$this->assertArrayHasKey("url", $result["settings"]);
|
||||
$this->assertEquals("/blog/post/", $result["settings"]["url"]);
|
||||
|
||||
// Test three sections
|
||||
$result = SectionParser::parse("url = \"/blog/post/\"\n[section]\nindex = value \n===\n \$var = 23; \n phpinfo(); \n===\n this is a twig content");
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertCount(3, $result);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertNotNull($result["code"]);
|
||||
$this->assertEquals("this is a twig content", $result["markup"]);
|
||||
$this->assertInternalType("array", $result["settings"]);
|
||||
$this->assertArrayHasKey("url", $result["settings"]);
|
||||
$this->assertEquals("/blog/post/", $result["settings"]["url"]);
|
||||
$this->assertContains("\$var = 23;", $result["code"]);
|
||||
$this->assertContains("phpinfo();", $result["code"]);
|
||||
|
||||
$this->assertArrayHasKey("section", $result["settings"]);
|
||||
$this->assertInternalType("array", $result["settings"]["section"]);
|
||||
$this->assertArrayHasKey("index", $result["settings"]["section"]);
|
||||
$this->assertEquals("value", $result["settings"]["section"]["index"]);
|
||||
|
||||
// Test zero sections
|
||||
$result = SectionParser::parse("");
|
||||
$this->assertCount(3, $result);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertEmpty($result["settings"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertNull($result["code"]);
|
||||
$this->assertEquals("", $result["markup"]);
|
||||
}
|
||||
|
||||
public function testParseOffset()
|
||||
{
|
||||
|
||||
// Test three sections
|
||||
$content = <<<ESC
|
||||
setting = "test"
|
||||
==
|
||||
function onStart() { // Line 3
|
||||
|
||||
}
|
||||
==
|
||||
<p>Line 7</p>
|
||||
ESC;
|
||||
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNotNull($result["code"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertEquals(1, $result["settings"]);
|
||||
$this->assertEquals(3, $result["code"]);
|
||||
$this->assertEquals(7, $result["markup"]);
|
||||
|
||||
// Test two sections
|
||||
$content = <<<ESC
|
||||
setting = "test"
|
||||
another = "setting"
|
||||
foo = "bar"
|
||||
==
|
||||
<p>Line 5</p>
|
||||
ESC;
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNull($result["code"]);
|
||||
$this->assertEquals(1, $result["settings"]);
|
||||
$this->assertEquals(5, $result["markup"]);
|
||||
|
||||
// Test two sections with white space
|
||||
$content = <<<ESC
|
||||
|
||||
|
||||
line = "Line 3"
|
||||
another = "setting"
|
||||
foo = "bar"
|
||||
==
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Line 12</p>
|
||||
ESC;
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNull($result["code"]);
|
||||
$this->assertEquals(3, $result["settings"]);
|
||||
$this->assertEquals(12, $result["markup"]);
|
||||
|
||||
// Test one section
|
||||
$content = <<<ESC
|
||||
<p>Line 1</p>
|
||||
<p>Line 2</p>
|
||||
<p>Line 3</p>
|
||||
ESC;
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertNull($result["settings"]);
|
||||
$this->assertNull($result["code"]);
|
||||
$this->assertEquals(1, $result["markup"]);
|
||||
|
||||
|
||||
// Test empty PHP
|
||||
$content = <<<ESC
|
||||
setting = "test"
|
||||
==
|
||||
==
|
||||
<p>Line 4</p>
|
||||
ESC;
|
||||
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNotNull($result["code"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertEquals(1, $result["settings"]);
|
||||
$this->assertEquals(3, $result["code"]);
|
||||
$this->assertEquals(4, $result["markup"]);
|
||||
|
||||
// Test with PHP tags
|
||||
$content = <<<ESC
|
||||
setting = "test"
|
||||
another = "setting"
|
||||
==
|
||||
<?
|
||||
function onStart() {
|
||||
|
||||
}
|
||||
?>
|
||||
==
|
||||
<p>Line 10</p>
|
||||
ESC;
|
||||
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNotNull($result["code"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertEquals(1, $result["settings"]);
|
||||
$this->assertEquals(5, $result["code"]);
|
||||
$this->assertEquals(10, $result["markup"]);
|
||||
|
||||
// Test with PHP tags and whitespace
|
||||
$content = <<<ESC
|
||||
setting = "test"
|
||||
another = "setting"
|
||||
foo = "bar"
|
||||
==
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<?php
|
||||
function onStart() { // Line 13
|
||||
|
||||
}
|
||||
?>
|
||||
==
|
||||
<p>Line 18</p>
|
||||
ESC;
|
||||
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNotNull($result["code"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertEquals(1, $result["settings"]);
|
||||
$this->assertEquals(13, $result["code"]);
|
||||
$this->assertEquals(18, $result["markup"]);
|
||||
|
||||
// Test with PHP tags and whitespace both sides
|
||||
$content = <<<ESC
|
||||
setting = "test"
|
||||
another = "setting"
|
||||
foo = "bar"
|
||||
==
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function onStart() { // Line 20
|
||||
|
||||
}
|
||||
?>
|
||||
==
|
||||
<p>Line 25</p>
|
||||
ESC;
|
||||
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNotNull($result["code"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertEquals(1, $result["settings"]);
|
||||
$this->assertEquals(20, $result["code"]);
|
||||
$this->assertEquals(25, $result["markup"]);
|
||||
|
||||
// Test with whitespace on PHP and Twig
|
||||
$content = <<<ESC
|
||||
setting = "test"
|
||||
another = "setting"
|
||||
foo = "bar"
|
||||
==
|
||||
|
||||
|
||||
|
||||
function onStart() { // Line 8
|
||||
|
||||
}
|
||||
==
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>Line 19</p>
|
||||
ESC;
|
||||
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNotNull($result["code"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertEquals(1, $result["settings"]);
|
||||
$this->assertEquals(8, $result["code"]);
|
||||
$this->assertEquals(19, $result["markup"]);
|
||||
|
||||
// Test namespaces
|
||||
$content = <<<ESC
|
||||
|
||||
line = "Line 2"
|
||||
setting = "test"
|
||||
==
|
||||
|
||||
use October\Rain\Support\Str; // This will be removed (-1 line)
|
||||
use October\Rain\Flash\FlashBag; // This will be removed (-1 line)
|
||||
|
||||
function onStart() { // Line 7
|
||||
|
||||
use October\Rain\Support\Str; // And placed here
|
||||
use October\Rain\Flash\FlashBag; // And placed here
|
||||
|
||||
}
|
||||
==
|
||||
<p>Line 16</p>
|
||||
ESC;
|
||||
|
||||
$result = SectionParser::parseOffset($content);
|
||||
$this->assertArrayHasKey("settings", $result);
|
||||
$this->assertArrayHasKey("code", $result);
|
||||
$this->assertArrayHasKey("markup", $result);
|
||||
$this->assertNotNull($result["settings"]);
|
||||
$this->assertNotNull($result["code"]);
|
||||
$this->assertNotNull($result["markup"]);
|
||||
$this->assertEquals(2, $result["settings"]);
|
||||
$this->assertEquals(7, $result["code"]);
|
||||
$this->assertEquals(16, $result["markup"]);
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user