[Tͪ#n$;<:a4sX[ 6F1f=Vl1l){RܠO`=A#6(~[|CaHpXp	6Y ~/N#X?u >[	UXnKpTV}CM Hm`F7% D3wBo5[6O#Tu㚳R#_$l{K.?,tN"NO5q)p RjD|XL,ORV؟mla-2˃>}"vd@/d]~K{{a*:0f3i'U%UsA$	I8ZKbb2(yXF
+a<-w:G&8/$>%`l 7_N?_Re/7윤bIcu.# Xk[PnE{~;gx&Ѳrބ!2<nr9ص厫hB?;dF/&&Uf5mƵ;"BF%n`b!*6O7(l]6WKʓAkʬa9`9MBnTb&+'Y|)_ZLm"n>7mu=!Lu27͉taqГ=AJ6vso^ylS/Gqͷ/u+<ʢoG$ʩTFk2@/G(*s& }ӳHLO'OMj]5k`no}6=ǍK<AC,-!tb'gHιƙmgq	+XeA] =ItRl,6{Ґ7yh_AX}6A~Ǖ-Mğ6	Sdw,lft}NAd6;ߺEFfXۡLm"knKftv{EN:$M|\X PޅE5>YܗCP[Dv)衟&$*gnO0eR%ZxglاwreBuR4 EgKW<?\!CRο%Hj4j`$'MjS嚔S8].g '=<Ov4y-λVWSč[sⳳö7*ssVTڲ{U @,O똠OxZ\F"ǻ*khFɫ<\49݇SgUQJ12dC.>gimVkR]P~-sW,*ȨYm	]\<qKk;'dA_	&v0Xu--JEI0[D<RNYE/58OG'w=lZ9dA_	&v0Xu}G0/ Rc=jXZQ[hsĨP2^.B3◗[ޠ^Ah,<3@9#PxR_2}V'eՑxo؂}ōGGϵƮx.]_z%&kQqYErlC983N5K̸bw,S5r=5PBq@v)H*3q,o\gZ[>2a3Fckw,Dz[㵫oǁ~;)LS-R'ڧ潙"HnvPfzBq{jƥȎHA<7C
CJ/lV~kx^z8<XP7c$;I=e|.%!SDl}NGZw~p ~%-LӮ _x!rT05imR8M@ܺӬL.ƵK4PE<fhd;Rۡl7ԡ^jVLK`nWem||3l%L	p>ܪÙN 9GC8	34&z2mTRn;V[AkJԸK8b9Wرʭ\TsUYz6b4'烜A)8X9DZǌ4.}4x00C'X`0ܤ=;;(1/CLVNgA[UF>+lN{SW/,YRtQr%mqXͯ	WK L%ӗiϕSQy;jgߚo,!0|e,PϊaxH8K6wfwn~Ll<"Pf\M+ZVj_35d~bGm=sTJu*h"
-7=rh$٭]@6f>i_%fLm 黀[Sp)i}lTI~TW	yW3]]<E6-c}=8Khdr-ė{)ZP$.>²5G*G\!7ena$J/D:p:2ɹ>1dׁ!UY8)d/tu$O?ᐎrîς^])f7a=pSVг-Qiap"OD<RNY­S0`?@MdPOtzwDg+dL[gBlrr`>"2}5P<56QQ.3fO:ֵQrz9Ԩ)N:=nOI^* [hhN5I_(~+go ߫Ó@I̚A? fXll q%/}9y~G_)m*`UAY
gEJNyF;o#A@JA8wW*|'hϩ;U %q%/}9y~G_)m*`UAY
gEJNyF
@#,wѨ[ix2'\"tQ_vBy/`8 Xk[PnE>o3 |Ee#8uͱs(<W9*7>}lN#8EVl$-QGAܑ4]q ly۬[En&=TJ{EvǚՇ"/ZB<jxz%yqkD?\Eݠ1sxڌ,vFrpRa5FI
I%ufzS+0FmU?yꭴwyr9NLgt/$Q<]rw?#jG㛽	z98
})D#htQ	TyeCs#BeZgD "ZEmϪ@]N?<SY~8sT=췕~M {BԄsxhaagt_+lE`j^^ވf_ƗD
f2n.Կ#\ǫ.ԣ(p?c
d$T}׍B# m]%-Zhj:\C\$;$lT0Wga&:݆FiA0&uD@$Ia
CxiyG=hfc5m?DWܚ^{x8ki-VXEڲ{U @,O똠OxZ\F"ǻ*khFɫ<\xwa7&3.ns
ɒLRG{謔LufaT
Z^)-AV P<
4qwrӐR%_ɁQ[V'H@c)H$gT~	ֽ
y X6 HĒK;-В@˦}6q;k\tableMock->expects($this->any())->method('getIndexedColumns')
            ->will($this->returnValue($indexedColumns));

        $GLOBALS['dbi']->expects($this->any())->method('getTable')
            ->will($this->returnValue($tableMock));

        $container = Container::getDefaultContainer();
        $container->set('dbi', $GLOBALS['dbi']);
        $container->factory('PMA\libraries\controllers\table\TableRelationController');
        $container->alias(
            'TableRelationController',
            'PMA\libraries\controllers\table\TableRelationController'
        );
        $ctrl = $container->get('TableRelationController');

        $ctrl->getDropdownValueForTableAction();
        $json = $this->_response->getJSONResult();
        $this->assertEquals(
            $indexedColumns,
            $json['columns']
        );
    }

    /**
     * Tests for getDropdownValueForDbAction()
     *
     * Case one: foreign
     *
     * @return void
     * @test
     */
    public function testGetDropdownValueForDbActionOne()
    {
        $GLOBALS['dbi']->expects($this->any())
            ->method('fetchArray')
            ->will(
                $this->returnCallback(
                    function () {
                        static $count = 0;
                        if ($count == 0) {
                            $count++;
                            return array('Engine' => 'InnoDB', 'Name'   => 'table',);
                        }
                        return null;
                    }
                )
            );

        $container = Container::getDefaultContainer();
        $container->set('dbi', $GLOBALS['dbi']);
        $container->factory('PMA\libraries\controllers\table\TableRelationController');
        $container->alias(
            'TableRelationController',
            'PMA\libraries\controllers\table\TableRelationController'
        );
        $ctrl = $container->get(
            'TableRelationController',
            array('tbl_storage_engine' => 'INNODB')
        );

        $_REQUEST['foreign'] = 'true';
        $ctrl->getDropdownValueForDbAction();
        $json = $this->_response->getJSONResult();
        $this->assertEquals(
            array('table'),
            $json['tables']
        );
    }

    /**
     * Tests for getDropdownValueForDbAction()
     *
     * Case two: not foreign
     *
     * @return void
     * @test
     */
    public function testGetDropdownValueForDbActionTwo()
    {
        $GLOBALS['dbi']->expects($this->any())
            ->method('fetchArray')
            ->will(
                $this->returnCallback(
                    function () {
                        static $count = 0;
                        if ($count == 0) {
                            $count++;
                            return array('table');
                        }
                        return null;
                    }
                )
            );

        $container = Container::getDefaultContainer();
        $container->set('dbi', $GLOBALS['dbi']);
        $container->factory('PMA\libraries\controllers\table\TableRelationController');
        $container->alias(
            'TableRelationController',
            'PMA\libraries\controllers\table\TableRelationController'
        );
        $ctrl = $container->get(
            'TableRelationController',
            array('tbl_storage_engine' => 'INNODB',)
        );

        $_REQUEST['foreign'] = 'false';
        $ctrl->getDropdownValueForDbAction();
        $json = $this->_response->getJSONResult();
        $this->assertEquals(
            array('table'),
            $json['tables']
        );
    }
}

/**
 * Mock class for DataBasePMAMock
 *
 * @package PhpMyAdmin-test
 */
Class DataBasePMAMockForTblRelation
{
    var $databases;
}

/**
 * Mock class for DataBaseMock
 *
 * @package PhpMyAdmin-test
 */
Class DataBaseMockForTblRelation
{
    /**
     * mock function to return table is existed
     *
     * @param string $name table name
     *
     * @return bool
     */
    function exists($name)
    {
        return true;
    }
}
