synergy/server_tests/server/controller/CaseCtrlTest.php (189 lines of code) (raw):

<?php namespace Synergy\Controller\Test; use PDO; use Synergy\Controller\CaseCtrl; use Synergy\DB\DB_DAO; use Synergy\DB\Test\FixtureTestCase; use Synergy\Model\TestCase; /** * Description of CaseCtrlTest * * @author vriha */ class CaseCtrlTest extends FixtureTestCase { protected $object; public function setUp() { $this->object = new CaseCtrl(); parent::setUp(); } public function testGetCase() { $case = $this->object->getCase(21, 11); $this->assertEquals('Elements completion', $case->title); $this->assertEquals('Items like datalist, dd, div etc. are offered', $case->result); $this->assertEquals(1, $case->order); $this->assertEquals(1, $case->duration); $this->assertNull($this->object->getCase(1212, 111)); } public function testGetCasesByFilter() { $cases = $this->object->getCasesByFilter('sanity', 1); $this->assertEquals(1, count($cases->cases)); $result = $this->object->getCasesByFilter('sanity2', 1); $this->assertEquals(0, count($result->cases)); $result = $this->object->getCasesByFilter('sanity', 2); $this->assertEquals(0, count($result->cases)); $this->assertEquals('New Project', $cases->cases[0]->title); } public function testUpdateCase() { DB_DAO::executeQuery("INSERT INTO suite_has_case (suite_id, case_id) VALUES (15,36)"); $case = $this->object->getCase(36, 13); $case->title = "Updated case"; $case->steps = "Updated case2"; $case->result = "Updated case3"; $this->object->updateCase($case, 1); $case = $this->object->getCase(36, 13); $this->assertEquals("Updated case", $case->title); $this->assertEquals("Updated case2", $case->steps); $this->assertEquals("Updated case3", $case->result); $this->assertEquals(1, $case->duration); $case->duration = 5; $this->object->updateCase($case, 1); $case = $this->object->getCase(36, 13); $this->assertEquals(5, $case->duration); $this->object->addIssue(111111, 36); $this->object->addLabel('sanity', 36); $this->object->saveImage(36, "12_image.png", "simple schema"); $case->title = "Updated Clonned case"; $case->suiteId = 13; $this->object->updateCase($case, 0); DB_DAO::executeQuery("UPDATE `case` SET id=333 WHERE title='Updated Clonned case';"); DB_DAO::executeQuery("UPDATE `suite_has_case` SET case_id=333 WHERE case_id=0;"); $this->assertNull($this->object->getCase(36, 13)); $originalCase = $this->object->getCase(36, -1); $clonnedCase = $this->object->getCase(333, 13); $this->assertEquals('Updated case', $originalCase->title); $this->assertEquals('Updated Clonned case', $clonnedCase->title); $this->assertEquals(2, count($this->object->findMatchingCases('Updated'))); } public function testAddRemoveIssue() { $this->object->addIssue(111111, 16); $this->object->addIssue(87, 17); $case1 = $this->object->getCase(16, -1); $this->assertEquals(2, count($case1->issues)); $case2 = $this->object->getCase(17, -1); $this->assertEquals(1, count($case2->issues)); $this->assertEquals(87, $case2->issues[0]->bugId); $this->object->removeIssue(87, 17); $case1 = $this->object->getCase(17, -1); $this->assertEquals(0, count($case1->issues)); } public function testAddRemoveLabel() { $this->object->addLabel('sanity', 18); $case1 = $this->object->getCase(18, -1); $this->assertEquals(1, count($case1->keywords)); $this->assertEquals('sanity', $case1->keywords[0]); $this->object->removelabel('sanity', 18); $case1 = $this->object->getCase(18, -1); $this->assertEquals(0, count($case1->keywords)); } public function testCreateGetKeyword() { $idSanity = $this->object->createGetKeyword('sanity'); $this->object->createGetKeyword('foo'); DB_DAO::executeQuery("UPDATE `keyword` SET id=21 WHERE `keyword`='foo';"); $id = $this->object->createGetKeyword('foo'); $this->assertEquals(1, $idSanity); $this->assertEquals(21, $id); } public function testCreateCase() { $testCase = new TestCase("Unit test case 11", 5, -1, 2); $testCase->steps = "steps"; $testCase->result = "result"; $testCase->suiteId = 15; $this->object->createCase($testCase); DB_DAO::connectDatabase(); DB_DAO::executeQuery("UPDATE `case` SET id=999 WHERE title='Unit test case 11';"); DB_DAO::executeQuery("UPDATE `suite_has_case` SET case_id=999 WHERE case_id=0;"); $handler = DB_DAO::getDB()->prepare("SELECT id FROM `case` WHERE title='Unit test case 11'"); $handler->execute(); $newId = -1; while ($row = $handler->fetch(PDO::FETCH_ASSOC)) { $newId = $row['id']; } $testCaseCreated = $this->object->getCase($newId, 15); $this->assertEquals($testCase->title, $testCaseCreated->title); $this->assertEquals($testCase->result, $testCaseCreated->result); $this->assertEquals($testCase->steps, $testCaseCreated->steps); $this->assertEquals($testCase->order, $testCaseCreated->order); $this->object->removeCaseFromSuite(15, $newId); $this->assertNull($this->object->getCase($newId, 15)); $this->object->saveImage($newId, "12_image.png", "simple schema"); DB_DAO::executeQuery("UPDATE `case_image` SET id=999 WHERE case_id=" . $newId . ";"); $this->object->addIssue(111111, $newId); $this->object->addLabel('sanity', $newId); $case1 = $this->object->getCase($newId, -1); // TODO removal $this->assertEquals(1, count($case1->images)); $this->assertEquals(1, count($case1->keywords)); $this->assertEquals(1, count($case1->issues)); $this->object->removeCase($newId); $this->assertEquals(0, count($this->object->getIssuesForCase($newId))); $this->assertEquals(0, count($this->object->getLabelsForCase($newId))); $this->assertEquals(0, count($this->object->getImagesForCase($newId))); $this->assertNull($this->object->getCase($newId, 15)); $this->assertNull($this->object->getCase($newId, -1)); } public function testFindMatchingCases() { $matchingCases = $this->object->findMatchingCases('Cor'); $this->assertEquals(2, count($matchingCases)); $this->assertEquals('Cordova plugins', $matchingCases[0]->title); $this->assertEquals('Cordova plugins II', $matchingCases[1]->title); } public function testGetCasesDuration() { $data = $this->object->getCasesDuration("(id=15 OR id=16)"); $this->assertEquals(2, count($data)); $this->assertEquals(1, $data[0]->duration); $this->assertEquals(1, $data[1]->duration); } public function testUpdateDuration() { $this->object->updateDuration(30, 3); $caseUpdated = $this->object->getCase(30, -1); $this->assertEquals(2, $caseUpdated->duration); $data = $this->object->getCasesDuration("(id=15 OR id=30)"); $this->assertEquals(3, $data[0]->duration + $data[1]->duration); } public function testSaveDeleteImage() { $this->object->saveImage(21, "12_image.png", "simple schema"); $caseUpdated = $this->object->getCase(21, -1); $this->assertEquals(1, count($caseUpdated->images)); $this->assertEquals(IMAGE_PATH . "12_image.png", $caseUpdated->images[0]->getPath()); $this->assertEquals("simple schema", $caseUpdated->images[0]->title); DB_DAO::executeQuery("UPDATE case_image SET id=14 WHERE title='simple schema'"); $this->object->deleteImage(14); $caseUpdated = $this->object->getCase(21, -1); $this->assertEquals(0, count($caseUpdated->images)); } public function testGetTestCasesDetailed() { $this->object->addIssue(12, 21); $this->object->addLabel('sanity', 21); $this->object->saveImage(21, "12_image.png", "simple schema"); $case = $this->object->getCase(21, 11); $this->assertEquals('Elements completion', $case->title); $this->assertEquals('Items like datalist, dd, div etc. are offered', $case->result); $this->assertEquals(1, $case->order); $this->assertEquals(1, $case->duration); $this->assertEquals(1, count($case->keywords)); $this->assertEquals(1, count($case->images)); } public function testRemoveUnusedCases() { $testCase = new TestCase("Unit test case 11", 5, -1, 2); $testCase->steps = "steps"; $testCase->result = "result"; $testCase->suiteId = 15; $this->object->createCase($testCase); DB_DAO::connectDatabase(); DB_DAO::executeQuery("UPDATE `case` SET id=999 WHERE title='Unit test case 11';"); DB_DAO::executeQuery("UPDATE `suite_has_case` SET case_id=999 WHERE case_id=0;"); $handler = DB_DAO::getDB()->prepare("SELECT id FROM `case` WHERE title='Unit test case 11'"); $handler->execute(); $newId = -1; while ($row = $handler->fetch(PDO::FETCH_ASSOC)) { $newId = $row['id']; } $this->object->removeCaseFromSuite(15, $newId); $this->object->removeUnusedCases(); $this->assertNull($this->object->getCase($newId, -1)); } }