Merge pull request #350 from creative-commoners/pulls/2.0/fix-cmsmain-tests

Use injected CMSMain to prevent unit test error missing dependencies
This commit is contained in:
Dylan Wagstaff 2018-03-19 11:15:33 +13:00 committed by GitHub
commit 0fcde6c0bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 21 deletions

View File

@ -14,25 +14,25 @@ env:
matrix:
include:
- php: 5.6
env: DB=MYSQL PHPCS_TEST=1 PHPUNIT_TEST=1
env: DB=MYSQL INSTALLER_VERSION=4.0.x-dev PHPCS_TEST=1 PHPUNIT_TEST=1
- php: 7.1
env: DB=PGSQL PHPUNIT_TEST=1
env: DB=PGSQL INSTALLER_VERSION=4.1.x-dev PHPUNIT_TEST=1
- php: 7.2
env: DB=MYSQL PHPUNIT_COVERAGE_TEST=1
env: DB=MYSQL INSTALLER_VERSION=4.2.x-dev PHPUNIT_COVERAGE_TEST=1
- php: 7.0
env: DB=MYSQL BEHAT_TEST=1
env: DB=MYSQL INSTALLER_VERSION=4.x-dev BEHAT_TEST=1
allow_failures:
- php: 7.0
env: DB=MYSQL BEHAT_TEST=1
env: DB=MYSQL INSTALLER_VERSION=4.x-dev BEHAT_TEST=1
before_script:
- phpenv rehash
- phpenv config-rm xdebug.ini
- echo 'memory_limit = 2G' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
- composer validate
- composer require silverstripe/installer 4.0.x-dev --no-update
- composer require silverstripe/installer $INSTALLER_VERSION --no-update
- if [[ $DB == PGSQL ]]; then composer require --no-update silverstripe/postgresql:2.0.x-dev; fi
- composer install --prefer-dist --no-interaction --no-progress --no-suggest --optimize-autoloader --verbose --profile
- composer install --prefer-source --no-interaction --no-progress --no-suggest --optimize-autoloader --verbose --profile
- echo "SS_BASE_URL=http://localhost:8080/" >> .env
# Behat bootstrapping

View File

@ -19,6 +19,7 @@ use SilverStripe\ORM\DataExtension;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataQuery;
use SilverStripe\ORM\Queries\SQLSelect;
use SilverStripe\Security\Member;
use SilverStripe\Security\Security;
use SilverStripe\SiteConfig\SiteConfig;
use SilverStripe\Subsites\Model\Subsite;
@ -478,20 +479,21 @@ class SiteTreeSubsites extends DataExtension
}
/**
* @param Member
* @param Member $member
* @return boolean|null
*/
public function canCreate($member = null)
{
// Typically called on a singleton, so we're not using the Subsite() relation
$subsite = Subsite::currentSubsite();
if ($subsite && $subsite->exists() && $subsite->PageTypeBlacklist) {
$blacklist = str_replace(['[', '"', ']'], '', $subsite->PageTypeBlacklist);
$blacklist = str_replace(['\\\\'], '\\', $blacklist);
$blacklisted = explode(',', $blacklist);
// SS 4.1: JSON encoded. SS 4.0, comma delimited
$blacklist = Convert::json2array($subsite->PageTypeBlacklist);
if ($blacklist === false) {
$blacklist = explode(',', $subsite->PageTypeBlacklist);
}
if (in_array(get_class($this->owner), $blacklisted)) {
if (in_array(get_class($this->owner), (array) $blacklist)) {
return false;
}
}

View File

@ -185,7 +185,7 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest
$s2 = $this->objFromFixture(Subsite::class, 'domaintest2');
$page = singleton(SiteTree::class);
$s1->PageTypeBlacklist = implode(',', [TestClassA::class, ErrorPage::class]);
$s1->PageTypeBlacklist = json_encode([TestClassA::class, ErrorPage::class]);
$s1->write();
Subsite::changeSubsite($s1);
@ -252,15 +252,14 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest
{
$this->logInAs('editor');
$cmsmain = new CMSMain();
$s1 = $this->objFromFixture(Subsite::class, 'domaintest1');
$s2 = $this->objFromFixture(Subsite::class, 'domaintest2');
$s1->PageTypeBlacklist = implode(',', [TestClassA::class, ErrorPage::class]);
$s1->PageTypeBlacklist = json_encode([TestClassA::class, ErrorPage::class]);
$s1->write();
Subsite::changeSubsite($s1);
$cmsmain = CMSMain::create();
$hints = Convert::json2array($cmsmain->SiteTreeHints());
$classes = $hints['Root']['disallowedChildren'];
$this->assertContains(ErrorPage::class, $classes);
@ -268,7 +267,12 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest
$this->assertNotContains(TestClassB::class, $classes);
Subsite::changeSubsite($s2);
// SS 4.1 and above
if ($cmsmain->hasMethod('getHintsCache')) {
$cmsmain->getHintsCache()->clear();
}
$hints = Convert::json2array($cmsmain->SiteTreeHints());
$classes = $hints['Root']['disallowedChildren'];
$this->assertNotContains(ErrorPage::class, $classes);
$this->assertNotContains(TestClassA::class, $classes);

View File

@ -21,10 +21,6 @@ class SubsitesVirtualPageTest extends BaseSubsiteTest
'SubsitesVirtualPageTest.yml',
];
protected static $illegal_extensions = [
SiteTree::class => ['Translatable'] // @todo implement Translatable namespace
];
protected function setUp()
{
parent::setUp();