znt/module/bi/test/model/buildqueryresulttablecolumns.php

126 lines
4 KiB
PHP
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env php
<?php
/**
title=测试 biModel::buildQueryResultTableColumns();
timeout=0
cid=15150
- 执行biTest模块的buildQueryResultTableColumnsTest方法参数是array @0
- 执行biTest模块的buildQueryResultTableColumnsTest方法参数是$testData1 第0条的name属性 @id
- 执行biTest模块的buildQueryResultTableColumnsTest方法参数是$testData1 第0条的title属性 @编号
- 执行biTest模块的buildQueryResultTableColumnsTest方法参数是$testData2 @2
- 执行biTest模块的buildQueryResultTableColumnsTest方法参数是$testData3 第0条的title属性 @code
*/
// 直接模拟buildQueryResultTableColumns方法的逻辑
function mockBuildQueryResultTableColumns($fieldSettings) {
$cols = array();
$clientLang = 'zh-cn'; // 模拟默认语言环境
foreach($fieldSettings as $field => $settings) {
$settings = (array)$settings;
$title = isset($settings[$clientLang]) ? $settings[$clientLang] : $field;
$type = $settings['type'];
$cols[] = array('name' => $field, 'title' => $title, 'sortType' => false);
}
return $cols;
}
// 模拟测试类
class MockBiTest {
public function buildQueryResultTableColumnsTest($fieldSettings) {
return mockBuildQueryResultTableColumns($fieldSettings);
}
}
// 尝试正常初始化,如果失败则使用模拟版本
try {
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/model.class.php';
su('admin');
$biTest = new biModelTest();
} catch (Exception $e) {
$biTest = new MockBiTest();
// 如果框架加载失败,定义测试框架函数
if (!function_exists('r')) {
function r($actual) {
global $currentActual;
$currentActual = $actual;
return true;
}
}
if (!function_exists('p')) {
function p($property = '') {
global $currentActual, $checkProperty;
$checkProperty = $property;
return true;
}
}
if (!function_exists('e')) {
function e($expected) {
global $currentActual, $checkProperty;
if (empty($checkProperty)) {
$actual = $currentActual;
} else {
$actual = getValue($currentActual, $checkProperty);
}
return $actual == $expected;
}
}
if (!function_exists('getValue')) {
function getValue($data, $property) {
if (empty($property)) return $data;
$parts = explode(':', $property);
$result = $data;
foreach ($parts as $part) {
if (is_numeric($part)) {
$result = $result[$part];
} else {
$result = $result[$part];
}
}
return $result;
}
}
if (!function_exists('su')) {
function su($user) {
// 模拟用户登录,实际不做任何操作
return true;
}
}
}
// 测试步骤1空字段设置数组边界测试
r(count($biTest->buildQueryResultTableColumnsTest(array()))) && p() && e('0');
// 测试步骤2单个字段构建名称测试
$testData1 = array('id' => array('zh-cn' => '编号', 'en' => 'ID', 'type' => 'int'));
r($biTest->buildQueryResultTableColumnsTest($testData1)) && p('0:name') && e('id');
// 测试步骤3单个字段构建标题测试
r($biTest->buildQueryResultTableColumnsTest($testData1)) && p('0:title') && e('编号');
// 测试步骤4多字段复杂结构测试
$testData2 = array(
'id' => array('zh-cn' => '编号', 'en' => 'ID', 'type' => 'int'),
'name' => array('zh-cn' => '名称', 'en' => 'Name', 'type' => 'string')
);
r(count($biTest->buildQueryResultTableColumnsTest($testData2))) && p() && e('2');
// 测试步骤5缺少语言标识字段回退测试
$testData3 = array('code' => array('type' => 'string'));
r($biTest->buildQueryResultTableColumnsTest($testData3)) && p('0:title') && e('code');