From 93b6e909fdcd615d1c1194244d2e85b06b397bb3 Mon Sep 17 00:00:00 2001 From: liugang Date: Thu, 11 Sep 2025 16:13:47 +0800 Subject: [PATCH] + [misc] Add unit tests for convertTao::buildChangeItemData() 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 --- .../test/lib/convert.unittest.class.php | 26 ++++++ .../convert/test/tao/buildchangeitemdata.php | 82 +++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100755 module/convert/test/tao/buildchangeitemdata.php diff --git a/module/convert/test/lib/convert.unittest.class.php b/module/convert/test/lib/convert.unittest.class.php index 9d3fa42a6a..5862c0afc7 100644 --- a/module/convert/test/lib/convert.unittest.class.php +++ b/module/convert/test/lib/convert.unittest.class.php @@ -2154,4 +2154,30 @@ class convertTest return 'error: ' . $e->getMessage(); } } + + /** + * Test buildChangeItemData method. + * + * @param array $data + * @access public + * @return mixed + */ + public function buildChangeItemDataTest($data = array()) + { + try { + // 使用反射来访问protected方法 + $reflection = new ReflectionClass($this->objectTao); + $method = $reflection->getMethod('buildChangeItemData'); + $method->setAccessible(true); + + $result = $method->invoke($this->objectTao, $data); + if(dao::isError()) return dao::getError(); + + return $result; + } catch (Exception $e) { + return 'exception: ' . $e->getMessage(); + } catch (Error $e) { + return 'error: ' . $e->getMessage(); + } + } } diff --git a/module/convert/test/tao/buildchangeitemdata.php b/module/convert/test/tao/buildchangeitemdata.php new file mode 100755 index 0000000000..b11d49f761 --- /dev/null +++ b/module/convert/test/tao/buildchangeitemdata.php @@ -0,0 +1,82 @@ +#!/usr/bin/env php + '1001', + 'group' => '2001', + 'fieldtype' => 'text', + 'field' => 'summary', + 'oldvalue' => 'old summary', + 'oldstring' => 'old string', + 'newvalue' => 'new summary', + 'newstring' => 'new string' +); + +$testData2 = array( + 'id' => '1002', + 'group' => '2002', + 'fieldtype' => 'select', + 'field' => 'status' +); + +$testData3 = array( + 'id' => '1003', + 'group' => '2003', + 'fieldtype' => 'number', + 'field' => 'priority' +); + +$testData4 = array( + 'id' => '1004', + 'group' => '2004', + 'fieldtype' => 'date', + 'field' => 'duedate', + 'oldvalue' => '2023-01-01', + 'newvalue' => '2023-12-31' +); + +$testData5 = array( + 'id' => '1005', + 'group' => '2005', + 'fieldtype' => 'checkbox', + 'field' => 'components', + 'newstring' => 'ComponentA' +); + +r($convertTest->buildChangeItemDataTest($testData1)) && p('id') && e('1001'); +r($convertTest->buildChangeItemDataTest($testData1)) && p('groupid') && e('2001'); +r($convertTest->buildChangeItemDataTest($testData1)) && p('fieldtype') && e('text'); +r($convertTest->buildChangeItemDataTest($testData1)) && p('field') && e('summary'); +r($convertTest->buildChangeItemDataTest($testData1)) && p('oldvalue') && e('old summary'); +r($convertTest->buildChangeItemDataTest($testData2)) && p('oldvalue') && e('~~'); +r($convertTest->buildChangeItemDataTest($testData3)) && p('id') && e('1003'); +r($convertTest->buildChangeItemDataTest($testData4)) && p('oldvalue') && e('2023-01-01'); +r($convertTest->buildChangeItemDataTest($testData5)) && p('newstring') && e('ComponentA'); \ No newline at end of file