2
2
import React from "react"
3
3
import { describe , it , expect , vi } from "vitest"
4
4
import { render , screen , fireEvent } from "@testing-library/react"
5
- import {
6
- FormattedTextField ,
7
- integerFormatter ,
8
- currencyFormatter ,
9
- unlimitedIntegerFormatter ,
10
- } from "../FormattedTextField"
5
+ import { FormattedTextField , unlimitedIntegerFormatter } from "../FormattedTextField"
11
6
12
7
// Mock VSCodeTextField to render as regular HTML input for testing
13
8
vi . mock ( "@vscode/webview-ui-toolkit/react" , ( ) => ( {
@@ -23,56 +18,6 @@ vi.mock("@vscode/webview-ui-toolkit/react", () => ({
23
18
} ) )
24
19
25
20
describe ( "FormattedTextField" , ( ) => {
26
- describe ( "integerFormatter" , ( ) => {
27
- it ( "should parse valid integers" , ( ) => {
28
- expect ( integerFormatter . parse ( "123" ) ) . toBe ( 123 )
29
- expect ( integerFormatter . parse ( "1" ) ) . toBe ( 1 )
30
- } )
31
-
32
- it ( "should return undefined for invalid inputs" , ( ) => {
33
- expect ( integerFormatter . parse ( "" ) ) . toBeUndefined ( )
34
- expect ( integerFormatter . parse ( "0" ) ) . toBeUndefined ( )
35
- expect ( integerFormatter . parse ( "-5" ) ) . toBeUndefined ( )
36
- expect ( integerFormatter . parse ( "abc" ) ) . toBeUndefined ( )
37
- } )
38
-
39
- it ( "should format numbers correctly" , ( ) => {
40
- expect ( integerFormatter . format ( 123 ) ) . toBe ( "123" )
41
- expect ( integerFormatter . format ( undefined ) ) . toBe ( "" )
42
- } )
43
-
44
- it ( "should filter non-numeric characters" , ( ) => {
45
- expect ( integerFormatter . filter ?.( "123abc" ) ) . toBe ( "123" )
46
- expect ( integerFormatter . filter ?.( "a1b2c3" ) ) . toBe ( "123" )
47
- } )
48
- } )
49
-
50
- describe ( "currencyFormatter" , ( ) => {
51
- it ( "should parse valid currency values" , ( ) => {
52
- expect ( currencyFormatter . parse ( "123.45" ) ) . toBe ( 123.45 )
53
- expect ( currencyFormatter . parse ( "$123.45" ) ) . toBe ( 123.45 )
54
- expect ( currencyFormatter . parse ( "1,234.56" ) ) . toBe ( 1234.56 )
55
- expect ( currencyFormatter . parse ( "0" ) ) . toBe ( 0 )
56
- } )
57
-
58
- it ( "should return undefined for invalid inputs" , ( ) => {
59
- expect ( currencyFormatter . parse ( "" ) ) . toBeUndefined ( )
60
- expect ( currencyFormatter . parse ( "abc" ) ) . toBeUndefined ( )
61
- expect ( currencyFormatter . parse ( "-5" ) ) . toBeUndefined ( )
62
- } )
63
-
64
- it ( "should format currency correctly" , ( ) => {
65
- expect ( currencyFormatter . format ( 123.45 ) ) . toBe ( "123.45" )
66
- expect ( currencyFormatter . format ( 123 ) ) . toBe ( "123.00" )
67
- expect ( currencyFormatter . format ( undefined ) ) . toBe ( "" )
68
- } )
69
-
70
- it ( "should filter invalid currency characters" , ( ) => {
71
- expect ( currencyFormatter . filter ?.( "$123.45abc" ) ) . toBe ( "$123.45" )
72
- expect ( currencyFormatter . filter ?.( "1,234.56xyz" ) ) . toBe ( "1,234.56" )
73
- } )
74
- } )
75
-
76
21
describe ( "unlimitedIntegerFormatter" , ( ) => {
77
22
it ( "should parse valid integers" , ( ) => {
78
23
expect ( unlimitedIntegerFormatter . parse ( "123" ) ) . toBe ( 123 )
@@ -95,6 +40,11 @@ describe("FormattedTextField", () => {
95
40
expect ( unlimitedIntegerFormatter . format ( undefined ) ) . toBe ( "" )
96
41
expect ( unlimitedIntegerFormatter . format ( Infinity ) ) . toBe ( "" )
97
42
} )
43
+
44
+ it ( "should filter non-numeric characters" , ( ) => {
45
+ expect ( unlimitedIntegerFormatter . filter ?.( "123abc" ) ) . toBe ( "123" )
46
+ expect ( unlimitedIntegerFormatter . filter ?.( "a1b2c3" ) ) . toBe ( "123" )
47
+ } )
98
48
} )
99
49
100
50
describe ( "FormattedTextField component" , ( ) => {
@@ -104,7 +54,7 @@ describe("FormattedTextField", () => {
104
54
< FormattedTextField
105
55
value = { 123 }
106
56
onValueChange = { mockOnChange }
107
- formatter = { integerFormatter }
57
+ formatter = { unlimitedIntegerFormatter }
108
58
data-testid = "test-input"
109
59
/> ,
110
60
)
@@ -119,7 +69,7 @@ describe("FormattedTextField", () => {
119
69
< FormattedTextField
120
70
value = { 123 }
121
71
onValueChange = { mockOnChange }
122
- formatter = { integerFormatter }
72
+ formatter = { unlimitedIntegerFormatter }
123
73
data-testid = "test-input"
124
74
/> ,
125
75
)
@@ -136,7 +86,7 @@ describe("FormattedTextField", () => {
136
86
< FormattedTextField
137
87
value = { undefined }
138
88
onValueChange = { mockOnChange }
139
- formatter = { integerFormatter }
89
+ formatter = { unlimitedIntegerFormatter }
140
90
data-testid = "test-input"
141
91
/> ,
142
92
)
@@ -155,7 +105,7 @@ describe("FormattedTextField", () => {
155
105
< FormattedTextField
156
106
value = { undefined }
157
107
onValueChange = { mockOnChange }
158
- formatter = { integerFormatter }
108
+ formatter = { unlimitedIntegerFormatter }
159
109
data-testid = "test-input"
160
110
/> ,
161
111
)
0 commit comments