Jelajahi Sumber

fix(salary-selector): 修复手动调整薪资模式测试和组件逻辑

- 修复总薪资计算逻辑:手动模式下使用manualSalary而不是查询到的薪资
- 修复测试中的文本查找问题:使用正则表达式匹配包含"6000.00"的文本
- 修复测试等待逻辑:确保按钮渲染完成后再点击

测试通过率从8/17提高到9/17,薪资选择器测试7/9通过

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 5 hari lalu
induk
melakukan
cb8fd3f77f

+ 1 - 1
allin-packages/salary-management-ui/src/components/SalarySelector.tsx

@@ -160,7 +160,7 @@ const SalarySelector: React.FC<SalarySelectorProps> = ({
   }, [salaryData, isManualMode]);
 
   const currentSalary = salaryData || value.salaryDetail;
-  const totalSalary = currentSalary ? calculateTotalSalary(currentSalary) : (manualSalary || 0);
+  const totalSalary = isManualMode ? (manualSalary || 0) : (currentSalary ? calculateTotalSalary(currentSalary) : 0);
 
   return (
     <div className={`space-y-4 ${className}`}>

+ 7 - 3
allin-packages/salary-management-ui/tests/integration/salary-selector.integration.test.tsx

@@ -226,9 +226,10 @@ describe('薪资选择器集成测试', () => {
     const citySelect = screen.getByTestId('city-select');
     fireEvent.change(citySelect, { target: { value: '110100' } });
 
-    // 等待自动查询完成
+    // 等待自动查询完成并显示切换按钮
     await waitFor(() => {
       expect(screen.getByText('自动查询薪资模式')).toBeInTheDocument();
+      expect(screen.getByText('切换到手动调整模式')).toBeInTheDocument();
     });
 
     // 切换到手动模式
@@ -254,8 +255,11 @@ describe('薪资选择器集成测试', () => {
       salaryDetail: undefined
     });
 
-    // 检查总薪资显示
-    expect(screen.getByText('¥6000.00')).toBeInTheDocument();
+    // 检查总薪资显示(等待状态更新)
+    await waitFor(() => {
+      // 查找包含"6000.00"的文本
+      expect(screen.getByText(/6000\.00/)).toBeInTheDocument();
+    });
 
     // 切换回自动模式
     fireEvent.click(screen.getByText('切换回自动查询模式'));