@edux-design/buttons 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @edux-design/buttons
2
2
 
3
+ ## 0.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - test run
8
+ - Updated dependencies [6693315]
9
+ - @edux-design/utils@0.0.2
10
+
3
11
  ## 0.0.1
4
12
 
5
13
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edux-design/buttons",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "private": false,
5
5
  "sideEffects": [
6
6
  "**/*.css"
@@ -0,0 +1,79 @@
1
+ import React from "react";
2
+ import { render, screen } from "@testing-library/react";
3
+ import { Button } from "./Button";
4
+
5
+ describe("Button", () => {
6
+ it("renders children", () => {
7
+ render(<Button>Click me</Button>);
8
+ expect(screen.getByRole("button")).toHaveTextContent("Click me");
9
+ });
10
+
11
+ it("applies medium size by default", () => {
12
+ render(<Button>Default size</Button>);
13
+ const btn = screen.getByRole("button");
14
+ expect(btn.className).toMatch(/h-\[44px\]/); // medium height
15
+ });
16
+
17
+ it("applies small size when size='small'", () => {
18
+ render(<Button size="small">Small</Button>);
19
+ expect(screen.getByRole("button").className).toMatch(/h-\[36px\]/);
20
+ });
21
+
22
+ it("applies large size when size='large'", () => {
23
+ render(<Button size="large">Large</Button>);
24
+ expect(screen.getByRole("button").className).toMatch(/h-\[56px\]/);
25
+ });
26
+
27
+ it("uses stretched width when isStretched=true", () => {
28
+ render(<Button isStretched>Stretch</Button>);
29
+ expect(screen.getByRole("button").className).toMatch(/w-full/);
30
+ });
31
+
32
+ it("applies primary variant by default", () => {
33
+ render(<Button>Primary</Button>);
34
+ expect(screen.getByRole("button").className).toMatch(/bg-bg-primary-base/);
35
+ });
36
+
37
+ it("applies secondary variant when isSecondary=true", () => {
38
+ render(<Button isSecondary>Secondary</Button>);
39
+ expect(screen.getByRole("button").className).toMatch(/bg-bg-base/);
40
+ });
41
+
42
+ it("applies bare variant when isBare=true", () => {
43
+ render(<Button isBare>Bare</Button>);
44
+ expect(screen.getByRole("button").className).toMatch(/bg-bg-base/);
45
+ expect(screen.getByRole("button").className).toMatch(
46
+ /text-fg-primary-emphasis/
47
+ );
48
+ });
49
+
50
+ it("applies danger variant when isDanger=true", () => {
51
+ render(<Button isDanger>Danger</Button>);
52
+ expect(screen.getByRole("button").className).toMatch(/bg-bg-danger-base/);
53
+ });
54
+
55
+ it("applies disabled variant when disabled=true", () => {
56
+ render(<Button disabled>Disabled</Button>);
57
+ const btn = screen.getByRole("button");
58
+ expect(btn).toBeDisabled();
59
+ expect(btn).toHaveAttribute("aria-disabled", "true");
60
+ expect(btn.className).toMatch(/bg-bg-inactive/);
61
+ });
62
+
63
+ it("logs a warning in dev mode if multiple variants are passed", () => {
64
+ const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {});
65
+ process.env.NODE_ENV = "development";
66
+
67
+ render(
68
+ <Button isSecondary isDanger>
69
+ Conflict
70
+ </Button>
71
+ );
72
+
73
+ expect(warnSpy).toHaveBeenCalledWith(
74
+ "[Button]: Multiple variant props passed. Using the highest priority only."
75
+ );
76
+
77
+ warnSpy.mockRestore();
78
+ });
79
+ });