From 86ecc069b85fdb184cb46a1eeca39d346dd8762f Mon Sep 17 00:00:00 2001 From: Jason Irish Date: Tue, 3 Oct 2023 12:19:50 -0500 Subject: [PATCH] TESTS CarouselPageExtensionTest initial (#14) --- src/Extension/CarouselPageExtension.php | 43 ++++++------- tests/Extension/CarouselPageExtensionTest.php | 60 +++++++++++++++++++ tests/Extension/carousel.yml | 4 ++ tests/Test/Page/TestPage.php | 10 ++++ 4 files changed, 96 insertions(+), 21 deletions(-) create mode 100644 tests/Extension/CarouselPageExtensionTest.php create mode 100644 tests/Extension/carousel.yml create mode 100644 tests/Test/Page/TestPage.php diff --git a/src/Extension/CarouselPageExtension.php b/src/Extension/CarouselPageExtension.php index 880f068..41c3116 100644 --- a/src/Extension/CarouselPageExtension.php +++ b/src/Extension/CarouselPageExtension.php @@ -10,7 +10,6 @@ use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\GridField\GridField; -use SilverStripe\Forms\ToggleCompositeField; use SilverStripe\Forms\GridField\GridFieldAddNewButton; use SilverStripe\Forms\GridField\GridFieldFilterHeader; use Symbiote\GridFieldExtensions\GridFieldOrderableRows; @@ -72,27 +71,29 @@ class CarouselPageExtension extends DataExtension */ public function updateCMSFields(\SilverStripe\Forms\FieldList $fields) { - $grid = GridField::create( - 'Slides', - 'Slides', - $this->owner->Slides(), - GridFieldConfig_RelationEditor::create() - ); - $grid->getConfig() - ->removeComponentsByType([ - GridFieldAddNewButton::class, - GridFieldAddExistingAutocompleter::class, - GridFieldFilterHeader::class, - ]) - ->addComponents([ - $multiClass = GridFieldAddNewMultiClass::create(), - new GridFieldOrderableRows('SortOrder'), - new GridFieldAddExistingSearchButton(), - ]); + if ($this->owner->exists()) { + $grid = GridField::create( + 'Slides', + 'Slides', + $this->owner->Slides(), + GridFieldConfig_RelationEditor::create() + ); + $grid->getConfig() + ->removeComponentsByType([ + GridFieldAddNewButton::class, + GridFieldAddExistingAutocompleter::class, + GridFieldFilterHeader::class, + ]) + ->addComponents([ + $multiClass = GridFieldAddNewMultiClass::create(), + new GridFieldOrderableRows('SortOrder'), + new GridFieldAddExistingSearchButton(), + ]); - $fields->addFieldsToTab('Root.Carousel', [ - $grid, - ]); + $fields->addFieldsToTab('Root.Carousel', [ + $grid, + ]); + } } /** diff --git a/tests/Extension/CarouselPageExtensionTest.php b/tests/Extension/CarouselPageExtensionTest.php new file mode 100644 index 0000000..e3bd786 --- /dev/null +++ b/tests/Extension/CarouselPageExtensionTest.php @@ -0,0 +1,60 @@ + [ + CarouselPageExtension::class, + ], + ]; + + /** + * Tests updateCMSFields(). + */ + public function testUpdateCMSFields() + { + $object = TestPage::create(); + $fields = $object->getCMSFields(); + $this->assertFalse($object->exists()); + $this->assertNull($fields->dataFieldByName('Slides')); + + $object->write(); + $fields = $object->getCMSFields(); + $this->assertInstanceOf(FieldList::class, $fields); + $this->assertNotNull($fields->dataFieldbyName('Slides')); + } + + /** + * Tests getSlides(). + */ + public function testGetSlides() + { + $object = TestPage::create(); + $object->write(); + $object->Slides()->add($this->objFromFixture(ImageSlide::class, 'one')); + $this->assertEquals(1, $object->Slides()->count()); + } +} diff --git a/tests/Extension/carousel.yml b/tests/Extension/carousel.yml new file mode 100644 index 0000000..2a34a9a --- /dev/null +++ b/tests/Extension/carousel.yml @@ -0,0 +1,4 @@ +Dynamic\Carousel\Model\ImageSlide: + one: + Title: 'Image Slide 1' + Content: 'Image Slide 1 Content' diff --git a/tests/Test/Page/TestPage.php b/tests/Test/Page/TestPage.php new file mode 100644 index 0000000..8fff831 --- /dev/null +++ b/tests/Test/Page/TestPage.php @@ -0,0 +1,10 @@ +