PHP Classes

File: vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Export.php

Recommend this page to a friend!
  Classes of Adrian M   upMVC   vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Export.php   Download  
File: vendor/gabordemooij/redbean/testing/RedUNIT/Blackhole/Export.php
Role: Class source
Content type: text/plain
Description: Class source
Class: upMVC
Pure PHP web development without other frameworks
Author: By
Last change:
Date: 25 days ago
Size: 4,016 bytes
 

Contents

Class file image Download
<?php

namespace RedUNIT\Blackhole;

use
RedUNIT\Blackhole as Blackhole;
use
RedBeanPHP\Facade as R;
use
RedBeanPHP\OODBBean as OODBBean;

/**
 * Export
 *
 * Tests whether we can export beans to arrays and whether we can
 * use the exportAll function to convert entire hierarchies into
 * nested array structures.
 *
 * @file RedUNIT/Blackhole/Export.php
 * @desc Tests basic bean exporting features.
 * @author Gabor de Mooij and the RedBeanPHP Community
 * @license New BSD/GPLv2
 *
 * (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community.
 * This source file is subject to the New BSD/GPLv2 License that is bundled
 * with this source code in the file license.txt.
 */
class Export extends Blackhole
{
   
/**
     * ExportAll.
     *
     * @return void
     */
   
public function testExportAll()
    {
       
testpack( 'Test exportAll' );
       
$redbean = R::getRedBean();
       
$bean = R::dispense('bean');
       
$bean->import( array( 'a' => 1, 'b' => 2 ) );
       
$bean->setMeta( 'justametaproperty', 'hellothere' );
       
$arr = $bean->export();
       
asrt( is_array( $arr ), TRUE );
       
asrt( isset( $arr["a"] ), TRUE );
       
asrt( isset( $arr["b"] ), TRUE );
       
asrt( $arr["a"], 1 );
       
asrt( $arr["b"], 2 );
       
asrt( isset( $arr["__info"] ), FALSE );
       
$arr = $bean->export( TRUE );
       
asrt( isset( $arr["__info"] ), TRUE );
       
asrt( $arr["a"], 1 );
       
asrt( $arr["b"], 2 );
       
$exportBean = $redbean->dispense( 'abean' );
       
$exportBean->setMeta( 'metaitem.bla', 1 );
       
$exportedBean = $exportBean->export( TRUE );
       
asrt( $exportedBean["__info"]["metaitem.bla"], 1 );
       
asrt( $exportedBean["__info"]["type"], "abean" );
       
// Can we determine whether a bean is empty?
       
testpack( 'test $bean->isEmpty() function' );
       
$bean = R::dispense( 'bean' );
       
asrt( $bean->isEmpty(), TRUE );
       
asrt( ( count( $bean ) > 0 ), TRUE );
       
$bean->property = 1;
       
asrt( $bean->isEmpty(), FALSE );
       
asrt( ( count( $bean ) > 0 ), TRUE );
       
$bean->property = 0;
       
asrt( $bean->isEmpty(), TRUE );
       
asrt( ( count( $bean ) > 0 ), TRUE );
       
$bean->property = FALSE;
       
asrt( $bean->isEmpty(), TRUE );
       
asrt( ( count( $bean ) > 0 ), TRUE );
       
$bean->property = NULL;
       
asrt( $bean->isEmpty(), TRUE );
       
asrt( ( count( $bean ) > 0 ), TRUE );
        unset(
$bean->property );
       
asrt( $bean->isEmpty(), TRUE );
       
asrt( ( count( $bean ) > 0 ), TRUE );
       
// Export bug I found
       
$bandmember = R::dispense( 'bandmember' );
       
$bandmember->name = 'Duke';
       
$instrument = R::dispense( 'instrument' );
       
$instrument->name = 'Piano';
       
$bandmember->ownInstrument[] = $instrument;
       
$a = R::exportAll( $bandmember );
       
pass();
       
asrt( isset( $a[0] ), TRUE );
       
asrt( (int) $a[0]['id'], 0 );
       
asrt( $a[0]['name'], 'Duke' );
       
asrt( $a[0]['ownInstrument'][0]['name'], 'Piano' );
       
R::nuke();
       
$v = R::dispense( 'village' );
       
$b = R::dispense( 'building' );
       
$v->name = 'a';
       
$b->name = 'b';
       
$v->ownBuilding[] = $b;
       
$id = R::store( $v );
       
$a = R::exportAll( $v );
       
asrt( $a[0]['name'], 'a' );
       
asrt( $a[0]['ownBuilding'][0]['name'], 'b' );
       
$v = R::load( 'village', $id );
       
$b2 = R::dispense( 'building' );
       
$b2->name = 'c';
       
$v->ownBuilding[] = $b2;
       
$a = R::exportAll( $v );
       
asrt( $a[0]['name'], 'a' );
       
asrt( $a[0]['ownBuilding'][0]['name'], 'b' );
       
asrt( count( $a[0]['ownBuilding'] ), 2 );
        list(
$r1, $r2 ) = R::dispense( 'army', 2 );
       
$r1->name = '1';
       
$r2->name = '2';
       
$v->sharedArmy[] = $r2;
       
$a = R::exportAll( $v );
       
asrt( count( $a[0]['sharedArmy'] ), 1 );
       
R::store( $v );
       
$v = R::load( 'village', $id );
       
$a = R::exportAll( $v );
       
asrt( count( $a[0]['sharedArmy'] ), 1 );
       
asrt( $a[0]['name'], 'a' );
       
asrt( $a[0]['ownBuilding'][0]['name'], 'b' );
       
asrt( count( $a[0]['ownBuilding'] ), 2 );
       
$v->sharedArmy[] = $r1;
       
$a = R::exportAll( $v );
       
asrt( count( $a[0]['sharedArmy'] ), 2 );
       
$v = R::load( 'village', $id );
       
$a = R::exportAll( $v );
       
asrt( count( $a[0]['sharedArmy'] ), 1 );
       
$v->sharedArmy[] = $r1;
       
R::store( $v );
       
$v = R::load( 'village', $id );
       
$a = R::exportAll( $v );
       
asrt( count( $a[0]['sharedArmy'] ), 2 );
    }
}