From 143980b6dab8ad87c44518e5b7befb614fb83b85 Mon Sep 17 00:00:00 2001 From: wei <> Date: Fri, 14 Jul 2006 06:56:16 +0000 Subject: Add time-tracker sample and docs. (Incomplete) --- .../tests/unit/AddUserToProjectTestCase.php | 35 ++++++++ .../tests/unit/CreateNewProjectTestCase.php | 90 +++++++++++++++++++++ .../time-tracker/tests/unit/ProjectDaoTestCase.php | 92 ++++++++++++++++++++++ demos/time-tracker/tests/unit/ProjectTestCase.php | 15 ++++ 4 files changed, 232 insertions(+) create mode 100644 demos/time-tracker/tests/unit/AddUserToProjectTestCase.php create mode 100644 demos/time-tracker/tests/unit/CreateNewProjectTestCase.php create mode 100644 demos/time-tracker/tests/unit/ProjectDaoTestCase.php create mode 100644 demos/time-tracker/tests/unit/ProjectTestCase.php (limited to 'demos/time-tracker/tests/unit') diff --git a/demos/time-tracker/tests/unit/AddUserToProjectTestCase.php b/demos/time-tracker/tests/unit/AddUserToProjectTestCase.php new file mode 100644 index 00000000..36defc57 --- /dev/null +++ b/demos/time-tracker/tests/unit/AddUserToProjectTestCase.php @@ -0,0 +1,35 @@ +createNewTestProject(); + + $user = new TimeTrackerUser(); + $user->ID = 3; + $user->Name = "test user 1"; + + if(($conn = $this->connection) instanceof MockTSqlMapper) + { + $this->setupMockConnectionFor($project); + $conn->setReturnReference('queryForObject', $user, array('GetUserByName', $user->Name)); + $conn->setReturnValue('queryForList', array(), array('GetProjectMembers', $project)); + + $param['project'] = $project; + $param['user'] = $user; + + $conn->setReturnValue('insert', true, array('AddNewUserToProject', $param)); + + $conn->expectAtLeastOnce('insert'); + $conn->expectAtLeastOnce('queryForList'); + } + + $this->assertTrue($this->dao->createNewProject($project)); + $this->assertTrue($this->dao->addUserToProject($project, $user)); + } +} + +?> \ No newline at end of file diff --git a/demos/time-tracker/tests/unit/CreateNewProjectTestCase.php b/demos/time-tracker/tests/unit/CreateNewProjectTestCase.php new file mode 100644 index 00000000..0aa67405 --- /dev/null +++ b/demos/time-tracker/tests/unit/CreateNewProjectTestCase.php @@ -0,0 +1,90 @@ +createNewTestProject(); + + if(($conn = $this->connection) instanceof MockTSqlMapper) + { + $this->setupMockConnectionFor($project); + $conn->expectMinimumCallCount('queryForObject', 3); + $conn->expectAtLeastOnce('insert'); + } + + $this->assertProjectCreated($project); + } + + function testProjectExistsException() + { + $project = $this->createNewTestProject(); + + if(($conn = $this->connection) instanceof MockTSqlMapper) + { + //make the project exist + $conn->setReturnValue('queryForObject', + $project, array('GetProjectByName', 'Project 1')); + $this->setupMockConnectionFor($project); + } + + try + { + $this->assertProjectCreated($project); + $this->fail(); + } + catch(TimeTrackerException $e) + { + $this->pass(); + } + } + function testProjectCustomerNotExistsException() + { + $project = $this->createNewTestProject(); + + if(($conn = $this->connection) instanceof MockTSqlMapper) + { + //customer does not exist + $conn->setReturnValue('queryForObject', + null, array('GetUserByName', 'Customer A')); + $this->setupMockConnectionFor($project); + } + + try + { + $this->assertProjectCreated($project); + $this->fail(); + } + catch(TimeTrackerException $e) + { + $this->pass(); + } + } + + function testProjectManagerNotExistsException() + { + $project = $this->createNewTestProject(); + + if(($conn = $this->connection) instanceof MockTSqlMapper) + { + //manager does not exist + $conn->setReturnValue('queryForObject', + null, array('GetUserByName', 'Manager A')); + $this->setupMockConnectionFor($project); + } + + try + { + $this->assertProjectCreated($project); + $this->fail(); + } + catch(TimeTrackerException $e) + { + $this->pass(); + } + } +} + +?> \ No newline at end of file diff --git a/demos/time-tracker/tests/unit/ProjectDaoTestCase.php b/demos/time-tracker/tests/unit/ProjectDaoTestCase.php new file mode 100644 index 00000000..bc576630 --- /dev/null +++ b/demos/time-tracker/tests/unit/ProjectDaoTestCase.php @@ -0,0 +1,92 @@ +dao= new ProjectDao(); + $this->connection = new MockTSqlMapper($this); + $this->dao->setConnection($this->connection); + } + +/* + //Simple test case, will not detect project existanc + //This case will clash with the more complete test case below. + function testProjectDaoCanCreateNewProject() + { + $project = new Project(); + $project->Name = "Project 1"; + + if(($conn = $this->connection) instanceof MockTSqlMapper) + { + $conn->expectOnce('insert', array('CreateNewProject', $project)); + $conn->setReturnValue('insert', true); + + $conn->expectOnce('queryForObject', array('GetProjectByID', 1)); + $conn->setReturnReference('queryForObject', $project); + } + + $this->assertTrue($this->dao->createNewProject($project)); + $this->assertEqual($this->dao->getProjectByID(1), $project); + } +*/ + function setupMockConnectionFor($project) + { + $customer = new TimeTrackerUser(); + $customer->ID = 1; + $customer->Name = "Customer A"; + + $manager = new TimeTrackerUser(); + $manager->ID = 2; + $manager->Name = "Manager A"; + + $conn = $this->connection; + + //return the customer and manager + $conn->setReturnValue('queryForObject', + $customer, array('GetUserByName', 'Customer A')); + $conn->setReturnValue('queryForObject', + $manager, array('GetUserByName', 'Manager A')); + + //project does not exist + $conn->setReturnValue('queryForObject', + null, array('GetProjectByName', 'Project 1')); + + $param['project'] = $project; + $param['creator'] = $customer->ID; + $param['manager'] = $manager->ID; + + $conn->setReturnValue('insert', + true, array('CreateNewProject', $param)); + $conn->setReturnReference('queryForObject', + $project, array('GetProjectByID', 1)); + } + + function createNewTestProject() + { + $project = new Project(); + $project->Name = "Project 1"; + $project->CreatorUserName = "Customer A"; + $project->ManagerUserName = "Manager A"; + + return $project; + } + + function assertProjectCreated($project) + { + $this->assertTrue($this->dao->createNewProject($project)); + $this->assertEqual($this->dao->getProjectByID(1), $project); + } + +} +?> \ No newline at end of file diff --git a/demos/time-tracker/tests/unit/ProjectTestCase.php b/demos/time-tracker/tests/unit/ProjectTestCase.php new file mode 100644 index 00000000..a61c4f77 --- /dev/null +++ b/demos/time-tracker/tests/unit/ProjectTestCase.php @@ -0,0 +1,15 @@ +pass(); + } +} + +?> \ No newline at end of file -- cgit v1.2.3