From e2bdd5ca4180fe4c6e19a639011ef80ed477f8b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Werner=20M=2E=20Krau=C3=9F?= Date: Tue, 30 May 2017 15:14:28 +0200 Subject: [PATCH] fixing tests: adjusting yml file, update Config::modify usage --- code/extensions/FileSubsites.php | 146 ++++++++++++----------- tests/php/FileSubsitesTest.php | 9 +- tests/php/GroupSubsitesTest.php | 2 +- tests/php/LeftAndMainSubsitesTest.php | 6 +- tests/php/SiteConfigSubsitesTest.php | 2 +- tests/php/SiteTreeSubsitesTest.php | 6 +- tests/php/SubsiteAdminFunctionalTest.php | 6 +- tests/php/SubsiteAdminTest.php | 2 +- tests/php/SubsiteTest.php | 4 +- tests/php/SubsiteTest.yml | 42 ++++--- tests/php/SubsitesVirtualPageTest.php | 4 +- 11 files changed, 123 insertions(+), 106 deletions(-) diff --git a/code/extensions/FileSubsites.php b/code/extensions/FileSubsites.php index 6e4451e..d0a5285 100644 --- a/code/extensions/FileSubsites.php +++ b/code/extensions/FileSubsites.php @@ -12,26 +12,27 @@ use SilverStripe\ORM\DataQuery; use SilverStripe\ORM\Queries\SQLSelect; use SilverStripe\Security\Permission; use SilverStripe\Subsites\Model\Subsite; + /** * Extension for the File object to add subsites support * * @package subsites */ class FileSubsites extends DataExtension - { - // If this is set to true, all folders created will be default be - // considered 'global', unless set otherwise - public static $default_root_folders_global = false; +{ + // If this is set to true, all folders created will be default be + // considered 'global', unless set otherwise + public static $default_root_folders_global = false; - private static $has_one=[ - 'Subsite' => Subsite::class, - ]; + private static $has_one = [ + 'Subsite' => Subsite::class, + ]; - /** - * Amends the CMS tree title for folders in the Files & Images section. - * Prefixes a '* ' to the folders that are accessible from all subsites. - */ - public function alternateTreeTitle() + /** + * Amends the CMS tree title for folders in the Files & Images section. + * Prefixes a '* ' to the folders that are accessible from all subsites. + */ + public function alternateTreeTitle() { if ($this->owner->SubsiteID == 0) { return " * " . $this->owner->Title; @@ -40,37 +41,38 @@ class FileSubsites extends DataExtension return $this->owner->Title; } - /** - * Add subsites-specific fields to the folder editor. - */ - public function updateCMSFields(FieldList $fields) + /** + * Add subsites-specific fields to the folder editor. + */ + public function updateCMSFields(FieldList $fields) { - if($this->owner instanceof Folder) { - $sites = Subsite::accessible_sites('CMS_ACCESS_AssetAdmin'); - $values = []; - $values[0] = _t('FileSubsites.AllSitesDropdownOpt','All sites'); - foreach ($sites as $site) { - $values[$site->ID] = $site->Title; - } - ksort($values); - if($sites){ - //Dropdown needed to move folders between subsites - $dropdown = new DropdownField( - 'SubsiteID', - _t('FileSubsites.SubsiteFieldLabel',Subsite::class), - $values - ); - $dropdown->addExtraClass('subsites-move-dropdown'); - $fields->push($dropdown); - $fields->push(new LiteralField( - 'Message', - '

'. - _t('ASSETADMIN.SUBSITENOTICE', 'Folders and files created in the main site are accessible by all subsites.') - .'

' - )); - } - } - } + if ($this->owner instanceof Folder) { + $sites = Subsite::accessible_sites('CMS_ACCESS_AssetAdmin'); + $values = []; + $values[0] = _t('FileSubsites.AllSitesDropdownOpt', 'All sites'); + foreach ($sites as $site) { + $values[$site->ID] = $site->Title; + } + ksort($values); + if ($sites) { + //Dropdown needed to move folders between subsites + $dropdown = new DropdownField( + 'SubsiteID', + _t('FileSubsites.SubsiteFieldLabel', Subsite::class), + $values + ); + $dropdown->addExtraClass('subsites-move-dropdown'); + $fields->push($dropdown); + $fields->push(new LiteralField( + 'Message', + '

' . + _t('ASSETADMIN.SUBSITENOTICE', + 'Folders and files created in the main site are accessible by all subsites.') + . '

' + )); + } + } + } /** * Update any requests to limit the results to the current site @@ -107,49 +109,51 @@ class FileSubsites extends DataExtension } } - public function onBeforeWrite() + public function onBeforeWrite() { - if (!$this->owner->ID && !$this->owner->SubsiteID) { - if (self::$default_root_folders_global) { - $this->owner->SubsiteID = 0; - } else { - $this->owner->SubsiteID = Subsite::currentSubsiteID(); - } - } - } + if (!$this->owner->ID && !$this->owner->SubsiteID) { + if (self::$default_root_folders_global) { + $this->owner->SubsiteID = 0; + } else { + $this->owner->SubsiteID = Subsite::currentSubsiteID(); + } + } + } - public function onAfterUpload() + public function onAfterUpload() { // If we have a parent, use it's subsite as our subsite - if ($this->owner->Parent()) { - $this->owner->SubsiteID = $this->owner->Parent()->SubsiteID; - } else { - $this->owner->SubsiteID = Subsite::currentSubsiteID(); - } - $this->owner->write(); - } + if ($this->owner->Parent()) { + $this->owner->SubsiteID = $this->owner->Parent()->SubsiteID; + } else { + $this->owner->SubsiteID = Subsite::currentSubsiteID(); + } + $this->owner->write(); + } - public function canEdit($member = null) + public function canEdit($member = null) { // Check the CMS_ACCESS_SecurityAdmin privileges on the subsite that owns this group - $subsiteID = Session::get('SubsiteID'); - if($subsiteID&&$subsiteID == $this->owner->SubsiteID) { - return true; - } + $subsiteID = Session::get('SubsiteID'); + if ($subsiteID && $subsiteID == $this->owner->SubsiteID) { + return true; + } Session::set('SubsiteID', $this->owner->SubsiteID); $access = Permission::check(['CMS_ACCESS_AssetAdmin', 'CMS_ACCESS_LeftAndMain']); Session::set('SubsiteID', $subsiteID); return $access; - } + } - /** - * Return a piece of text to keep DataObject cache keys appropriately specific - */ - public function cacheKeyComponent() + /** + * Return a piece of text to keep DataObject cache keys appropriately specific + * + * @return string + */ + public function cacheKeyComponent() { - return 'subsite-'.Subsite::currentSubsiteID(); - } + return 'subsite-' . Subsite::currentSubsiteID(); + } } diff --git a/tests/php/FileSubsitesTest.php b/tests/php/FileSubsitesTest.php index 035a807..13b0ae7 100644 --- a/tests/php/FileSubsitesTest.php +++ b/tests/php/FileSubsitesTest.php @@ -6,13 +6,14 @@ use SilverStripe\Assets\File; use SilverStripe\Assets\Folder; use SilverStripe\Forms\FieldList; use SilverStripe\Security\Member; +use SilverStripe\Subsites\Extensions\FileSubsites; use SilverStripe\Subsites\Tests\BaseSubsiteTest; use SilverStripe\Subsites\Model\Subsite; class FileSubsitesTest extends BaseSubsiteTest { - public static $fixture_file = 'subsites/tests/SubsiteTest.yml'; + public static $fixture_file = 'subsites/tests/php/SubsiteTest.yml'; /** * Disable other file extensions @@ -31,12 +32,12 @@ class FileSubsitesTest extends BaseSubsiteTest public function testTrivialFeatures() { - $this->assertTrue(is_array(singleton('FileSubsites')->extraStatics())); + $this->assertTrue(is_array(singleton(FileSubsites::class)->extraStatics())); $file = new File(); $file->Name = 'FileTitle'; $file->Title = 'FileTitle'; $this->assertEquals(' * FileTitle', $file->alternateTreeTitle()); - $file->SubsiteID = $this->objFromFixture('Subsite', 'domaintest1')->ID; + $file->SubsiteID = $this->objFromFixture(Subsite::class, 'domaintest1')->ID; $this->assertEquals('FileTitle', $file->getTreeTitle()); $this->assertTrue(singleton(Folder::class)->getCMSFields() instanceof FieldList); Subsite::changeSubsite(1); @@ -47,7 +48,7 @@ class FileSubsitesTest extends BaseSubsiteTest { $this->objFromFixture(Member::class, 'admin')->logIn(); - $subsite = $this->objFromFixture('Subsite', 'domaintest1'); + $subsite = $this->objFromFixture(Subsite::class, 'domaintest1'); FileSubsites::$default_root_folders_global = true; Subsite::changeSubsite(0); diff --git a/tests/php/GroupSubsitesTest.php b/tests/php/GroupSubsitesTest.php index d0b8fc2..3ee4052 100644 --- a/tests/php/GroupSubsitesTest.php +++ b/tests/php/GroupSubsitesTest.php @@ -9,7 +9,7 @@ use SilverStripe\Subsites\Model\Subsite; class GroupSubsitesTest extends BaseSubsiteTest { - public static $fixture_file = 'subsites/tests/SubsiteTest.yml'; + public static $fixture_file = 'subsites/tests/php/SubsiteTest.yml'; protected $requireDefaultRecordsFrom = [GroupSubsites::class]; public function testTrivialFeatures() diff --git a/tests/php/LeftAndMainSubsitesTest.php b/tests/php/LeftAndMainSubsitesTest.php index 6dc43f4..e3b1697 100644 --- a/tests/php/LeftAndMainSubsitesTest.php +++ b/tests/php/LeftAndMainSubsitesTest.php @@ -13,7 +13,7 @@ use SilverStripe\Subsites\Model\Subsite; class LeftAndMainSubsitesTest extends FunctionalTest { - public static $fixture_file = 'subsites/tests/SubsiteTest.yml'; + public static $fixture_file = 'subsites/tests/php/SubsiteTest.yml'; /** * Avoid subsites filtering on fixture fetching. @@ -84,13 +84,13 @@ class LeftAndMainSubsitesTest extends FunctionalTest $l = new LeftAndMain(); Config::inst()->nest(); - Config::inst()->update(CMSPageEditController::class, 'treats_subsite_0_as_global', false); + Config::modify()->set(CMSPageEditController::class, 'treats_subsite_0_as_global', false); $this->assertTrue($l->shouldChangeSubsite(CMSPageEditController::class, 0, 5)); $this->assertFalse($l->shouldChangeSubsite(CMSPageEditController::class, 0, 0)); $this->assertTrue($l->shouldChangeSubsite(CMSPageEditController::class, 1, 5)); $this->assertFalse($l->shouldChangeSubsite(CMSPageEditController::class, 1, 1)); - Config::inst()->update(CMSPageEditController::class, 'treats_subsite_0_as_global', true); + Config::modify()->set(CMSPageEditController::class, 'treats_subsite_0_as_global', true); $this->assertFalse($l->shouldChangeSubsite(CMSPageEditController::class, 0, 5)); $this->assertFalse($l->shouldChangeSubsite(CMSPageEditController::class, 0, 0)); $this->assertTrue($l->shouldChangeSubsite(CMSPageEditController::class, 1, 5)); diff --git a/tests/php/SiteConfigSubsitesTest.php b/tests/php/SiteConfigSubsitesTest.php index 7eacf92..022ca3e 100644 --- a/tests/php/SiteConfigSubsitesTest.php +++ b/tests/php/SiteConfigSubsitesTest.php @@ -9,7 +9,7 @@ use SilverStripe\Subsites\Model\Subsite; class SiteConfigSubsitesTest extends BaseSubsiteTest { - public static $fixture_file = 'subsites/tests/SubsiteTest.yml'; + public static $fixture_file = 'subsites/tests/php/SubsiteTest.yml'; public function testEachSubsiteHasAUniqueSiteConfig() { diff --git a/tests/php/SiteTreeSubsitesTest.php b/tests/php/SiteTreeSubsitesTest.php index 1258a22..dbb1a30 100644 --- a/tests/php/SiteTreeSubsitesTest.php +++ b/tests/php/SiteTreeSubsitesTest.php @@ -22,7 +22,7 @@ use SilverStripe\Subsites\Pages\SubsitesVirtualPage; class SiteTreeSubsitesTest extends BaseSubsiteTest { - public static $fixture_file = 'subsites/tests/SubsiteTest.yml'; + public static $fixture_file = 'subsites/tests/php/SubsiteTest.yml'; protected $extraDataObjects = [ 'SiteTreeSubsitesTest_ClassA', @@ -193,7 +193,7 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest public function testCopyToSubsite() { // Remove baseurl if testing in subdir - Config::inst()->update(Director::class, 'alternate_base_url', '/'); + Config::modify()->set(Director::class, 'alternate_base_url', '/'); /** @var Subsite $otherSubsite */ $otherSubsite = $this->objFromFixture(Subsite::class, 'subsite1'); @@ -219,7 +219,7 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest } public function testPageTypesBlacklistInCMSMain() { - $editor = $this->objFromFixture('Member', 'editor'); + $editor = $this->objFromFixture(Member::class, 'editor'); Session::set("loggedInAs", $editor->ID); $cmsmain = new CMSMain(); diff --git a/tests/php/SubsiteAdminFunctionalTest.php b/tests/php/SubsiteAdminFunctionalTest.php index 729f422..a6a31eb 100644 --- a/tests/php/SubsiteAdminFunctionalTest.php +++ b/tests/php/SubsiteAdminFunctionalTest.php @@ -12,7 +12,7 @@ use SilverStripe\Subsites\Model\Subsite; class SubsiteAdminFunctionalTest extends FunctionalTest { - public static $fixture_file = 'subsites/tests/SubsiteTest.yml'; + public static $fixture_file = 'subsites/tests/php/SubsiteTest.yml'; public static $use_draft_site = true; protected $autoFollowRedirection = false; @@ -80,13 +80,13 @@ class SubsiteAdminFunctionalTest extends FunctionalTest Config::inst()->nest(); - Config::inst()->update(CMSPageEditController::class, 'treats_subsite_0_as_global', false); + Config::modify()->set(CMSPageEditController::class, 'treats_subsite_0_as_global', false); Subsite::changeSubsite(0); $this->getAndFollowAll("admin/pages/edit/show/$subsite1Home->ID"); $this->assertEquals(Subsite::currentSubsiteID(), $subsite1Home->SubsiteID, 'Loading an object switches the subsite'); $this->assertRegExp("#^admin/pages.*#", $this->mainSession->lastUrl(), 'Lands on the correct section'); - Config::inst()->update(CMSPageEditController::class, 'treats_subsite_0_as_global', true); + Config::modify()->set(CMSPageEditController::class, 'treats_subsite_0_as_global', true); Subsite::changeSubsite(0); $this->getAndFollowAll("admin/pages/edit/show/$subsite1Home->ID"); $this->assertEquals(Subsite::currentSubsiteID(), $subsite1Home->SubsiteID, 'Loading a non-main-site object still switches the subsite if configured with treats_subsite_0_as_global'); diff --git a/tests/php/SubsiteAdminTest.php b/tests/php/SubsiteAdminTest.php index 7c8802d..de9ac58 100644 --- a/tests/php/SubsiteAdminTest.php +++ b/tests/php/SubsiteAdminTest.php @@ -10,7 +10,7 @@ use SilverStripe\Subsites\Model\Subsite; class SubsiteAdminTest extends BaseSubsiteTest { - public static $fixture_file = 'subsites/tests/SubsiteTest.yml'; + public static $fixture_file = 'subsites/tests/php/SubsiteTest.yml'; public function adminLoggedInSession() { diff --git a/tests/php/SubsiteTest.php b/tests/php/SubsiteTest.php index 06e5e25..610adb1 100644 --- a/tests/php/SubsiteTest.php +++ b/tests/php/SubsiteTest.php @@ -12,7 +12,7 @@ use SilverStripe\Subsites\Model\SubsiteDomain; class SubsiteTest extends BaseSubsiteTest { - public static $fixture_file = 'subsites/tests/SubsiteTest.yml'; + public static $fixture_file = 'subsites/tests/php/SubsiteTest.yml'; /** * Original value of {@see SubSite::$strict_subdomain_matching} @@ -32,7 +32,7 @@ class SubsiteTest extends BaseSubsiteTest { parent::setUp(); - Config::inst()->update(Director::class, 'alternate_base_url', '/'); + Config::modify()->set(Director::class, 'alternate_base_url', '/'); $this->origStrictSubdomainMatching = Subsite::$strict_subdomain_matching; $this->origServer = $_SERVER; Subsite::$strict_subdomain_matching = false; diff --git a/tests/php/SubsiteTest.yml b/tests/php/SubsiteTest.yml index d681128..377693e 100644 --- a/tests/php/SubsiteTest.yml +++ b/tests/php/SubsiteTest.yml @@ -40,7 +40,7 @@ SilverStripe\Subsites\Model\SubsiteDomain: IsPrimary: 1 dt2b: SubsiteID: =>SilverStripe\Subsites\Model\Subsite.domaintest2 - Domain: *.mysite.com + Domain: '*.mysite.com' Protocol: automatic dt3: SubsiteID: =>SilverStripe\Subsites\Model\Subsite.domaintest3 @@ -64,40 +64,52 @@ Page: mainSubsitePage: Title: 'MainSubsitePage' SubsiteID: 0 - URLSegment: mainsubsitepagehome: + URLSegment: mainsubsitepage + home: Title: 'Home' SubsiteID: =>SilverStripe\Subsites\Model\Subsite.main - URLSegment: homeabout: + URLSegment: home + about: Title: 'About' SubsiteID: =>SilverStripe\Subsites\Model\Subsite.main - URLSegment: aboutlinky: - Title: 'Linky' - SubsiteID: =>SilverStripe\Subsites\Model\Subsite.main - URLSegment: linkystaff: + URLSegment: about + linky: + Title: 'Linky' + SubsiteID: =>SilverStripe\Subsites\Model\Subsite.main + URLSegment: linky + staff: Title: 'Staff' ParentID: =>Page.about SubsiteID: =>SilverStripe\Subsites\Model\Subsite.main - URLSegment: staffcontact: + URLSegment: staff + contact: Title: 'Contact Us' SubsiteID: =>SilverStripe\Subsites\Model\Subsite.main - URLSegment: contact-usimportantpage: + URLSegment: contact-us + importantpage: Title: 'Important Page' SubsiteID: =>SilverStripe\Subsites\Model\Subsite.main - URLSegment: important-pagesubsite1_home: + URLSegment: important-page + subsite1_home: Title: 'Home (Subsite 1)' SubsiteID: =>SilverStripe\Subsites\Model\Subsite.subsite1 - URLSegment: homesubsite1_contactus: + URLSegment: home + subsite1_contactus: Title: 'Contact Us (Subsite 1)' SubsiteID: =>SilverStripe\Subsites\Model\Subsite.subsite1 - URLSegment: contact-ussubsite1_staff: + URLSegment: contact-us + subsite1_staff: Title: 'Staff' SubsiteID: =>SilverStripe\Subsites\Model\Subsite.subsite1 - URLSegment: staffsubsite2_home: + URLSegment: staff + subsite2_home: Title: 'Home (Subsite 2)' SubsiteID: =>SilverStripe\Subsites\Model\Subsite.subsite2 - URLSegment: homesubsite2_contactus: + URLSegment: home + subsite2_contactus: Title: 'Contact Us (Subsite 2)' - SubsiteID: =>SilverStripe\Subsites\Model\Subsite.subsite2URLSegment: contact-us + SubsiteID: =>SilverStripe\Subsites\Model\Subsite.subsite2 + URLSegment: contact-us SilverStripe\Security\PermissionRoleCode: roleCode1: diff --git a/tests/php/SubsitesVirtualPageTest.php b/tests/php/SubsitesVirtualPageTest.php index 597dcfe..d5a3c6d 100644 --- a/tests/php/SubsitesVirtualPageTest.php +++ b/tests/php/SubsitesVirtualPageTest.php @@ -16,7 +16,7 @@ use SilverStripe\Subsites\Pages\SubsitesVirtualPage; class SubsitesVirtualPageTest extends BaseSubsiteTest { public static $fixture_file = array( - 'subsites/tests/SubsiteTest.yml', + 'subsites/tests/php/SubsiteTest.yml', 'subsites/tests/SubsitesVirtualPageTest.yml', ); @@ -204,7 +204,7 @@ class SubsitesVirtualPageTest extends BaseSubsiteTest public function testUnpublishingParentPageUnpublishesSubsiteVirtualPages() { - Config::inst()->update('StaticPublisher', 'disable_realtime', true); + Config::modify()->set('StaticPublisher', 'disable_realtime', true); // Go to main site, get parent page $subsite = $this->objFromFixture(Subsite::class, 'main');