public function testBuild()
 {
     $criteria = $this->criteriaFactory->build('Task', ['T4webInfrastructureTest\\Assets\\Active' => true, 'date_more' => '2015-10-30', 'id.isNotNull' => true, 'dateCreate.between' => ['2015-10-30', '2015-10-31'], 'relations' => ['User' => ['status.in' => [2, 3, 4], 'name.like' => 'gor']], 'limit' => 5]);
     $this->assertInstanceOf('T4webDomainInterface\\Infrastructure\\CriteriaInterface', $criteria);
     $this->assertEquals('Task', $criteria->getEntityName());
     /** @var \Zend\Db\Sql\Select $select */
     $select = $criteria->getQuery();
     $dbAdapter = new \Zend\Db\Adapter\Adapter(['driver' => 'Pdo', 'dsn' => 'mysql:dbname=board;host=localhost', 'driver_options' => [\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''], 'username' => 'board', 'password' => '111']);
     $this->assertEquals("SELECT `tasks`.*" . " FROM `tasks`" . " INNER JOIN `users` ON `tasks`.`user_id` = `users`.`id`" . " WHERE `tasks`.`status` = '2'" . " AND `tasks`.`date_create` > '2015-10-30'" . " AND `tasks`.`id` IS NOT NULL" . " AND `tasks`.`date_create` BETWEEN '2015-10-30' AND '2015-10-31'" . " AND `users`.`status` IN ('2', '3', '4')" . " AND `users`.`name` LIKE 'gor'" . " LIMIT '5'", $select->getSqlString($dbAdapter->getPlatform()));
 }
/**
 * @param Zend\Db\Adapter\Adapter $adapter
 */
function refresh_data($adapter)
{
    $platform = $adapter->getPlatform();
    $platformName = $platform->getName();
    $vendorData = (include __DIR__ . '/../setup/vendor/' . str_replace(' ', '-', strtolower($platformName)) . '.php');
    try {
        foreach ($vendorData['data_down'] as $downSql) {
            $adapter->query($downSql, $adapter::QUERY_MODE_EXECUTE);
        }
        foreach ($vendorData['data_up'] as $tableName => $tableData) {
            if ($tableData == null) {
                continue;
            }
            if (is_int($tableName) && is_string($tableData)) {
                $adapter->query($tableData, $adapter::QUERY_MODE_EXECUTE);
                continue;
            }
            foreach ($tableData as $rowName => $rowData) {
                $keys = array_keys($rowData);
                $values = array_values($rowData);
                array_walk($keys, function (&$key) use($platform) {
                    $key = $platform->quoteIdentifier($key);
                });
                array_walk($values, function (&$value) use($platform) {
                    switch (gettype($value)) {
                        case 'NULL':
                            $value = 'NULL';
                            break;
                        case 'string':
                            $value = $platform->quoteValue($value);
                            break;
                    }
                });
                $insertSql = 'INSERT INTO ' . $platform->quoteIdentifier($tableName) . ' (' . implode(', ', $keys) . ') ' . ' VALUES (' . implode(', ', $values) . ')';
                $adapter->query($insertSql, $adapter::QUERY_MODE_EXECUTE);
            }
        }
    } catch (\Exception $e) {
        echo $e->getMessage();
        var_dump($e);
        exit(1);
    }
}