getProperty('instance'); $property->setAccessible(true); $property->setValue(null, null); } public function testInstance_ReturnsSingleton(): void { $instance1 = Plugin::instance(); $instance2 = Plugin::instance(); $this->assertSame($instance1, $instance2); } public function testInstance_ReturnsPluginClass(): void { $instance = Plugin::instance(); $this->assertInstanceOf(Plugin::class, $instance); } public function testAddProductType_AddsComposableToTypes(): void { $plugin = Plugin::instance(); $types = $plugin->add_product_type([]); $this->assertArrayHasKey('composable', $types); } public function testProductClass_ReturnsCustomClassForComposable(): void { $plugin = Plugin::instance(); $class = $plugin->product_class('WC_Product', 'composable'); $this->assertSame('Magdev\WcComposableProduct\ProductType', $class); } public function testProductClass_PassesThroughForOtherTypes(): void { $plugin = Plugin::instance(); $class = $plugin->product_class('WC_Product', 'simple'); $this->assertSame('WC_Product', $class); } public function testGetTwig_ReturnsTwigEnvironment(): void { $plugin = Plugin::instance(); $this->assertInstanceOf(\Twig\Environment::class, $plugin->get_twig()); } }