106 lines
4.2 KiB
PHP
106 lines
4.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; under version 2
|
|
* of the License (non-upgradable).
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* Copyright (c) 2019 (original work) Open Assessment Technologies SA;
|
|
*/
|
|
|
|
namespace oat\taoDeliveryRdf\test\unit\model\assembly;
|
|
|
|
use tao_models_classes_service_StorageDirectory;
|
|
use oat\generis\test\MockObject;
|
|
use oat\generis\test\TestCase;
|
|
use oat\oatbox\filesystem\File;
|
|
use oat\taoDeliveryRdf\model\assembly\CompiledTestConverterService;
|
|
use oat\taoQtiTest\models\CompilationDataService;
|
|
use oat\taoQtiTest\models\PhpCodeCompilationDataService;
|
|
use oat\taoQtiTest\models\XmlCompilationDataService;
|
|
use qtism\data\QtiComponent;
|
|
|
|
class CompiledTestConverterServiceTest extends TestCase
|
|
{
|
|
const FILE_BASE_NAME = 'BASE_NAME.EXT';
|
|
/**
|
|
* @var CompiledTestConverterService
|
|
*/
|
|
private $object;
|
|
/**
|
|
* @var PhpCodeCompilationDataService|MockObject
|
|
*/
|
|
private $compilationDataReaderMock;
|
|
/**
|
|
* @var XmlCompilationDataService|MockObject
|
|
*/
|
|
private $compilationDataWriterMock;
|
|
/**
|
|
* @var \tao_models_classes_service_StorageDirectory|MockObject
|
|
*/
|
|
private $directoryMock;
|
|
/**
|
|
* @var File|MockObject
|
|
*/
|
|
private $fileMock;
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
$this->compilationDataReaderMock = $this->createMock(CompilationDataService::class);
|
|
$this->compilationDataReaderMock->method('readCompilationData')
|
|
->willReturn($this->createMock(QtiComponent::class));
|
|
$this->compilationDataWriterMock = $this->createMock(CompilationDataService::class);
|
|
$this->compilationDataWriterMock->method('readCompilationData')
|
|
->willReturn($this->createMock(QtiComponent::class));
|
|
$this->directoryMock = $this->createMock(tao_models_classes_service_StorageDirectory::class);
|
|
$this->fileMock = $this->createMock(File::class);
|
|
$this->fileMock->method('getBasename')
|
|
->willReturn(self::FILE_BASE_NAME);
|
|
$this->object = new CompiledTestConverterService($this->compilationDataReaderMock, $this->compilationDataWriterMock);
|
|
}
|
|
|
|
public function testConvertFileExists()
|
|
{
|
|
$expectedNewFileType = 'NEW_EXT';
|
|
$expectedNewFile = $this->createMock(File::class);
|
|
$expectedNewFile->method('exists')
|
|
->willReturn(true);
|
|
$expectedNewFile->expects($this->once())
|
|
->method('delete');
|
|
$this->compilationDataWriterMock->method('getOutputFileType')
|
|
->willReturn($expectedNewFileType);
|
|
$this->directoryMock->method('getFile')
|
|
->with("BASE_NAME.{$expectedNewFileType}")
|
|
->willReturn($expectedNewFile);
|
|
$result = $this->object->convert($this->fileMock, $this->directoryMock);
|
|
$this->assertSame($expectedNewFile, $result, 'Method must return test file converted to PHP.');
|
|
}
|
|
|
|
public function testConvertFileDontExist()
|
|
{
|
|
$expectedNewFileType = 'NEW_EXT';
|
|
$expectedPhpFile = $this->createMock(File::class);
|
|
$expectedPhpFile->method('exists')
|
|
->willReturn(false);
|
|
$expectedPhpFile->expects($this->never())
|
|
->method('delete');
|
|
$this->compilationDataWriterMock->method('getOutputFileType')
|
|
->willReturn($expectedNewFileType);
|
|
$this->directoryMock->method('getFile')
|
|
->with("BASE_NAME.{$expectedNewFileType}")
|
|
->willReturn($expectedPhpFile);
|
|
$result = $this->object->convert($this->fileMock, $this->directoryMock);
|
|
$this->assertSame($expectedPhpFile, $result, 'Method must return test file converted to PHP.');
|
|
}
|
|
}
|