tao-test/app/taoDeliveryRdf/test/unit/model/assembly/CompiledTestConverterServiceTest.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.');
}
}