From bcf3a387ec2aea85f4b4259e4157573b8fe8db25 Mon Sep 17 00:00:00 2001 From: liugang Date: Mon, 8 Sep 2025 22:46:30 +0800 Subject: [PATCH] + [misc] Add unit tests for metricModel::clearOutDatedRecords() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../metric/test/lib/metric.unittest.class.php | 25 +++++++++ .../test/model/clearoutdatedrecords.php | 40 +++++++++++++++ .../model/yaml/metriclib_clearoutdated.yaml | 51 +++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100755 module/metric/test/model/clearoutdatedrecords.php create mode 100644 module/metric/test/model/yaml/metriclib_clearoutdated.yaml diff --git a/module/metric/test/lib/metric.unittest.class.php b/module/metric/test/lib/metric.unittest.class.php index b48fd2eae8..c3a86bed05 100644 --- a/module/metric/test/lib/metric.unittest.class.php +++ b/module/metric/test/lib/metric.unittest.class.php @@ -521,4 +521,29 @@ class metricTest return false; } + + /** + * Test clearOutDatedRecords method. + * + * @param string $code + * @param string $cycle + * @access public + * @return mixed + */ + public function clearOutDatedRecordsTest($code = '', $cycle = '') + { + global $tester; + + if(empty($code) || empty($cycle)) return 0; + + // 记录删除前的数据量 + $beforeCount = $tester->dao->select('COUNT(*) as count')->from(TABLE_METRICLIB)->where('metricCode')->eq($code)->fetch('count'); + + $this->objectModel->clearOutDatedRecords($code, $cycle); + + // 记录删除后的数据量 + $afterCount = $tester->dao->select('COUNT(*) as count')->from(TABLE_METRICLIB)->where('metricCode')->eq($code)->fetch('count'); + + return $beforeCount - $afterCount; + } } \ No newline at end of file diff --git a/module/metric/test/model/clearoutdatedrecords.php b/module/metric/test/model/clearoutdatedrecords.php new file mode 100755 index 0000000000..a193bac321 --- /dev/null +++ b/module/metric/test/model/clearoutdatedrecords.php @@ -0,0 +1,40 @@ +#!/usr/bin/env php +metricCode->range('test_metric_001{2}'); +$table->year->range('2025{2}'); +$table->month->range('9{2}'); +$table->week->range('37{2}'); +$table->day->range('8{2}'); +$table->value->range('1-2'); +$table->gen(2); + +su('admin'); + +r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'year')) && p() && e('2'); +r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'month')) && p() && e('0'); +r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'week')) && p() && e('0'); +r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'day')) && p() && e('0'); +r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'invalid')) && p() && e('0'); \ No newline at end of file diff --git a/module/metric/test/model/yaml/metriclib_clearoutdated.yaml b/module/metric/test/model/yaml/metriclib_clearoutdated.yaml new file mode 100644 index 0000000000..71d73d7c83 --- /dev/null +++ b/module/metric/test/model/yaml/metriclib_clearoutdated.yaml @@ -0,0 +1,51 @@ +--- +title: metriclib表清理过期记录测试数据 +desc: 用于测试clearOutDatedRecords方法的测试数据 +author: AI +version: 1.0 + +fields: +- field: id + range: 1-20 +- field: metricID + range: 1-5 +- field: metricCode + range: test_metric_001{4}, test_metric_002{4}, test_metric_003{4}, test_metric_004{4}, test_metric_005{4} +- field: system + range: 0{20} +- field: program + range: 0{20} +- field: project + range: 0{20} +- field: product + range: 0{20} +- field: execution + range: 0{20} +- field: code + range: "{20}" +- field: pipeline + range: "{20}" +- field: repo + range: "{20}" +- field: user + range: admin{20} +- field: dept + range: "{20}" +- field: year + range: 2025{16}, 2024{4} +- field: month + range: 9{16}, 8{4} +- field: week + range: 37{16}, 36{4} +- field: day + range: 8{16}, 7{4} +- field: value + range: 1-20 +- field: calcType + range: cron{20} +- field: calculatedBy + range: admin{20} +- field: date + range: '2025-09-08{16}, 2024-08-15{4}' +- field: deleted + range: 0{20} \ No newline at end of file