public function testCanCreateByObjectAbstractServiceFactory()
 {
     $config = ['matryoshka-models' => ['MyModel\\A' => ['datagateway' => 'MatryoshkaTest\\Model\\Service\\TestAsset\\FakeDataGateway', 'resultset' => 'Matryoshka\\Model\\ResultSet\\ResultSet'], 'MyModel\\O' => ['datagateway' => 'MatryoshkaTest\\Model\\Service\\TestAsset\\FakeDataGateway', 'resultset' => 'Matryoshka\\Model\\ResultSet\\ResultSet', 'type' => 'MatryoshkaTest\\Model\\Service\\TestAsset\\MyObservableModel']]];
     $config = ['matryoshka-objects' => ['MyObject\\A' => ['type' => 'MatryoshkaTest\\Model\\Service\\TestAsset\\DomainObject']]];
     $services = new ServiceManager();
     $services->setService('Config', $config);
     $pluginManager = new ObjectManager();
     $pluginManager->setServiceLocator($services);
     $objectA = $pluginManager->get('MyObject\\A');
     $this->assertInstanceOf('MatryoshkaTest\\Model\\Service\\TestAsset\\DomainObject', $objectA);
 }
 public function setUp()
 {
     $sm = new ObjectManager();
     $sm->setService('test', new \stdClass());
     $this->object = new Object($sm);
 }
 public function testWithObjectManagerPeeringServiceManager()
 {
     $serviceLocator = $this->serviceManager;
     $objectManager = new ObjectManager();
     $objectManager->setServiceLocator($serviceLocator);
     $objectFull = $objectManager->get('MyObject\\Full');
     $this->assertInstanceOf('\\MatryoshkaTest\\Model\\TestAsset\\ActiveRecordObject', $objectFull);
     $this->assertSame($serviceLocator->get('Zend\\Stdlib\\Hydrator\\ObjectProperty'), $objectFull->getHydrator());
     $this->assertSame($serviceLocator->get('Zend\\InputFilter\\InputFilter'), $objectFull->getInputFilter());
     $this->assertAttributeEquals($serviceLocator->get('MatryoshkaTest\\Model\\Criteria\\ActiveRecord\\TestAsset\\ConcreteCriteria'), 'activeRecordCriteriaPrototype', $objectFull);
 }
 /**
  * @depends testCanCreateService
  * @return void
  */
 public function testCreateServiceWithOptionalManagers()
 {
     $serviceLocator = $this->serviceManager;
     //Test with optional managers
     $hydrator = new ObjectProperty();
     $hydratorManager = new HydratorPluginManager();
     $hydratorManager->setService('Zend\\Stdlib\\Hydrator\\ObjectProperty', $hydrator);
     $serviceLocator->setService('HydratorManager', $hydratorManager);
     $inputFilter = new InputFilter();
     $inputFilterManager = new InputFilterPluginManager();
     $inputFilterManager->setService('Zend\\InputFilter\\InputFilter', $inputFilter);
     $serviceLocator->setService('InputFilterManager', $inputFilterManager);
     $domainObject = new DomainObject();
     $objectManager = new ObjectManager();
     $objectManager->setService('DomainObject', $domainObject);
     $serviceLocator->setService('Matryoshka\\Model\\Object\\ObjectManager', $objectManager);
     $modelFull = $serviceLocator->get('MyModel\\Full');
     $this->assertSame($hydrator, $modelFull->getHydrator());
     $this->assertSame($inputFilter, $modelFull->getInputFilter());
     $this->assertSame($domainObject, $modelFull->getObjectPrototype());
     $listenerAggregate = $this->getMockForAbstractClass('Zend\\EventManager\\ListenerAggregateInterface', ['attach']);
     $listenerAggregate = $serviceLocator->get('ListenerAggregateMockedAsset');
     $listenerAggregate->expects($this->atLeastOnce())->method('attach')->with($this->isInstanceOf('Zend\\EventManager\\EventManagerInterface'));
     $listenerManager = new ListenerManager();
     $listenerManager->setService('ListenerAggregateMockedAsset', $listenerAggregate);
     $serviceLocator->setService('Matryoshka\\Model\\Listener\\ListenerManager', $listenerManager);
     /* @var $myModelOL \Matryoshka\Model\ObservableModel */
     $myModelOL = $serviceLocator->get('MyModel\\OL');
 }