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();
+ 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(
+
+ );
+ 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();
+ const destructiveButton = screen.getByText('Destructive');
+ // Verify that the specific Tailwind class from cva is applied
+ expect(destructiveButton).toHaveClass('bg-destructive', 'text-white');
+
+ render();
+ const outlineButton = screen.getByText('Outline');
+ expect(outlineButton).toHaveClass('border', 'bg-background');
+ });
});
--
cgit v1.2.3