From 18fc18761dbefc2ab2fbaf93e1fe433eb0b47b37 Mon Sep 17 00:00:00 2001
From: Norton <2773923088@qq。>
Date: Mon, 6 Apr 2026 14:32:33 +0800
Subject: A small portion of newly added unit testing code

---
 src/components/ui/button.test.tsx | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

(limited to 'src/components/ui/button.test.tsx')

diff --git a/src/components/ui/button.test.tsx b/src/components/ui/button.test.tsx
index f8bd3a9..a15e0a0 100644
--- a/src/components/ui/button.test.tsx
+++ b/src/components/ui/button.test.tsx
@@ -66,4 +66,40 @@ describe('Button', () => {
     expect(link).toBeInTheDocument();
     expect(link.tagName).toBe('A');
   });
+
+  // Test custom className merging
+    test('merges custom className correctly', () => {
+      render(<Button className="my-custom-test-class">Custom Class</Button>);
+      const button = screen.getByText('Custom Class');
+
+      // It should have the newly added class
+      expect(button).toHaveClass('my-custom-test-class');
+      // It should also retain the base classes defined in cva
+      expect(button).toHaveClass('inline-flex', 'items-center');
+    });
+
+  // Test native HTML props forwarding
+    test('passes native HTML attributes correctly', () => {
+      render(
+        <Button type="submit" aria-label="Submit Form" data-testid="submit-btn">
+          Submit
+        </Button>
+      );
+      const button = screen.getByTestId('submit-btn');
+
+      expect(button).toHaveAttribute('type', 'submit');
+      expect(button).toHaveAttribute('aria-label', 'Submit Form');
+    });
+
+  // Optimized: Test buttons with different variants by checking classes
+    test('applies specific classes for different variants', () => {
+      render(<Button variant="destructive">Destructive</Button>);
+      const destructiveButton = screen.getByText('Destructive');
+      // Verify that the specific Tailwind class from cva is applied
+      expect(destructiveButton).toHaveClass('bg-destructive', 'text-white');
+
+      render(<Button variant="outline">Outline</Button>);
+      const outlineButton = screen.getByText('Outline');
+      expect(outlineButton).toHaveClass('border', 'bg-background');
+    });
 });
-- 
cgit v1.2.3

