Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Extensions/tests/TestCase/CroogoComposerTest.php
<?php

namespace Croogo\Extensions\Test\TestCase;

use
Croogo\Lib\TestSuite\CroogoTestCase;
use
Extensions\Lib\CroogoComposer;

/**
 * Croogo Composer Test
 *
 * @category Test
 * @package  Croogo
 * @version  1.4
 * @author   Fahad Ibnay Heylaal <contact@fahad19.com>
 * @license  http://www.opensource.org/licenses/mit-license.php The MIT License
 * @link     http://www.croogo.org
 */
class CroogoComposerTest extends CroogoTestCase
{

   
/**
     * setUp
     *
     * @return void
     */
   
public function setUp()
    {
       
parent::setUp();
       
App::build([
           
'Plugin' => [Plugin::path('Extensions') . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS],
           
'View' => [Plugin::path('Extensions') . 'Test' . DS . 'test_app' . DS . 'View' . DS],
        ],
App::PREPEND);
       
$this->testPlugin = Plugin::path('Extensions') . 'Test' . DS . 'test_files' . DS . 'example_plugin.zip';
       
$this->testTheme = Plugin::path('Extensions') . 'Test' . DS . 'test_files' . DS . 'example_theme.zip';
       
$this->CroogoComposer = new CroogoComposer();
       
$this->CroogoComposer->appPath = Plugin::path('Extensions') . 'Test' . DS . 'test_app' . DS;
    }

   
/**
     * tearDown
     *
     * @return void
     */
   
public function tearDown()
    {
       
parent::tearDown();
       
$path = Plugin::path('Extensions') . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS . 'Example';
       
$Folder = new Folder($path);
       
$Folder->delete();
       
$path = Plugin::path('Extensions') . 'Test' . DS . 'test_app' . DS . 'View' . DS . 'Themed' . DS . 'Minimal';
       
$Folder = new Folder($path);
       
$Folder->delete();
       
$File = new File(Plugin::path('Extensions') . 'Test' . DS . 'test_app' . DS . 'composer.json');
       
$File->delete();
    }

   
/**
     * testGetComposer
     *
     * @return void
     */
   
public function testGetComposer()
    {
       
$CroogoComposer = $this->getMock('CroogoComposer', ['_shellExec']);
       
$CroogoComposer->appPath = $this->CroogoComposer->appPath;
       
$CroogoComposer->expects($this->any())
            ->
method('_shellExec')
            ->
with(
               
$this->equalTo('curl -s http://getcomposer.org/installer | php -- --install-dir=' . $CroogoComposer->appPath)
            )
            ->
will($this->returnValue(true));
       
$CroogoComposer->getComposer();
    }

   
/**
     * testRunComposer
     *
     * @return void
     */
   
public function testRunComposer()
    {
       
$CroogoComposer = $this->getMock('CroogoComposer', ['_shellExec']);
       
$CroogoComposer->appPath = $this->CroogoComposer->appPath;
       
$CroogoComposer->getComposer();
       
$CroogoComposer->expects($this->once())
            ->
method('_shellExec')
            ->
with(
               
$this->equalTo('php ' . $CroogoComposer->composerPath . ' install')
            )
            ->
will($this->returnValue(true));
       
$CroogoComposer->runComposer();
    }

   
/**
     * testSetConfig
     *
     * @return void
     */
   
public function testSetConfig()
    {
       
$result = $this->CroogoComposer->setConfig([
           
'shama/ftp' => '*',
        ]);
       
$this->assertTrue($result);
       
$File = new File($this->CroogoComposer->appPath . 'composer.json');
       
$result = $File->read();
       
$File->close();
       
$expected = <<<END
{
\s+"minimum-stability": "dev",
\s+"config": {
\s+"vendor-dir": "Vendor",
\s+"bin-dir": "Vendor/bin"
\s+},
\s+"require": {
\s+"composer/installers": "\*",
\s+"shama/ftp": "\*"
\s+}
}
END;
       
$this->assertRegExp($expected, trim($result));
    }
}