From 4922d6d284d1891338e80c3055910e845b3f23e0 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sun, 20 Mar 2016 16:04:27 +1100 Subject: [PATCH] Retain previous listInTheme cache functionality --- modules/cms/classes/CmsObject.php | 14 +- modules/cms/classes/Page.php | 2 +- tests/unit/cms/classes/SectionParserTest.php | 338 ------------------- 3 files changed, 14 insertions(+), 340 deletions(-) delete mode 100644 tests/unit/cms/classes/SectionParserTest.php diff --git a/modules/cms/classes/CmsObject.php b/modules/cms/classes/CmsObject.php index 02f160017..f17ae5c50 100644 --- a/modules/cms/classes/CmsObject.php +++ b/modules/cms/classes/CmsObject.php @@ -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); } /** diff --git a/modules/cms/classes/Page.php b/modules/cms/classes/Page.php index 625fac40d..b25c550f0 100644 --- a/modules/cms/classes/Page.php +++ b/modules/cms/classes/Page.php @@ -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. */ diff --git a/tests/unit/cms/classes/SectionParserTest.php b/tests/unit/cms/classes/SectionParserTest.php deleted file mode 100644 index 0f200ad2f..000000000 --- a/tests/unit/cms/classes/SectionParserTest.php +++ /dev/null @@ -1,338 +0,0 @@ -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 = <<Line 7

-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 = <<Line 5

-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 = <<Line 12

-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 = <<Line 1

-

Line 2

-

Line 3

-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 = <<Line 4

-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 = << -== -

Line 10

-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 = << -== -

Line 18

-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 = << -== -

Line 25

-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 = <<Line 19

-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 = <<Line 16

-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"]); - - } - -} \ No newline at end of file