public function testAddComponent() { $this->if($action = new TestedModel())->exception(function () use($action) { $action->addComponent('subject', new \stdClass(), '\\Spy\\Timeline\\Model\\ActionComponent'); })->isInstanceOf('\\InvalidArgumentException')->hasMessage('Component has to be a ComponentInterface or a scalar')->when($action->addComponent('cod', 'chuckNorris', '\\Spy\\Timeline\\Model\\ActionComponent'))->string($action->getComponent('cod'))->isEqualTo('chuckNorris')->if($this->mockClass('\\Spy\\Timeline\\Model\\ComponentInterface', '\\Mock'))->and($component = new \Mock\ComponentInterface())->when($action->addComponent('coi', $component, '\\Spy\\Timeline\\Model\\ActionComponent'))->object($action->getComponent('coi'))->isIdenticalTo($component)->when($action->addComponent('coi', 'text', '\\Spy\\Timeline\\Model\\ActionComponent'))->integer(count($action->getActionComponents()))->isEqualTo(2); }