summaryrefslogtreecommitdiff
path: root/demos/time-tracker/tests/unit/CategoryDaoTestCase.php
diff options
context:
space:
mode:
Diffstat (limited to 'demos/time-tracker/tests/unit/CategoryDaoTestCase.php')
-rw-r--r--demos/time-tracker/tests/unit/CategoryDaoTestCase.php200
1 files changed, 200 insertions, 0 deletions
diff --git a/demos/time-tracker/tests/unit/CategoryDaoTestCase.php b/demos/time-tracker/tests/unit/CategoryDaoTestCase.php
new file mode 100644
index 00000000..53ed9c3e
--- /dev/null
+++ b/demos/time-tracker/tests/unit/CategoryDaoTestCase.php
@@ -0,0 +1,200 @@
+<?php
+
+require_once(dirname(__FILE__).'/BaseTestCase.php');
+
+class CategoryDaoTestCase extends BaseTestCase
+{
+ protected $categoryDao;
+ protected $projectDao;
+
+ function setup()
+ {
+ parent::setup();
+ $app = Prado::getApplication();
+ $this->categoryDao = $app->getModule('daos')->getDao('CategoryDao');
+ $this->projectDao = $app->getModule('daos')->getDao('ProjectDao');
+ $this->flushDatabase();
+ }
+
+ function createNewProject()
+ {
+ $project = new Project;
+ $project->CreatorUserName = "admin";
+ $project->DateCreated = time();
+ $project->CompletionDate = strtotime('+1 month');
+ $project->Description = 'Test project 1';
+ $project->EstimateDuration = 100.5;
+ $project->ManagerUserName = 'manager';
+ $project->Name = 'Project 1';
+
+ return $project;
+ }
+
+ function createNewProject2()
+ {
+ $project = new Project;
+ $project->CreatorUserName = "manager";
+ $project->DateCreated = time();
+ $project->CompletionDate = strtotime('+1 week');
+ $project->Description = 'Test project 2';
+ $project->EstimateDuration = 30.5;
+ $project->ManagerUserName = 'manager';
+ $project->Name = 'Project 2';
+
+ return $project;
+ }
+
+ function createNewCategory()
+ {
+ $category = new Category;
+ $category->Name = 'Category 1';
+ $category->EstimateDuration = 5.5;
+ $category->Abbreviation = 'CAT 1';
+
+ return $category;
+ }
+
+ function createNewCategory2()
+ {
+ $category = new Category;
+ $category->Name = 'Category 2';
+ $category->EstimateDuration = 1.5;
+ $category->Abbreviation = 'CAT2';
+
+ return $category;
+ }
+
+ function createNewCategory3()
+ {
+ $category = new Category;
+ $category->Name = 'Category 3';
+ $category->EstimateDuration = 2.5;
+ $category->Abbreviation = 'CAT3';
+
+ return $category;
+ }
+
+ function create3Categories()
+ {
+ $project1 = $this->createNewProject();
+ $this->projectDao->addNewProject($project1);
+
+ $project2 = $this->createNewProject2();
+ $this->projectDao->addNewProject($project2);
+
+ $category1 = $this->createNewCategory();
+ $category1->ProjectID = $project1->ID;
+
+ $category2 = $this->createNewCategory2();
+ $category2->ProjectID = $project2->ID;
+
+ $category3 = $this->createNewCategory3();
+ $category3->ProjectID = $project1->ID;
+
+ $this->categoryDao->addNewCategory($category1);
+ $this->categoryDao->addNewCategory($category2);
+ $this->categoryDao->addNewCategory($category3);
+
+ return array($category1, $category2, $category3);
+ }
+
+ function testCreateNewCategory()
+ {
+ $project = $this->createNewProject();
+ $this->projectDao->addNewProject($project);
+
+ $category = $this->createNewCategory();
+ $category->ProjectID = $project->ID;
+
+ $this->categoryDao->addNewCategory($category);
+
+ $check = $this->categoryDao->getCategoryByID(1);
+ $this->assertEqual($category, $check);
+ }
+
+ function testCreateDuplicateCategory()
+ {
+ $project = $this->createNewProject();
+ $this->projectDao->addNewProject($project);
+
+ $category = $this->createNewCategory();
+ $category->ProjectID = $project->ID;
+
+ $this->categoryDao->addNewCategory($category);
+
+ try
+ {
+ $this->categoryDao->addNewCategory($category);
+ $this->fail();
+ }
+ catch(TSqlMapQueryExecutionException $e)
+ {
+ $this->pass();
+ }
+ $check = $this->categoryDao->getCategoryByID(1);
+ $this->assertEqual($category, $check);
+ }
+
+ function testGetAllCategories()
+ {
+ $added = $this->create3Categories();
+
+ $list = $this->categoryDao->getAllCategories();
+ $this->assertEqual(count($list), 3);
+ $this->assertEqual($added[0], $list[0]);
+ $this->assertEqual($added[1], $list[1]);
+ $this->assertEqual($added[2], $list[2]);
+ }
+
+ function testDeleteCategory()
+ {
+ $added = $this->create3Categories();
+
+ $this->categoryDao->deleteCategory(1);
+
+ $list = $this->categoryDao->getAllCategories();
+
+ $this->assertEqual(count($list), 2);
+ $this->assertEqual($added[1], $list[0]);
+ $this->assertEqual($added[2], $list[1]);
+ }
+
+ function testCategoriesInProject()
+ {
+ $added = $this->create3Categories();
+
+ $list = $this->categoryDao->getCategoriesByProjectID(1);
+
+ $this->assertEqual(count($list), 2);
+ $this->assertEqual($added[0], $list[0]);
+ $this->assertEqual($added[2], $list[1]);
+ }
+
+ function testGetCategoryByCategoryNameandProjectId()
+ {
+ $added = $this->create3Categories();
+ $cat = $this->categoryDao->getCategoryByNameInProject('Category 1', 1);
+
+ $this->assertEqual($cat, $added[0]);
+ }
+
+ function testUpdateCategory()
+ {
+ $project = $this->createNewProject();
+ $this->projectDao->addNewProject($project);
+
+ $category = $this->createNewCategory();
+ $category->ProjectID = $project->ID;
+
+ $this->categoryDao->addNewCategory($category);
+
+ $category->Name = "Test 2";
+ $this->categoryDao->updateCategory($category);
+
+ $check = $this->categoryDao->getCategoryByID($category->ID);
+
+ $this->assertEqual($category, $check);
+ }
+}
+
+?> \ No newline at end of file