Subversion-Projekte lars-tiefland.prado

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php

require_once(dirname(__FILE__).'/BaseTestCase.php');

class ProjectDaoTestCase extends BaseTestCase
{
        protected $projectDao;

        function setup()
        {
                parent::setup();
                $app = Prado::getApplication();
                $this->projectDao = $app->getModule('daos')->getDao('ProjectDao');
                $this->flushDatabase();
        }


        function createNewProject()
        {
                $project = new ProjectRecord;
                $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 ProjectRecord;
                $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 createNewProject3()
        {
                $project = new ProjectRecord;
                $project->CreatorUserName = "manager";
                $project->DateCreated = time();
                $project->CompletionDate = strtotime('+1 day');
                $project->Description = 'Test project 3';
                $project->EstimateDuration = 5.0;
                $project->ManagerUserName = 'admin';
                $project->Name = 'Project 3';

                return $project;
        }

        function add3Projects()
        {
                $project1 = $this->createNewProject();
                $project2 = $this->createNewProject2();
                $project3 = $this->createNewProject3();

                $this->projectDao->addNewProject($project1);
                $this->projectDao->addNewProject($project2);
                $this->projectDao->addNewProject($project3);
                return array($project1,$project2,$project3);
        }

        function testCreateNewProject()
        {
                $newProject = $this->createNewProject();
                $this->projectDao->addNewProject($newProject);

                $check = $this->projectDao->getProjectByID(1);
                $this->assertEqual($newProject, $check);
        }

        function testDeleteProject()
        {
                $newProject = $this->createNewProject();
                $this->projectDao->addNewProject($newProject);

                $check = $this->projectDao->getProjectByID(1);
                $this->assertEqual($newProject, $check);

                $this->projectDao->deleteProject(1);
                $verify = $this->projectDao->getProjectByID(1);
                $this->assertNull($verify);
        }

        function testAddUserToProject()
        {
                $project = $this->createNewProject();
                $this->projectDao->addNewProject($project);

                $this->projectDao->addUserToProject($project->ID, 'admin');
                $this->projectDao->addUserToProject($project->ID, 'manager');

                $members = $this->projectDao->getProjectMembers($project->ID);

                $this->assertEqual(count($members), 2);
                $this->assertEqual($members[0], 'admin');
                $this->assertEqual($members[1], 'manager');
        }

        function testAddNullUserToProject()
        {
                $project = $this->createNewProject();
                $this->projectDao->addNewProject($project);
                try
                {
                        $this->projectDao->addUserToProject($project->ID, 'asd');
                        $this->fail();
                }
                catch(TDbException $e)
                {
                        $this->pass();
                }
        }

        function testGetAllProjects()
        {
                $added = $this->add3Projects();

                $projects = $this->projectDao->getAllProjects();

                $this->assertEqual(count($projects),3);
                $this->assertEqual($added[0],$projects[0]);
                $this->assertEqual($added[1],$projects[1]);
                $this->assertEqual($added[2],$projects[2]);
        }

        function testGetProjectsByManagerName()
        {
                $added = $this->add3Projects();

                $projects = $this->projectDao->getProjectsByManagerName('manager');

                $this->assertEqual(count($projects),2);
                $this->assertEqual($added[0],$projects[0]);
                $this->assertEqual($added[1],$projects[1]);
        }

        function testGetProjectsByUserName()
        {
                $added = $this->add3Projects();

                $username = 'consultant';

                $this->projectDao->addUserToProject(1, $username);
                $this->projectDao->addUserToProject(3, $username);

                $projects = $this->projectDao->getProjectsByUserName($username);

                $this->assertEqual(count($projects),2);
                $this->assertEqual($added[0],$projects[0]);
                $this->assertEqual($added[2],$projects[1]);
        }

        function testRemoveUserFromProject()
        {
                $added = $this->add3Projects();
                $this->projectDao->addUserToProject(1, 'admin');
                $this->projectDao->addUserToProject(1, 'manager');
                $this->projectDao->addUserToProject(1, 'consultant');

                $members = $this->projectDao->getProjectMembers(1);

                $this->assertEqual(count($members), 3);
                $this->assertEqual($members[0], 'admin');
                $this->assertEqual($members[2], 'manager');
                $this->assertEqual($members[1], 'consultant');

                $this->projectDao->removeUserFromProject(1,'admin');

                $list = $this->projectDao->getProjectMembers(1);

                $this->assertEqual(count($list), 2);
                $this->assertEqual($list[1], 'manager');
                $this->assertEqual($list[0], 'consultant');
        }

        function testUpdateProject()
        {
                $project = $this->createNewProject();
                $this->projectDao->addNewProject($project);

                $project->Description = "Project Testing 123";

                $this->projectDao->updateProject($project);

                $check = $this->projectDao->getProjectByID(1);
                $this->assertEqual($check, $project);
        }
}

?>