synergy/server_tests/server/controller/SpecificationCtrlTest.php (145 lines of code) (raw):
<?php
namespace Synergy\Controller\Test;
use Synergy\Controller\CaseCtrl;
use Synergy\Controller\RunCtrl;
use Synergy\Controller\SpecificationCtrl;
use Synergy\DB\CaseDAO;
use Synergy\DB\DB_DAO;
use Synergy\DB\Test\FixtureTestCase;
use Synergy\Model\Specification;
/**
* Description of SpecificationCtrlTest
*
* @author vriha
*/
class SpecificationCtrlTest extends FixtureTestCase {
/**
* @var SpecificationCtrl
*/
protected $object;
public function setUp() {
$this->object = new SpecificationCtrl();
parent::setUp();
}
public function testGetSpecifications() {
$d = $this->object->getSpecifications(2);
$this->assertEquals(1, count($d));
$d2 = $this->object->getSpecifications(3, 6);
$this->assertEquals(2, count($d2));
$d3 = $this->object->getSpecifications(-1, -1);
$this->assertEquals(4, count($d3));
}
public function testGetSpecificationFullByAlias() {
$d = $this->object->getSpecificationFullByAlias('cordova_support_test_specification_for_test_7.4', 3);
$this->assertEquals('Cordova support Test Specification for test 7.4', $d->title);
$d2 = $this->object->getSpecificationFullByAlias('cordova_support_test_specification_for_test_7.4', -1);
$this->assertEquals('Cordova support Test Specification for test 8.0', $d2->title);
}
public function testGetAllSpecificationsGroupedBySimpleName() {
$d = $this->object->getSpecificationsByVersion();
$this->assertEquals(3, count($d));
}
public function testGetSimilarSpecs() {
$d = $this->object->getSimilarSpecs('cordova_support_test_specification_for_test_7.4', 7);
$this->assertEquals(2, count($d));
}
public function testGetFavoriteSpecifications() {
$d = $this->object->getFavoriteSpecifications('import');
$this->assertEquals(1, count($d));
}
public function testGetEstimatedTime() {
$this->assertEquals(5, $this->object->getEstimatedTime(4));
$this->assertEquals(1, $this->object->getEstimatedTime(4, 'sanity'));
}
public function testGetVersionID() {
$this->assertEquals(3, $this->object->getVersionID(4));
}
public function testGetCasesCount() {
$this->assertEquals(5, $this->object->getCasesCount(4));
$this->assertEquals(1, $this->object->getCasesCount(4, 1));
}
public function testGetSpecificationFull() {
$spec = $this->object->getSpecificationFull(5);
$this->assertEquals('LESS support Test Specification for test 7.4', $spec->title);
$this->assertEquals(7, $spec->authorId);
$this->assertEquals('jack jack', $spec->authorName);
$this->assertEquals(5, count($spec->testSuites));
$totalCases = 0;
$caseFound = false;
for ($i = 0; $i < count($spec->testSuites); $i++) {
$totalCases += count($spec->testSuites[$i]->testCases);
for ($j = 0; $j < count($spec->testSuites[$i]->testCases); $j++) {
if ($spec->testSuites[$i]->testCases[$j]->title === "Syntax coloring") {
$this->assertEquals(1, count($spec->testSuites[$i]->testCases[$j]->images));
$this->assertEquals('TS_74_LessSupport_coloring.png', $spec->testSuites[$i]->testCases[$j]->images[0]->title);
$caseFound = true;
}
}
}
$this->assertTrue($caseFound);
$this->assertEquals(23, $totalCases);
$this->assertEquals(2, count($spec->attachments));
$this->assertEquals('TS_74_LessSupport_sample.less', $spec->attachments[0]->name);
}
public function testUpdateSpecification() {
$spec = $this->object->getSpecificationFull(4);
$spec->title = "New specification for Cordova";
$result = $this->object->updateSpecification($spec, true);
$this->assertTrue($result);
$spec = $this->object->getSpecificationFull(4);
$this->assertEquals('new_specification_for_cordova', $spec->simpleName);
$this->assertEquals('New specification for Cordova', $spec->title);
$d = $this->object->getSimilarSpecs('new_specification_for_cordova', 4);
$this->assertEquals(2, count($d));
$d = $this->object->getSimilarSpecs('cordova_support_test_specification_for_test_7.4', 4);
$this->assertEquals(0, count($d));
}
public function testGetSpecificationsByAuthor() {
$this->assertEquals(1, count($this->object->getSpecificationsByOwner('jack')));
}
public function testGetSpecificationsByOwner() {
$this->assertEquals(1, count($this->object->getSpecificationsByOwner('jack')));
}
public function testCreateSpecification() {
$sampleSpec = new Specification(13, "test specification", "random title", "8.0", 6, 6);
$sampleSpec->author = "import";
$sampleSpec->authorName = "import import";
$sampleSpec->ownerName = "import import";
$sampleSpec->version = "8.0";
$this->object->createSpecification($sampleSpec, false);
$createdSpec = $this->object->getSpecificationFullByAlias('random_title', -1);
$this->assertEquals($sampleSpec->title, $createdSpec->title);
$this->assertEquals($sampleSpec->desc, $createdSpec->desc);
$this->assertEquals($sampleSpec->version, $createdSpec->version);
$this->assertEquals($sampleSpec->authorName, $createdSpec->authorName);
$this->assertEquals($sampleSpec->ownerName, $createdSpec->ownerName);
}
public function testDeleteSpecification() {
$this->object->deleteSpecification(5);
$s = $this->object->getSpecification(5);
$this->assertNull($s);
$this->assertEquals(0, count($this->object->getAttachments(5)));
$this->assertEquals(0, count($this->object->getSuitesIDs(5)));
$caseCtrl = new CaseCtrl();
$this->assertNull($caseCtrl->getCase(35, 13));
$runCtrl = new RunCtrl();
$this->assertNull($runCtrl->getAssigmentProgress(1));
$this->assertNull($runCtrl->getAssignment(1));
$this->assertEquals(0, count($this->object->getFavoriteSpecifications('jack')));
$caseDao = new CaseDAO();
$this->assertEquals(0, count($caseDao->getImages(6)));
}
public function testCloneSpecification() {
$sampleSpec = $this->object->getSpecification(1);
$this->object->cloneSpecification(1, "8.0", "test two");
DB_DAO::executeQuery("UPDATE specification SET id=13 WHERE title='test two';"); // phpunit in this case does not auto insert ID!!!
$createdSpec = $this->object->getSpecificationFullByAlias('test_two', -1);
$differentTitles = false;
if ($sampleSpec->title !== $createdSpec->title) {
$differentTitles = true;
}
$this->assertTrue($differentTitles);
$this->assertEquals($sampleSpec->desc, $createdSpec->desc);
$this->assertEquals("8.0", $createdSpec->version);
$this->assertEquals($sampleSpec->authorName, $createdSpec->authorName);
$this->assertEquals($sampleSpec->ownerName, $createdSpec->ownerName);
$d = $this->object->getSimilarSpecs('test_two', -1);
$this->assertEquals(2, count($d));
$d = $this->object->getSimilarSpecs('test', -1);
$this->assertEquals(0, count($d));
$sampleSpec = $this->object->getSpecification(1);
$this->assertEquals($sampleSpec->simpleName, 'test_two');
}
}