u-charts.test.ts 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /**
  2. * u-charts 库基础测试
  3. * Story 016.001 - 验证 u-charts 库可以正确导入
  4. *
  5. * 注意:由于原始 u-charts 库中存在一些变量重复声明的问题(非严格模式),
  6. * 在 Jest 严格环境下会报错。本测试仅验证基础导出功能。
  7. */
  8. // 简化测试 - 只验证配置导出
  9. describe('u-charts 库基础测试', () => {
  10. describe('配置导出验证', () => {
  11. it('应该正确导出配置对象', () => {
  12. const { config } = require('../src/lib/u-charts');
  13. expect(config).toBeDefined();
  14. expect(config.version).toBe('v2.5.0-20230101');
  15. expect(config.color).toBeDefined();
  16. expect(Array.isArray(config.color)).toBe(true);
  17. });
  18. it('配置应该包含必要的默认值', () => {
  19. const { config } = require('../src/lib/u-charts');
  20. expect(config.yAxisWidth).toBe(15);
  21. expect(config.xAxisHeight).toBe(22);
  22. expect(config.fontSize).toBe(13);
  23. expect(config.fontColor).toBe('#666666');
  24. });
  25. });
  26. describe('工具函数导出验证', () => {
  27. it('应该正确导出 util 工具对象', () => {
  28. const { util } = require('../src/lib/u-charts');
  29. expect(util).toBeDefined();
  30. expect(typeof util.toFixed).toBe('function');
  31. expect(typeof util.isFloat).toBe('function');
  32. });
  33. it('应该正确导出 assign 函数', () => {
  34. const { assign } = require('../src/lib/u-charts');
  35. expect(assign).toBeDefined();
  36. expect(typeof assign).toBe('function');
  37. });
  38. it('util.toFixed 应该正确格式化数字', () => {
  39. const { util } = require('../src/lib/u-charts');
  40. expect(util.toFixed(3.14159, 2)).toBe('3.14');
  41. expect(util.toFixed(10, 2)).toBe(10);
  42. });
  43. it('util.isFloat 应该正确判断浮点数', () => {
  44. const { util } = require('../src/lib/u-charts');
  45. expect(util.isFloat(3.14)).toBe(true);
  46. expect(util.isFloat(10)).toBe(false);
  47. });
  48. });
  49. describe('辅助函数导出验证', () => {
  50. it('应该正确导出辅助函数', () => {
  51. const uChartsModule = require('../src/lib/u-charts');
  52. expect(uChartsModule.hexToRgb).toBeDefined();
  53. expect(uChartsModule.findRange).toBeDefined();
  54. expect(uChartsModule.measureText).toBeDefined();
  55. expect(uChartsModule.dataCombine).toBeDefined();
  56. });
  57. it('hexToRgb 应该正确转换颜色', () => {
  58. const { hexToRgb } = require('../src/lib/u-charts');
  59. expect(hexToRgb('#FF0000', 1)).toBe('rgba(255,0,0,1)');
  60. expect(hexToRgb('#00FF00', 0.5)).toBe('rgba(0,255,0,0.5)');
  61. });
  62. it('findRange 应该正确查找范围', () => {
  63. const { findRange } = require('../src/lib/u-charts');
  64. expect(findRange(123, 'upper', 10)).toBe(130);
  65. expect(findRange(98, 'lower', 10)).toBe(90);
  66. });
  67. it('assign 应该正确合并对象', () => {
  68. const { assign } = require('../src/lib/u-charts');
  69. const target = { a: 1 };
  70. const source = { b: 2 };
  71. const result = assign(target, source);
  72. expect(result).toEqual({ a: 1, b: 2 });
  73. });
  74. });
  75. describe('类导出验证', () => {
  76. it('应该正确导出 uChartsEvent 类', () => {
  77. const { uChartsEvent } = require('../src/lib/u-charts');
  78. expect(uChartsEvent).toBeDefined();
  79. expect(typeof uChartsEvent).toBe('function');
  80. });
  81. it('应该能够实例化 uChartsEvent', () => {
  82. const { uChartsEvent } = require('../src/lib/u-charts');
  83. const event = new uChartsEvent();
  84. expect(event).toBeDefined();
  85. expect(event.events).toBeDefined();
  86. expect(event.events).toEqual({});
  87. });
  88. it('uChartsEvent 应该支持添加和触发事件监听器', () => {
  89. const { uChartsEvent } = require('../src/lib/u-charts');
  90. const event = new uChartsEvent();
  91. const mockListener = jest.fn();
  92. event.addEventListener('test', mockListener);
  93. expect(event.events.test).toHaveLength(1);
  94. event.trigger('test', 'arg1', 'arg2');
  95. expect(mockListener).toHaveBeenCalledWith('arg1', 'arg2');
  96. });
  97. it('应该正确导出 uCharts 类', () => {
  98. const { uCharts } = require('../src/lib/u-charts');
  99. expect(uCharts).toBeDefined();
  100. expect(typeof uCharts).toBe('function');
  101. });
  102. });
  103. describe('主入口导出测试', () => {
  104. it('应该从主入口正确导出所有内容', () => {
  105. const index = require('../src/index');
  106. expect(index.uCharts).toBeDefined();
  107. expect(index.uChartsEvent).toBeDefined();
  108. expect(index.config).toBeDefined();
  109. expect(index.util).toBeDefined();
  110. });
  111. });
  112. });