CRUDlexTestEnv\TestDBSetup::createAppAndDB PHP Method

createAppAndDB() public static method

public static createAppAndDB ( $useUUIDs = false )
    public static function createAppAndDB($useUUIDs = false)
    {
        $app = new Application();
        $app->register(new DoctrineServiceProvider(), ['dbs.options' => ['default' => ['host' => '127.0.0.1', 'dbname' => 'crudTest', 'user' => 'root', 'password' => '', 'charset' => 'utf8']]]);
        $app['db']->executeUpdate('DROP TABLE IF EXISTS libraryBook;');
        $app['db']->executeUpdate('DROP TABLE IF EXISTS book;');
        $app['db']->executeUpdate('DROP TABLE IF EXISTS library;');
        $app['db']->executeUpdate('SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";');
        $app['db']->executeUpdate('SET time_zone = "+00:00"');
        $sql = 'CREATE TABLE IF NOT EXISTS `library` (';
        if ($useUUIDs) {
            $sql .= '  `id` varchar(36) NOT NULL,';
        } else {
            $sql .= '  `id` int(11) NOT NULL AUTO_INCREMENT,';
        }
        $sql .= '  `created_at` datetime NOT NULL,' . '  `updated_at` datetime NOT NULL,' . '  `deleted_at` datetime DEFAULT NULL,' . '  `version` int(11) NOT NULL,' . '  `name` varchar(255) NOT NULL,' . '  `type` varchar(255) DEFAULT NULL,' . '  `opening` datetime DEFAULT NULL,' . '  `isOpenOnSundays` tinyint(1) NOT NULL,' . '  `planet` varchar(255) DEFAULT NULL,' . '  PRIMARY KEY (`id`)' . ') ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;';
        $app['db']->executeUpdate($sql);
        $sql = 'CREATE TABLE IF NOT EXISTS `book` (';
        if ($useUUIDs) {
            $sql .= '  `id` varchar(36) NOT NULL,';
        } else {
            $sql .= '  `id` int(11) NOT NULL AUTO_INCREMENT,';
        }
        $sql .= '  `created_at` datetime NOT NULL,' . '  `updated_at` datetime NOT NULL,' . '  `deleted_at` datetime DEFAULT NULL,' . '  `version` int(11) NOT NULL,' . '  `title` varchar(255) NOT NULL,' . '  `author` varchar(255) NOT NULL,' . '  `pages` int(11) NOT NULL,' . '  `release` datetime DEFAULT NULL,';
        if ($useUUIDs) {
            $sql .= '  `library` varchar(36) NOT NULL,' . '  `secondLibrary` varchar(36) DEFAULT NULL,';
        } else {
            $sql .= '  `library` int(11) NOT NULL,' . '  `secondLibrary` int(11) DEFAULT NULL,';
        }
        $sql .= '  `cover` varchar(255) DEFAULT NULL,' . '  `price` float DEFAULT NULL,' . '  PRIMARY KEY (`id`),' . '  CONSTRAINT `book_ibfk_1` FOREIGN KEY (`library`) REFERENCES `library` (`id`),' . '  CONSTRAINT `book_ibfk_2` FOREIGN KEY (`secondLibrary`) REFERENCES `library` (`id`)' . ') ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;';
        $app['db']->executeUpdate($sql);
        $sql = 'CREATE TABLE `libraryBook` (';
        if ($useUUIDs) {
            $sql .= ' `library` varchar(36) NOT NULL,' . ' `book` varchar(36) NOT NULL,';
        } else {
            $sql .= ' `library` int(11) NOT NULL,' . ' `book` int(11) NOT NULL,';
        }
        $sql .= '  KEY `library` (`library`),' . '  KEY `book` (`book`),' . '  CONSTRAINT `librarybook_ibfk_1` FOREIGN KEY (`library`) REFERENCES `library` (`id`),' . '  CONSTRAINT `librarybook_ibfk_2` FOREIGN KEY (`book`) REFERENCES `book` (`id`)' . ') ENGINE=InnoDB DEFAULT CHARSET=utf8;';
        $app['db']->executeUpdate($sql);
        return $app;
    }

Usage Example

 public function createApplication()
 {
     $app = TestDBSetup::createAppAndDB();
     $app->register(new Silex\Provider\SessionServiceProvider());
     $app['session.test'] = true;
     $app['debug'] = true;
     $this->fileProcessorHandle = Phony::mock('\\CRUDlex\\SimpleFilesystemFileProcessor');
     $this->fileProcessorHandle->renderFile->returns('rendered file');
     $fileProcessorMock = $this->fileProcessorHandle->get();
     $dataFactory = new CRUDlex\MySQLDataFactory($app['db']);
     $app->register(new CRUDlex\ServiceProvider(), ['crud.file' => __DIR__ . '/../crud.yml', 'crud.datafactory' => $dataFactory, 'crud.fileprocessor' => $fileProcessorMock]);
     $app->register(new Silex\Provider\TwigServiceProvider(), ['twig.path' => __DIR__ . '/../views']);
     $app->mount('/crud', new CRUDlex\ControllerProvider());
     $this->dataBook = $app['crud']->getData('book');
     $this->dataLibrary = $app['crud']->getData('library');
     return $app;
 }