mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
TEST Cant reliably use Injector to replace Extensions
This commit is contained in:
parent
a80312ff14
commit
de6afd4405
@ -195,11 +195,13 @@ class ObjectTest extends SapphireTest
|
|||||||
);
|
);
|
||||||
$inst = new ExtensionTest();
|
$inst = new ExtensionTest();
|
||||||
$extensions = $inst->getExtensionInstances();
|
$extensions = $inst->getExtensionInstances();
|
||||||
$this->assertEquals(count($extensions), 2);
|
$this->assertCount(2, $extensions);
|
||||||
|
$this->assertArrayHasKey(ExtendTest1::class, $extensions);
|
||||||
$this->assertInstanceOf(
|
$this->assertInstanceOf(
|
||||||
ExtendTest1::class,
|
ExtendTest1::class,
|
||||||
$extensions[ExtendTest1::class]
|
$extensions[ExtendTest1::class]
|
||||||
);
|
);
|
||||||
|
$this->assertArrayHasKey(ExtendTest2::class, $extensions);
|
||||||
$this->assertInstanceOf(
|
$this->assertInstanceOf(
|
||||||
ExtendTest2::class,
|
ExtendTest2::class,
|
||||||
$extensions[ExtendTest2::class]
|
$extensions[ExtendTest2::class]
|
||||||
@ -507,4 +509,33 @@ class ObjectTest extends SapphireTest
|
|||||||
ClassInfo::parse_class_spec('\Test\MyClass')
|
ClassInfo::parse_class_spec('\Test\MyClass')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testInjectedExtensions()
|
||||||
|
{
|
||||||
|
$mockExtension = $this->createMock(TestExtension::class);
|
||||||
|
$mockClass = get_class($mockExtension);
|
||||||
|
|
||||||
|
$object = new ExtensionTest2();
|
||||||
|
|
||||||
|
// sanity check
|
||||||
|
$this->assertNotEquals(TestExtension::class, $mockClass);
|
||||||
|
|
||||||
|
$this->assertTrue($object->hasExtension(TestExtension::class));
|
||||||
|
$this->assertFalse($object->hasExtension($mockClass));
|
||||||
|
$this->assertCount(1, $object->getExtensionInstances());
|
||||||
|
$this->assertInstanceOf(TestExtension::class, $object->getExtensionInstance(TestExtension::class));
|
||||||
|
$this->assertNotInstanceOf($mockClass, $object->getExtensionInstance(TestExtension::class));
|
||||||
|
|
||||||
|
Injector::inst()->registerService($mockExtension, TestExtension::class);
|
||||||
|
|
||||||
|
$object = new ExtensionTest2();
|
||||||
|
|
||||||
|
$this->assertTrue($object->hasExtension(TestExtension::class));
|
||||||
|
$this->assertTrue($object->hasExtension($mockClass));
|
||||||
|
$this->assertCount(1, $object->getExtensionInstances());
|
||||||
|
$this->assertInstanceOf(TestExtension::class, $object->getExtensionInstance(TestExtension::class));
|
||||||
|
$this->assertInstanceOf($mockClass, $object->getExtensionInstance(TestExtension::class));
|
||||||
|
$this->assertInstanceOf(TestExtension::class, $object->getExtensionInstance($mockClass));
|
||||||
|
$this->assertInstanceOf($mockClass, $object->getExtensionInstance($mockClass));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user