Пример #1
0
 public function setUp()
 {
     if (!extension_loaded('mongo')) {
         $this->markTestSkipped('Mongo extension is required to run tests');
     }
     $services = Bootstrap::getServiceManager();
     $config = $services->get('config')['mongoObjectMapper'];
     $this->mongo = new MongoClient($config['uri'], $config['options']);
     $this->db = new MongoDB($this->mongo, $config['database']);
     $this->collection = new MongoCollection($this->db, self::TEST_COLLECTION_NAME);
     $this->mapper = $services->get('mongo');
     $this->seedCollection();
 }
Пример #2
0
 public function testMapperFactory()
 {
     $services = Bootstrap::getServiceManager();
     $config = $services->get('config');
     $configBackup = $config;
     $mapper1 = $services->get('mongo');
     unset($config['mongoObjectMapper']['options']);
     $services->setAllowOverride(true);
     $services->setService('config', $config);
     $services->setService('mongo', null);
     $services->setFactory('mongo', 'MongoObject\\MapperFactory');
     $services->setAllowOverride(false);
     $mapper2 = $services->get('mongo');
     unset($config['mongoObjectMapper']['uri']);
     $services->setAllowOverride(true);
     $services->setService('config', $config);
     $services->setService('mongo', null);
     $services->setFactory('mongo', 'MongoObject\\MapperFactory');
     $services->setAllowOverride(false);
     $mapper3 = $services->get('mongo');
     $config['mongoObjectMapper']['mapperClass'] = 'MongoObjectTest\\CustomMapper';
     $services->setAllowOverride(true);
     $services->setService('config', $config);
     $services->setService('mongo', null);
     $services->setFactory('mongo', 'MongoObject\\MapperFactory');
     $services->setAllowOverride(false);
     $mapper4 = $services->get('mongo');
     $this->assertInstanceOf('MongoObject\\Mapper', $mapper1);
     $this->assertInstanceOf('MongoObject\\Mapper', $mapper2);
     $this->assertInstanceOf('MongoObject\\Mapper', $mapper3);
     $this->assertInstanceOf('MongoObject\\Mapper', $mapper4);
     $this->assertNotSame($mapper1, $mapper2);
     $this->assertNotSame($mapper1, $mapper3);
     $this->assertNotSame($mapper1, $mapper4);
     $this->assertNotSame($mapper2, $mapper3);
     $this->assertNotSame($mapper2, $mapper4);
     $this->assertNotSame($mapper3, $mapper4);
     $this->assertFalse(method_exists($mapper1, 'customTestFunction'), 'customTestFunction must not exist in default Mapper class (mapper1 object)');
     $this->assertFalse(method_exists($mapper2, 'customTestFunction'), 'customTestFunction must not exist in default Mapper class (mapper2 object)');
     $this->assertFalse(method_exists($mapper3, 'customTestFunction'), 'customTestFunction must not exist in default Mapper class (mapper3 object)');
     $this->assertTrue(method_exists($mapper4, 'customTestFunction'), 'customTestFunction defined in CustomMapper class does not exist in mapper4 object');
     $services->setAllowOverride(true);
     $services->setService('config', $configBackup);
     $services->setService('mongo', null);
     $services->setFactory('mongo', 'MongoObject\\MapperFactory');
     $services->setAllowOverride(false);
 }
Пример #3
0
    protected static $serviceManager;
    public static function init()
    {
        if (is_readable(__DIR__ . '/TestConfig.php')) {
            $testConfig = (include __DIR__ . '/TestConfig.php');
        } else {
            $testConfig = (include __DIR__ . '/TestConfig.php.dist');
        }
        static::initAutoloader();
        $baseConfig = [];
        $config = ArrayUtils::merge($baseConfig, $testConfig);
        $serviceManager = new ServiceManager(new ServiceManagerConfig());
        $serviceManager->setService('config', $config);
        $serviceManager->setFactory('mongo', 'MongoObject\\MapperFactory');
        static::$serviceManager = $serviceManager;
    }
    public static function getServiceManager()
    {
        return static::$serviceManager;
    }
    protected static function initAutoloader()
    {
        $vendorPath = __DIR__ . "/../vendor";
        if (!is_readable($vendorPath . '/autoload.php')) {
            throw new RuntimeException('Missing autoloader. Run `php composer.phar install` in the module root.');
        }
        include $vendorPath . '/autoload.php';
    }
}
Bootstrap::init();