RedUNIT\Mysql\Freeze::testFreezer PHP Метод

testFreezer() публичный Метод

After freezing the database, schema modifications are no longer allowed and referring to missing columns will now cause exceptions.
public testFreezer ( ) : void
Результат void
    public function testFreezer()
    {
        $toolbox = R::getToolBox();
        $adapter = $toolbox->getDatabaseAdapter();
        $writer = $toolbox->getWriter();
        $redbean = $toolbox->getRedBean();
        $pdo = $adapter->getDatabase();
        $a = new AssociationManager($toolbox);
        $post = $redbean->dispense('post');
        $post->title = 'title';
        $redbean->store($post);
        $page = $redbean->dispense('page');
        $page->name = 'title';
        $redbean->store($page);
        $page = $redbean->dispense("page");
        $page->name = "John's page";
        $idpage = $redbean->store($page);
        $page2 = $redbean->dispense("page");
        $page2->name = "John's second page";
        $idpage2 = $redbean->store($page2);
        $a->associate($page, $page2);
        $redbean->freeze(TRUE);
        $page = $redbean->dispense("page");
        $page->sections = 10;
        $page->name = "half a page";
        try {
            $id = $redbean->store($page);
            fail();
        } catch (SQL $e) {
            pass();
        }
        $post = $redbean->dispense("post");
        $post->title = "existing table";
        try {
            $id = $redbean->store($post);
            pass();
        } catch (SQL $e) {
            fail();
        }
        asrt(in_array("name", array_keys($writer->getColumns("page"))), TRUE);
        asrt(in_array("sections", array_keys($writer->getColumns("page"))), FALSE);
        $newtype = $redbean->dispense("newtype");
        $newtype->property = 1;
        try {
            $id = $redbean->store($newtype);
            fail();
        } catch (SQL $e) {
            pass();
        }
        $logger = R::debug(true, 1);
        // Now log and make sure no 'describe SQL' happens
        $page = $redbean->dispense("page");
        $page->name = "just another page that has been frozen...";
        $id = $redbean->store($page);
        $page = $redbean->load("page", $id);
        $page->name = "just a frozen page...";
        $redbean->store($page);
        $page2 = $redbean->dispense("page");
        $page2->name = "an associated frozen page";
        $a->associate($page, $page2);
        $a->related($page, "page");
        $a->unassociate($page, $page2);
        $a->clearRelations($page, "page");
        $items = $redbean->find("page", array(), array("1"));
        $redbean->trash($page);
        $redbean->freeze(FALSE);
        asrt(count($logger->grep("SELECT")) > 0, TRUE);
        asrt(count($logger->grep("describe")) < 1, TRUE);
        asrt(is_array($logger->getLogs()), TRUE);
        R::debug(FALSE);
    }