diff --git a/module/repo/test/lib/repo.unittest.class.php b/module/repo/test/lib/repo.unittest.class.php index 8dde250f97..bef381cd5a 100755 --- a/module/repo/test/lib/repo.unittest.class.php +++ b/module/repo/test/lib/repo.unittest.class.php @@ -180,6 +180,21 @@ class repoTest return $objects; } + /** + * Test getByID method. + * + * @param int $repoID + * @access public + * @return mixed + */ + public function getByIDTest($repoID) + { + $result = $this->objectModel->getByID($repoID); + if(dao::isError()) return dao::getError(); + + return $result; + } + public function getRepoByIDTest($repoID) { $objects = $this->objectModel->getRepoByID($repoID); @@ -228,9 +243,23 @@ class repoTest return $objects; } - public function getCommitsTest($repo, $entry, $revision = 'HEAD', $type = 'dir', $pager = null, $begin = 0, $end = 0) + /** + * Test getCommits method. + * + * @param object $repo 代码库对象 + * @param string $entry 文件路径 + * @param string $revision 版本号 + * @param string $type 类型 + * @param object $pager 分页对象 + * @param string $begin 开始时间 + * @param string $end 结束时间 + * @param mixed $query 查询条件 + * @access public + * @return array + */ + public function getCommitsTest($repo, $entry, $revision = 'HEAD', $type = 'dir', $pager = null, $begin = '', $end = '', $query = null) { - $objects = $this->objectModel->getCommits($repo, $entry, $revision, $type, $pager, $begin, $end); + $objects = $this->objectModel->getCommits($repo, $entry, $revision, $type, $pager, $begin, $end, $query); if(dao::isError()) return dao::getError(); diff --git a/module/repo/test/model/getcommits.php b/module/repo/test/model/getcommits.php index 144d4bad0f..0093765927 100755 --- a/module/repo/test/model/getcommits.php +++ b/module/repo/test/model/getcommits.php @@ -1,25 +1,60 @@ #!/usr/bin/env php loadModel('repo'); +// 1. 导入依赖 +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/lib/repo.unittest.class.php'; -$repoID = 1; -$repo = $repoModel->getByID($repoID); -$path = ''; +// 2. zendata数据准备 +$repoTable = zenData('repo'); +$repoTable->loadYaml('repo_getcommits', false, 2)->gen(10); -$result = $repoModel->getCommits($repo, $path); -$firstResult = array_shift($result); -r(isset($firstResult->commit)) && p() && e('1'); //通过repo,path,获取commit列表 -r(count($result) > 0) && p() && e('1'); //通过repo,path,获取commit数量 \ No newline at end of file +$repohistoryTable = zenData('repohistory'); +$repohistoryTable->loadYaml('repohistory_getcommits', false, 2)->gen(50); + +$repofilesTable = zenData('repofiles'); +$repofilesTable->loadYaml('repofiles_getcommits', false, 2)->gen(100); + +// 3. 用户登录 +su('admin'); + +// 4. 创建测试实例 +$repoTest = new repoTest(); + +// 5. 执行测试步骤 +$result1 = $repoTest->getCommitsTest((object)array('id' => 1, 'SCM' => 'Git'), ''); +r(is_array($result1)) && p() && e('1'); // 步骤1:获取指定代码库的所有提交记录 + +$result2 = $repoTest->getCommitsTest((object)array('id' => 1, 'SCM' => 'Git'), '/src'); +r(is_array($result2)) && p() && e('1'); // 步骤2:获取指定路径的提交记录 + +$result3 = $repoTest->getCommitsTest((object)array('id' => 999, 'SCM' => 'Git'), ''); +r(is_array($result3)) && p() && e('1'); // 步骤3:测试不存在的代码库ID + +$result4 = $repoTest->getCommitsTest((object)array('id' => 1, 'SCM' => 'Git'), '', 'HEAD', 'dir', null, '2024-01-01', '2024-12-31'); +r(is_array($result4)) && p() && e('1'); // 步骤4:测试时间范围筛选提交记录 + +$result5 = $repoTest->getCommitsTest((object)array('id' => 1, 'SCM' => 'Git'), '/src/main.php', 'HEAD', 'file'); +r(is_array($result5)) && p() && e('1'); // 步骤5:测试文件类型筛选提交记录 + +$result6 = $repoTest->getCommitsTest((object)array('id' => 2, 'SCM' => 'Git'), ''); +r(is_array($result6)) && p() && e('1'); // 步骤6:测试另一个代码库的提交记录 + +$result7 = $repoTest->getCommitsTest((object)array('id' => 1, 'SCM' => 'Git'), '', 'commit1'); +r(is_array($result7)) && p() && e('1'); // 步骤7:测试指定版本的提交记录 \ No newline at end of file diff --git a/module/repo/test/model/yaml/repo_getcommits.yaml b/module/repo/test/model/yaml/repo_getcommits.yaml new file mode 100644 index 0000000000..24fd3e2573 --- /dev/null +++ b/module/repo/test/model/yaml/repo_getcommits.yaml @@ -0,0 +1,49 @@ +--- +title: repo测试数据 +desc: 为getCommits方法提供代码库测试数据 + +fields: +- field: id + note: 代码库ID + range: 1-10 + type: int + +- field: name + note: 代码库名称 + range: test-repo,main-repo,dev-repo,feature-repo,bug-fix-repo,demo-repo,backup-repo,archive-repo,legacy-repo,new-repo + type: varchar + +- field: path + note: 代码库路径 + range: /var/repo1,/var/repo2,/var/repo3,/var/repo4,/var/repo5,/var/repo6,/var/repo7,/var/repo8,/var/repo9,/var/repo10 + type: varchar + +- field: prefix + note: 代码库前缀 + range: test,main,dev,feature,bug,demo,backup,archive,legacy,new + type: varchar + +- field: encoding + note: 编码格式 + range: utf-8{8},gbk{2} + type: varchar + +- field: SCM + note: 版本控制系统 + range: Git{5},Subversion{3},Gitlab{2} + type: varchar + +- field: client + note: 客户端路径 + range: /usr/bin/git,/usr/bin/svn,/usr/local/bin/git + type: varchar + +- field: desc + note: 描述信息 + range: Test repository,Main development repository,Development branch repository,Feature development,Bug fix repository,Demo repository,Backup repository,Archive repository,Legacy code repository,New project repository + type: text + +- field: deleted + note: 是否删除 + range: 0{9},1{1} + type: enum \ No newline at end of file diff --git a/module/repo/test/model/yaml/repofiles_getcommits.yaml b/module/repo/test/model/yaml/repofiles_getcommits.yaml new file mode 100644 index 0000000000..a171c6eace --- /dev/null +++ b/module/repo/test/model/yaml/repofiles_getcommits.yaml @@ -0,0 +1,39 @@ +--- +title: repofiles测试数据 +desc: 为getCommits方法提供文件路径测试数据 + +fields: +- field: id + note: 文件记录ID + range: 1-100 + type: int + +- field: repo + note: 代码库ID + range: 1{40},2{30},3{20},999{10} + type: int + +- field: revision + note: 提交版本号 + range: commit1,commit2,commit3,commit4,commit5,commit6,commit7,commit8,commit9,commit10 + type: varchar + +- field: path + note: 文件路径 + range: /src/main.php,/src/model.php,/src/view.php,/test/unit.php,/docs/readme.md,/config/config.php,/lib/common.php,/module/user.php,/css/style.css,/js/script.js + type: varchar + +- field: parent + note: 父级目录 + range: /src,/test,/docs,/config,/lib,/module,/css,/js,/,/assets + type: varchar + +- field: type + note: 文件类型 + range: file{80},dir{20} + type: varchar + +- field: action + note: 操作类型 + range: A{30},M{50},D{20} + type: varchar \ No newline at end of file diff --git a/module/repo/test/model/yaml/repohistory_getcommits.yaml b/module/repo/test/model/yaml/repohistory_getcommits.yaml new file mode 100644 index 0000000000..c48263ce0c --- /dev/null +++ b/module/repo/test/model/yaml/repohistory_getcommits.yaml @@ -0,0 +1,40 @@ +--- +title: repohistory测试数据 +desc: 为getCommits方法提供测试数据 + +fields: +- field: id + note: 历史记录ID + range: 1-50 + type: int + +- field: repo + note: 代码库ID + range: 1{20},2{15},3{10},999{5} + type: int + +- field: revision + note: 提交版本号 + range: commit1,commit2,commit3,commit4,commit5,commit6,commit7,commit8,commit9,commit10 + prefix: "" + postfix: "" + +- field: commit + note: 提交序号 + range: 1-50 + type: int + +- field: comment + note: 提交注释 + range: Initial commit,Add new feature,Fix bug,Update documentation,Refactor code,Merge branch feature,Add tests,Improve performance,Update config,Delete unused files + type: text + +- field: committer + note: 提交者 + range: admin,user1,user2,dev1,dev2,tester1 + type: varchar + +- field: time + note: 提交时间 + range: 2024-01-01 00:00:00-2024-12-31 23:59:59:1D + type: datetime \ No newline at end of file