202 lines
6.2 KiB
PHP
202 lines
6.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) 2014 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
namespace oat\taoQtiTest\test\integration;
|
||
|
|
||
|
use oat\generis\test\GenerisPhpUnitTestRunner;
|
||
|
use oat\tao\model\TaoOntology;
|
||
|
use \taoTests_models_classes_TestsService;
|
||
|
use \taoQtiTest_models_classes_QtiTestService;
|
||
|
use \common_ext_ExtensionsManager;
|
||
|
use \common_report_Report;
|
||
|
|
||
|
/**
|
||
|
* This test case focuses on testing the ManifestParser model.
|
||
|
*
|
||
|
* @author Aamir
|
||
|
* @package taoQtiTest
|
||
|
*/
|
||
|
class QtiTestServiceTest extends GenerisPhpUnitTestRunner
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @var taoQtiTest_models_classes_QtiTestService
|
||
|
*/
|
||
|
protected $testService = null;
|
||
|
|
||
|
public function setUp(): void
|
||
|
{
|
||
|
common_ext_ExtensionsManager::singleton()->getExtensionById('taoQtiTest');
|
||
|
|
||
|
$this->testService = taoQtiTest_models_classes_QtiTestService::singleton();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* verify main class
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function testService()
|
||
|
{
|
||
|
$this->assertIsA($this->testService, taoQtiTest_models_classes_QtiTestService::class);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* create qtitest instance
|
||
|
*
|
||
|
* @return \core_kernel_classes_Resource
|
||
|
*/
|
||
|
public function testCreateInstance()
|
||
|
{
|
||
|
$qtiTest = $this->testService->createInstance($this->testService->getRootclass(), 'UnitTestQtiItem');
|
||
|
$this->assertInstanceOf(\core_kernel_classes_Resource::class, $qtiTest);
|
||
|
|
||
|
$this->assertTrue($qtiTest->isInstanceOf(new \core_kernel_classes_Class(TaoOntology::TEST_CLASS_URI)));
|
||
|
return $qtiTest;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* verify that the test exists
|
||
|
* @depends testCreateInstance
|
||
|
*
|
||
|
* @param $qtiTest
|
||
|
* @return void
|
||
|
*/
|
||
|
public function testQtiTestExists($qtiTest)
|
||
|
{
|
||
|
$this->assertTrue($qtiTest->exists());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* verify that the test can be cloned
|
||
|
* @depends testCreateInstance
|
||
|
*
|
||
|
* @param $qtiTest
|
||
|
* @return void
|
||
|
*/
|
||
|
public function testCloneInstance($qtiTest)
|
||
|
{
|
||
|
$clone = $this->testService->cloneInstance($qtiTest, $this->testService->getRootclass());
|
||
|
$this->assertInstanceOf(\core_kernel_classes_Resource::class, $clone);
|
||
|
$this->assertTrue($clone->exists());
|
||
|
|
||
|
return $clone;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test clone content
|
||
|
* @depends testCreateInstance
|
||
|
* @depends testCloneInstance
|
||
|
*
|
||
|
* @param $clone
|
||
|
*/
|
||
|
public function testCloneContent($qtiTest, $clone)
|
||
|
{
|
||
|
$origFile = $this->testService->getQtiTestFile($qtiTest);
|
||
|
$cloneFile = $this->testService->getQtiTestFile($clone);
|
||
|
|
||
|
$origPath = $origFile->getPrefix();
|
||
|
$clonePath = $cloneFile->getPrefix();
|
||
|
|
||
|
$this->assertNotEquals($origPath, $clonePath);
|
||
|
$this->assertEquals($origFile->read(), $cloneFile->read());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Delete the qtiTest clone
|
||
|
* @depends testCloneInstance
|
||
|
*
|
||
|
* @param $clone
|
||
|
*/
|
||
|
public function testCloneInstanceDelete($clone)
|
||
|
{
|
||
|
$this->testService->deleteTest($clone);
|
||
|
$this->assertFalse($clone->exists());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Delete test
|
||
|
* @depends testCreateInstance
|
||
|
*
|
||
|
* @param $qtiTest
|
||
|
*/
|
||
|
public function testDeleteInstance($qtiTest)
|
||
|
{
|
||
|
$this->testService->deleteTest($qtiTest);
|
||
|
$this->assertFalse($qtiTest->exists());
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @author Lionel Lecaque, lionel@taotesting.com
|
||
|
*/
|
||
|
public function testImportMultipleTests()
|
||
|
{
|
||
|
$datadir = dirname(__FILE__) . '/data/';
|
||
|
$rootclass = $this->testService->getRootclass();
|
||
|
$report = $this->testService->importMultipleTests($rootclass, $datadir . 'unitqtitest.zip');
|
||
|
$this->assertInstanceOf('common_report_Report', $report);
|
||
|
$this->assertEquals($report->getType(), common_report_Report::TYPE_SUCCESS);
|
||
|
$testService = taoTests_models_classes_TestsService::singleton();
|
||
|
foreach ($report as $rep) {
|
||
|
$result = $rep->getData();
|
||
|
|
||
|
$this->assertInstanceOf(\core_kernel_classes_Class::class, $result->itemClass);
|
||
|
$this->assertInstanceOf(\core_kernel_classes_Resource::class, $result->rdfsResource);
|
||
|
foreach ($result->items as $items) {
|
||
|
$this->assertInstanceOf(\core_kernel_classes_Resource::class, $items);
|
||
|
$type = current($items->getTypes());
|
||
|
$this->assertInstanceOf(\core_kernel_classes_Resource::class, $type);
|
||
|
|
||
|
$this->assertEquals($result->itemClass->getUri(), $type->getUri());
|
||
|
$expectedLabel = ['Unattended Luggage','Associate Things'];
|
||
|
$this->assertTrue(in_array($items->getLabel(), $expectedLabel));
|
||
|
}
|
||
|
$testService->deleteTest($result->rdfsResource);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Verify that test attribute value in xml file will be properly encoded
|
||
|
* (<b>&</b>, <b><</b> and <b>"</b> symbols must be encoded)
|
||
|
*
|
||
|
* @author Aleh Hutnikau, hutnikau@1pt.com
|
||
|
*/
|
||
|
public function testCreateContent()
|
||
|
{
|
||
|
$attrValue = '"A & B < C"';
|
||
|
|
||
|
$qtiTest = $this->testService->createInstance($this->testService->getRootclass(), $attrValue);
|
||
|
$xmlFile = $this->testService->getQtiTestFile($qtiTest);
|
||
|
$this->assertTrue($xmlFile->exists());
|
||
|
|
||
|
$doc = new \DOMDocument();
|
||
|
|
||
|
$this->assertTrue($doc->loadXML($xmlFile->read()));
|
||
|
$this->assertEquals($attrValue, $doc->documentElement->getAttribute('title'));
|
||
|
|
||
|
$this->testService->deleteTest($qtiTest);
|
||
|
$this->assertFalse($qtiTest->exists());
|
||
|
}
|
||
|
}
|