From 7c85b1b5d9713e1d8a70318bbc903060ea317bf5 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Fri, 25 Aug 2017 16:46:09 +1200 Subject: [PATCH] FIX Update tests for removed core features, use Controller for requests instead of Forms, etc --- .travis.yml | 7 +-- README.md | 1 + composer.json | 2 +- src/Controllers/WidgetController.php | 2 +- src/Forms/WidgetAreaEditor.php | 2 +- src/Model/Widget.php | 16 ++--- tests/WidgetAreaEditorTest.php | 61 +++++++++++-------- tests/WidgetAreaEditorTest/TestWidget.php | 2 +- tests/WidgetControllerTest.php | 4 +- tests/WidgetControllerTest.yml | 14 ++--- .../TestPageController.php | 7 ++- tests/WidgetControllerTest/TestWidget.php | 2 +- 12 files changed, 69 insertions(+), 51 deletions(-) diff --git a/.travis.yml b/.travis.yml index 44cdb98..8673531 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,13 +18,12 @@ before_script: - phpenv config-rm xdebug.ini - composer install --prefer-dist - - composer require --prefer-dist --no-update silverstripe/framework:4.0.x-dev + - composer require --prefer-dist --no-update silverstripe/recipe-cms:1.0.x-dev + - if [[ $DB == PGSQL ]]; then composer require --prefer-dist --no-update silverstripe/postgresql:2.0.x-dev; fi - composer update - - if [[ $DB == PGSQL ]]; then composer require silverstripe/postgresql:2.0.x-dev --prefer-dist; fi - script: - - if [[ $PHPUNIT_TEST ]]; then vendor/bin/phpunit tests/; fi + - if [[ $PHPUNIT_TEST ]]; then vendor/bin/phpunit; fi - if [[ $PHPUNIT_COVERAGE_TEST ]]; then phpdbg -qrr vendor/bin/phpunit --coverage-clover=coverage.xml; fi - if [[ $PHPCS_TEST ]]; then vendor/bin/phpcs --standard=framework/phpcs.xml.dist src/ tests/ ; fi diff --git a/README.md b/README.md index 9515b0b..4d68583 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![Build Status](http://img.shields.io/travis/silverstripe/silverstripe-widgets.svg?style=flat-square)](https://travis-ci.org/silverstripe/silverstripe-widgets) [![Code Quality](http://img.shields.io/scrutinizer/g/silverstripe/silverstripe-widgets.svg?style=flat-square)](https://scrutinizer-ci.com/g/silverstripe/silverstripe-widgets) +[![Code Coverage](https://codecov.io/gh/silverstripe/silverstripe-widgets/branch/master/graph/badge.svg)](https://codecov.io/gh/silverstripe/silverstripe-widgets) [![Version](http://img.shields.io/packagist/v/silverstripe/widgets.svg?style=flat-square)](https://packagist.org/packages/silverstripe/widgets) [![License](http://img.shields.io/packagist/l/silverstripe/widgets.svg?style=flat-square)](LICENSE.md) diff --git a/composer.json b/composer.json index 8ac1d42..1fa1f4e 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ }, "require-dev": { "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "*" + "squizlabs/php_codesniffer": "^3.0" }, "extra": { "branch-alias": { diff --git a/src/Controllers/WidgetController.php b/src/Controllers/WidgetController.php index 10d7884..06cf8bc 100644 --- a/src/Controllers/WidgetController.php +++ b/src/Controllers/WidgetController.php @@ -109,7 +109,7 @@ class WidgetController extends Controller */ public function Content() { - return $this->renderWith(array_reverse(ClassInfo::ancestry($this->widget->class))); + return $this->renderWith(array_reverse(ClassInfo::ancestry(get_class($this->widget)))); } /** diff --git a/src/Forms/WidgetAreaEditor.php b/src/Forms/WidgetAreaEditor.php index b0aeca4..eb479f6 100644 --- a/src/Forms/WidgetAreaEditor.php +++ b/src/Forms/WidgetAreaEditor.php @@ -142,7 +142,7 @@ class WidgetAreaEditor extends FormField throw new Exception("no form"); } - $widgetData = $this->getForm()->getRequest()->requestVar('Widget'); + $widgetData = $this->getForm()->getController()->getRequest()->requestVar('Widget'); if ($widgetData && isset($widgetData[$this->getName()])) { $widgetAreaData = $widgetData[$this->getName()]; diff --git a/src/Model/Widget.php b/src/Model/Widget.php index 915fcdc..f86d6bd 100644 --- a/src/Model/Widget.php +++ b/src/Model/Widget.php @@ -136,7 +136,7 @@ class Widget extends DataObject */ public function Content() { - return $this->renderWith(array_reverse(ClassInfo::ancestry($this->class))); + return $this->renderWith(array_reverse(ClassInfo::ancestry(__CLASS__))); } /** @@ -147,7 +147,7 @@ class Widget extends DataObject public function getTitle() { return $this->getField('Title') - ?: _t($this->class . '.TITLE', $this->config()->title); + ?: _t(__CLASS__ . '.TITLE', $this->config()->get('title')); } /** @@ -155,7 +155,7 @@ class Widget extends DataObject */ public function getCMSTitle() { - return _t($this->class . '.CMSTITLE', $this->config()->cmsTitle); + return _t(__CLASS__ . '.CMSTITLE', $this->config()->get('cmsTitle')); } /** @@ -163,7 +163,7 @@ class Widget extends DataObject */ public function getDescription() { - return _t($this->class . '.DESCRIPTION', $this->config()->description); + return _t(__CLASS__ . '.DESCRIPTION', $this->config()->get('description')); } /** @@ -238,7 +238,7 @@ class Widget extends DataObject */ public function ClassName() { - return str_replace('\\', '_', $this->class); + return str_replace('\\', '_', get_class($this)); } /** @@ -260,7 +260,7 @@ class Widget extends DataObject return $this->controller; } - foreach (array_reverse(ClassInfo::ancestry($this->class)) as $widgetClass) { + foreach (array_reverse(ClassInfo::ancestry(get_class($this))) as $widgetClass) { $controllerClass = "{$widgetClass}Controller"; if (class_exists($controllerClass)) { break; @@ -268,7 +268,7 @@ class Widget extends DataObject } if (!class_exists($controllerClass)) { - throw new Exception("Could not find controller class for $this->classname"); + throw new Exception("Could not find controller class for get_class($this)name"); } $this->controller = Injector::inst()->create($controllerClass, $this); @@ -304,7 +304,7 @@ class Widget extends DataObject $this->write(); // The field must be written to ensure a unique ID. - $this->Name = $this->class . $this->ID; + $this->Name = get_class($this) . $this->ID; $this->write(); } } diff --git a/tests/WidgetAreaEditorTest.php b/tests/WidgetAreaEditorTest.php index d8193e3..b67dc3f 100644 --- a/tests/WidgetAreaEditorTest.php +++ b/tests/WidgetAreaEditorTest.php @@ -27,16 +27,16 @@ class WidgetAreaEditorTest extends SapphireTest */ protected $widgetToTest = TestWidget::class; - protected $extraDataObjects = array( + protected static $extra_dataobjects = [ FakePage::class, TestWidget::class, - ); + ]; protected $usesDatabase = true; - protected $requiredExtensions = array( - SiteTree::class => array(WidgetPageExtension::class) - ); + protected static $required_extensions = [ + SiteTree::class => [WidgetPageExtension::class] + ]; public function testFillingOneArea() { @@ -56,12 +56,14 @@ class WidgetAreaEditorTest extends SapphireTest $editorSide = new WidgetAreaEditor('SideBar'); $editorBott = new WidgetAreaEditor('BottomBar'); $form = new Form( - new ContentController(), + $controller = new ContentController(), Form::class, new FieldList($editorSide, $editorBott), new FieldList() ); - $form->setRequest($request); + $controller->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $page = new FakePage(); @@ -100,12 +102,13 @@ class WidgetAreaEditorTest extends SapphireTest $editorSide = new WidgetAreaEditor('SideBar'); $editorBott = new WidgetAreaEditor('BottomBar'); $form = new Form( - new ContentController(), + $controller = new ContentController(), Form::class, new FieldList($editorSide, $editorBott), new FieldList() ); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $page = new FakePage(); $form->saveInto($page); @@ -150,12 +153,13 @@ class WidgetAreaEditorTest extends SapphireTest $editorSide = new WidgetAreaEditor('SideBar'); $editorBott = new WidgetAreaEditor('BottomBar'); $form = new Form( - new ContentController(), + $controller = new ContentController(), Form::class, new FieldList($editorSide, $editorBott), new FieldList() ); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $page = new FakePage(); $form->saveInto($page); @@ -181,7 +185,8 @@ class WidgetAreaEditorTest extends SapphireTest ) ); $request = new HTTPRequest('get', 'post', array(), $data); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $form->saveInto($page); $page->write(); @@ -222,12 +227,13 @@ class WidgetAreaEditorTest extends SapphireTest $editorSide = new WidgetAreaEditor('SideBar'); $editorBott = new WidgetAreaEditor('BottomBar'); $form = new Form( - new ContentController(), + $controller = new ContentController(), Form::class, new FieldList($editorSide, $editorBott), new FieldList() ); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $page = new FakePage(); $form->saveInto($page); @@ -248,7 +254,8 @@ class WidgetAreaEditorTest extends SapphireTest ) ); $request = new HTTPRequest('get', 'post', array(), $data); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $form->saveInto($page); $page->write(); @@ -288,12 +295,13 @@ class WidgetAreaEditorTest extends SapphireTest $editorSide = new WidgetAreaEditor('SideBar'); $editorBott = new WidgetAreaEditor('BottomBar'); $form = new Form( - new ContentController(), + $controller = new ContentController(), Form::class, new FieldList($editorSide, $editorBott), new FieldList() ); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $page = new FakePage(); $form->saveInto($page); @@ -324,7 +332,8 @@ class WidgetAreaEditorTest extends SapphireTest ) ); $request = new HTTPRequest('get', 'post', array(), $data); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $form->saveInto($page); $page->write(); @@ -366,12 +375,13 @@ class WidgetAreaEditorTest extends SapphireTest $editorSide = new WidgetAreaEditor('SideBar'); $editorBott = new WidgetAreaEditor('BottomBar'); $form = new Form( - new ContentController(), + $controller = new ContentController(), Form::class, new FieldList($editorSide, $editorBott), new FieldList() ); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $page = new FakePage(); $form->saveInto($page); @@ -402,7 +412,8 @@ class WidgetAreaEditorTest extends SapphireTest ) ); $request = new HTTPRequest('get', 'post', array(), $data); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $form->saveInto($page); $page->write(); @@ -444,12 +455,13 @@ class WidgetAreaEditorTest extends SapphireTest $editorSide = new WidgetAreaEditor('SideBar'); $editorBott = new WidgetAreaEditor('BottomBar'); $form = new Form( - new ContentController(), + $controller = new ContentController(), Form::class, new FieldList($editorSide, $editorBott), new FieldList() ); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $page = new FakePage(); $editorSide->saveInto($page); @@ -476,7 +488,8 @@ class WidgetAreaEditorTest extends SapphireTest ) ); $request = new HTTPRequest('get', 'post', array(), $data); - $form->setRequest($request); + $controller->setRequest($request); + $form->setController($controller); $form->saveInto($page); $page->write(); diff --git a/tests/WidgetAreaEditorTest/TestWidget.php b/tests/WidgetAreaEditorTest/TestWidget.php index f36a655..a00b0c6 100644 --- a/tests/WidgetAreaEditorTest/TestWidget.php +++ b/tests/WidgetAreaEditorTest/TestWidget.php @@ -7,7 +7,7 @@ use SilverStripe\Widgets\Model\Widget; class TestWidget extends Widget implements TestOnly { - private static $table_name = 'TestWidget'; + private static $table_name = 'WidgetAreaEditorTest_TestWidget'; private static $cmsTitle = "Test widget"; private static $title = "Test widget"; private static $description = "Test widget"; diff --git a/tests/WidgetControllerTest.php b/tests/WidgetControllerTest.php index b2082aa..f207fa5 100644 --- a/tests/WidgetControllerTest.php +++ b/tests/WidgetControllerTest.php @@ -21,10 +21,10 @@ class WidgetControllerTest extends FunctionalTest { protected static $fixture_file = 'WidgetControllerTest.yml'; - protected $extraDataObjects = array( + protected static $extra_dataobjects = [ TestPage::class, TestWidget::class, - ); + ]; public function testWidgetFormRendering() { diff --git a/tests/WidgetControllerTest.yml b/tests/WidgetControllerTest.yml index 2040987..3c3f1b9 100644 --- a/tests/WidgetControllerTest.yml +++ b/tests/WidgetControllerTest.yml @@ -1,10 +1,10 @@ SilverStripe\Widgets\Tests\WidgetControllerTest\TestWidget: - widget1: - Title: Widget 1 + widget1: + Title: Widget 1 SilverStripe\Widgets\Model\WidgetArea: - area1: - Widgets: =>SilverStripe\Widgets\Tests\WidgetControllerTest\TestWidget.widget1 + area1: + Widgets: =>SilverStripe\Widgets\Tests\WidgetControllerTest\TestWidget.widget1 SilverStripe\Widgets\Tests\WidgetControllerTest\TestPage: - page1: - Title: Page1 - WidgetControllerTestSidebar: =>SilverStripe\Widgets\Model\WidgetArea.area1 + page1: + Title: Page1 + WidgetControllerTestSidebar: =>SilverStripe\Widgets\Model\WidgetArea.area1 diff --git a/tests/WidgetControllerTest/TestPageController.php b/tests/WidgetControllerTest/TestPageController.php index 828404b..7fe3788 100644 --- a/tests/WidgetControllerTest/TestPageController.php +++ b/tests/WidgetControllerTest/TestPageController.php @@ -19,7 +19,12 @@ class TestPageController extends PageController implements TestOnly */ public function getViewer($action) { - SSViewer::add_themes(["silverstripe/widgets:widgets/tests/WidgetControllerTest"]); + if (file_exists('widgets')) { + SSViewer::add_themes(['silverstripe/widgets:tests/WidgetControllerTest']); + } else { + // When installed as the root project, e.g. Travis + SSViewer::add_themes(['tests/WidgetControllerTest']); + } return new SSViewer(TestPage::class); } } diff --git a/tests/WidgetControllerTest/TestWidget.php b/tests/WidgetControllerTest/TestWidget.php index 1d7f2d8..3eef8e7 100644 --- a/tests/WidgetControllerTest/TestWidget.php +++ b/tests/WidgetControllerTest/TestWidget.php @@ -11,7 +11,7 @@ use SilverStripe\Widgets\Model\Widget; */ class TestWidget extends Widget implements TestOnly { - private static $table_name = 'TestWidgetB'; + private static $table_name = 'WidgetControllerTest_TestWidget'; private static $db = array( 'TestValue' => 'Text'