fixing tests: adjusting yml file, update Config::modify usage

This commit is contained in:
Werner M. Krauß 2017-05-30 15:14:28 +02:00
parent 5d3af16aaf
commit e2bdd5ca41
11 changed files with 123 additions and 106 deletions

View File

@ -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',
'<p class="message notice">'.
_t('ASSETADMIN.SUBSITENOTICE', 'Folders and files created in the main site are accessible by all subsites.')
.'</p>'
));
}
}
}
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',
'<p class="message notice">' .
_t('ASSETADMIN.SUBSITENOTICE',
'Folders and files created in the main site are accessible by all subsites.')
. '</p>'
));
}
}
}
/**
* 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();
}
}

View File

@ -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);

View File

@ -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()

View File

@ -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));

View File

@ -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()
{

View File

@ -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();

View File

@ -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');

View File

@ -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()
{

View File

@ -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;

View File

@ -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:

View File

@ -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');