public function register(ClassMocker $classMocker) { $classMocker->importFootprints(__DIR__ . '/mage.ref.json'); $classMocker->registerTrait(Mage_Core_Helper_Abstract::class); $classMocker->registerTrait(Mage_Core_Model_Abstract::class); $classMocker->registerTrait(Mage_Core_Model_App::class); $classMocker->registerTrait(Varien_Object::class, 'Varien_Object', 100); $classMocker->registerTrait(Varien_Data_Collection::class, 'Varien_Data_Collection', 100); $classMocker->registerTrait(Varien_Data_Collection_Db::class); $classMocker->registerTrait(MageClass\ModelFactory::class); $classMocker->registerTrait(MageClass\Registry::class); $classMocker->registerBaseClass(MageFacade::class); $classMocker->mock('Mage'); $classMocker->mock('MageClass'); $classMocker->mock('Mage_*'); $classMocker->mock('Varien_Object'); $classMocker->mock('Varien_Data_Collection'); $classMocker->mock('Varien_Data_Collection_Db'); // optional mocking if no lib exists $classMocker->mock('Varien_', true); }
/** * Test that all methods are called in the correct order * defined by the sortOrder parameter/tag * * @return void * @test */ public function testTraitMethodSortOrder() { $msg = 'Sort order of methods are wrong'; $instance = new \Foobar\TestClass(); $this->assertEquals('TraitC:talk', $instance->talk('test'), $msg); $this->assertEquals('TraitC:listen', $instance->listen(), $msg); $this->assertEquals('TraitC:jump', $instance->jump(), $msg); $this->assertEquals('TraitB:show', $instance->show(), $msg); $this->assertEquals('TraitB:hide', $instance->hide(), $msg); $this->assertEquals('TraitA:read', $instance->read(), $msg); // force overwrite different order $this->classMocker->mock('Demo\\*Collection'); $this->classMocker->registerTrait(TraitA::class, 'Demo\\*Collection', -10); $this->classMocker->registerTrait(TraitB::class, 'Demo\\*Collection', 50); $this->classMocker->registerTrait(TraitC::class, 'Demo\\*Collection', 100); $this->classMocker->registerTrait(DummyTrait::class, 'Demo\\*Collection'); // test different orders $collection = new \Demo\TestCollection(); $this->assertEquals('TraitA:talk', $collection->talk('test')); $this->assertEquals('TraitA:show', $collection->show()); }
/** * Trait should not allow any magic methods * * Magic methods like __call() can not be used by traits * without causing conflict with the BaseMock * * Instead use ___call() methods * * @return void * @test * @expectedException \RuntimeException * @expectedExceptionMessage Trait magic method ClassUsingInvalidTrait::__call() */ public function shouldFailOnInvalidTraitMethod() { $fwMocker = new ClassMocker(); $fwMocker->registerTrait(InvalidTrait::class, 'ClassUsingInvalidTrait'); $fwMocker->mock('ClassUsingInvalidTrait'); $fwMocker->autoload('ClassUsingInvalidTrait'); }