11import { describe , it , expect } from 'vitest' ;
22import { fireEvent , render } from '@testing-library/svelte' ;
33
4- import FiltersCreationForm from '../../src/lib/components/v2/projects/datasets/FiltersCreationForm .svelte' ;
4+ import AttributesTypesForm from '../../src/lib/components/v2/projects/datasets/AttributesTypesForm .svelte' ;
55import { tick } from 'svelte' ;
66
7- describe ( 'FiltersCreationForm ' , ( ) => {
7+ describe ( 'AttributesTypesForm ' , ( ) => {
88 it ( 'init with existing filters' , async ( ) => {
9- const result = render ( FiltersCreationForm ) ;
9+ const result = render ( AttributesTypesForm ) ;
1010 result . component . init (
1111 {
1212 key1 : 'value1' ,
@@ -29,7 +29,7 @@ describe('FiltersCreationForm', () => {
2929 } ) ;
3030
3131 it ( 'add and remove attribute filter' , async ( ) => {
32- const result = render ( FiltersCreationForm ) ;
32+ const result = render ( AttributesTypesForm ) ;
3333 expect ( result . queryAllByPlaceholderText ( 'Key' ) . length ) . eq ( 0 ) ;
3434 await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add attribute filter' } ) ) ;
3535 expect ( result . queryAllByPlaceholderText ( 'Key' ) . length ) . eq ( 1 ) ;
@@ -38,7 +38,7 @@ describe('FiltersCreationForm', () => {
3838 } ) ;
3939
4040 it ( 'add and remove type filter' , async ( ) => {
41- const result = render ( FiltersCreationForm ) ;
41+ const result = render ( AttributesTypesForm ) ;
4242 expect ( result . queryAllByPlaceholderText ( 'Key' ) . length ) . eq ( 0 ) ;
4343 await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add type filter' } ) ) ;
4444 expect ( result . queryAllByPlaceholderText ( 'Key' ) . length ) . eq ( 1 ) ;
@@ -47,7 +47,7 @@ describe('FiltersCreationForm', () => {
4747 } ) ;
4848
4949 it ( 'validate missing attribute filter key' , async ( ) => {
50- const result = render ( FiltersCreationForm ) ;
50+ const result = render ( AttributesTypesForm ) ;
5151 result . component . init ( { } , { } ) ;
5252 await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add attribute filter' } ) ) ;
5353 expect ( result . component . validateFields ( ) ) . false ;
@@ -56,7 +56,7 @@ describe('FiltersCreationForm', () => {
5656 } ) ;
5757
5858 it ( 'validate missing attribute filter value' , async ( ) => {
59- const result = render ( FiltersCreationForm ) ;
59+ const result = render ( AttributesTypesForm ) ;
6060 result . component . init ( { } , { } ) ;
6161 await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add attribute filter' } ) ) ;
6262 await fireEvent . input ( result . getByPlaceholderText ( 'Key' ) , { target : { value : 'my-key' } } ) ;
@@ -66,7 +66,7 @@ describe('FiltersCreationForm', () => {
6666 } ) ;
6767
6868 it ( 'validate invalid number' , async ( ) => {
69- const result = render ( FiltersCreationForm ) ;
69+ const result = render ( AttributesTypesForm ) ;
7070 await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add attribute filter' } ) ) ;
7171 await fireEvent . input ( result . getByPlaceholderText ( 'Key' ) , { target : { value : 'my-key' } } ) ;
7272 await fireEvent . change ( result . getByLabelText ( 'Type' ) , { target : { value : 'number' } } ) ;
@@ -76,17 +76,47 @@ describe('FiltersCreationForm', () => {
7676 expect ( result . getByText ( 'Invalid number' ) ) . toBeDefined ( ) ;
7777 } ) ;
7878
79- it ( 'switch to boolean attribute' , async ( ) => {
80- const result = render ( FiltersCreationForm ) ;
79+ it ( 'switch to number attribute from string containing a numeric value (number is preserved) ' , async ( ) => {
80+ const result = render ( AttributesTypesForm ) ;
8181 await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add attribute filter' } ) ) ;
8282 await fireEvent . input ( result . getByPlaceholderText ( 'Key' ) , { target : { value : 'my-key' } } ) ;
83+ await fireEvent . input ( result . getByPlaceholderText ( 'Value' ) , { target : { value : '42' } } ) ;
84+ await fireEvent . change ( result . getByLabelText ( 'Type' ) , { target : { value : 'number' } } ) ;
85+ expect ( result . getByPlaceholderText ( 'Value' ) . value ) . eq ( '42' ) ;
86+ expect ( result . component . validateFields ( ) ) . true ;
87+ } ) ;
88+
89+ it ( 'switch to number attribute from string containing text (number is reset)' , async ( ) => {
90+ const result = render ( AttributesTypesForm ) ;
91+ await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add attribute filter' } ) ) ;
92+ await fireEvent . input ( result . getByPlaceholderText ( 'Key' ) , { target : { value : 'my-key' } } ) ;
93+ await fireEvent . input ( result . getByPlaceholderText ( 'Value' ) , { target : { value : 'foo' } } ) ;
94+ await fireEvent . change ( result . getByLabelText ( 'Type' ) , { target : { value : 'number' } } ) ;
95+ expect ( result . getByPlaceholderText ( 'Value' ) . value ) . eq ( '' ) ;
96+ expect ( result . component . validateFields ( ) ) . false ;
97+ } ) ;
98+
99+ it ( 'switch to boolean attribute, default to false' , async ( ) => {
100+ const result = render ( AttributesTypesForm ) ;
101+ await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add attribute filter' } ) ) ;
102+ await fireEvent . input ( result . getByPlaceholderText ( 'Key' ) , { target : { value : 'my-key' } } ) ;
103+ await fireEvent . change ( result . getByLabelText ( 'Type' ) , { target : { value : 'boolean' } } ) ;
104+ expect ( result . getByLabelText ( 'Value' ) . value ) . eq ( 'false' ) ;
105+ expect ( result . component . validateFields ( ) ) . true ;
106+ } ) ;
107+
108+ it ( 'switch to boolean attribute from string equals to "true", true is set' , async ( ) => {
109+ const result = render ( AttributesTypesForm ) ;
110+ await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add attribute filter' } ) ) ;
111+ await fireEvent . input ( result . getByPlaceholderText ( 'Key' ) , { target : { value : 'my-key' } } ) ;
112+ await fireEvent . input ( result . getByPlaceholderText ( 'Value' ) , { target : { value : 'true' } } ) ;
83113 await fireEvent . change ( result . getByLabelText ( 'Type' ) , { target : { value : 'boolean' } } ) ;
84114 expect ( result . getByLabelText ( 'Value' ) . value ) . eq ( 'true' ) ;
85115 expect ( result . component . validateFields ( ) ) . true ;
86116 } ) ;
87117
88118 it ( 'validate duplicated attribute key' , async ( ) => {
89- const result = render ( FiltersCreationForm ) ;
119+ const result = render ( AttributesTypesForm ) ;
90120 await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add attribute filter' } ) ) ;
91121 await fireEvent . input ( result . getByPlaceholderText ( 'Key' ) , { target : { value : 'my-key' } } ) ;
92122 await fireEvent . input ( result . getByPlaceholderText ( 'Value' ) , { target : { value : 'foo' } } ) ;
@@ -103,7 +133,7 @@ describe('FiltersCreationForm', () => {
103133 } ) ;
104134
105135 it ( 'validate missing type filter key' , async ( ) => {
106- const result = render ( FiltersCreationForm ) ;
136+ const result = render ( AttributesTypesForm ) ;
107137 result . component . init ( { } , { } ) ;
108138 await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add type filter' } ) ) ;
109139 expect ( result . component . validateFields ( ) ) . false ;
@@ -112,7 +142,7 @@ describe('FiltersCreationForm', () => {
112142 } ) ;
113143
114144 it ( 'validate duplicated type filter key' , async ( ) => {
115- const result = render ( FiltersCreationForm ) ;
145+ const result = render ( AttributesTypesForm ) ;
116146 result . component . init ( { } , { } ) ;
117147 await fireEvent . click ( result . getByRole ( 'button' , { name : 'Add type filter' } ) ) ;
118148 await fireEvent . input ( result . getByPlaceholderText ( 'Key' ) , { target : { value : 'my-key' } } ) ;
0 commit comments