@@ -4,6 +4,7 @@ import { DynamicQualdropModel } from '../ds-dynamic-form-ui/models/ds-dynamic-qu
44import { DynamicOneboxModel } from '../ds-dynamic-form-ui/models/onebox/dynamic-onebox.model' ;
55import { DsDynamicInputModel } from '../ds-dynamic-form-ui/models/ds-dynamic-input.model' ;
66import { ParserOptions } from './parser-options' ;
7+ import { FieldParser } from './field-parser' ;
78
89describe ( 'OneboxFieldParser test suite' , ( ) => {
910 let field1 : FormFieldModel ;
@@ -101,4 +102,51 @@ describe('OneboxFieldParser test suite', () => {
101102 expect ( fieldModel instanceof DynamicOneboxModel ) . toBe ( true ) ;
102103 } ) ;
103104
105+ describe ( 'should handle a DynamicOneboxModel with regex' , ( ) => {
106+ let regexField : FormFieldModel ;
107+ let parser : FieldParser ;
108+ let fieldModel : any ;
109+
110+ beforeEach ( ( ) => {
111+ regexField = {
112+ input : { type : 'onebox' , regex : '/[a-z]+/mi' } ,
113+ label : 'Title' ,
114+ mandatory : 'false' ,
115+ repeatable : false ,
116+ hints : 'Enter the name of the events, if any.' ,
117+ selectableMetadata : [
118+ {
119+ metadata : 'title' ,
120+ controlledVocabulary : 'EVENTAuthority' ,
121+ closed : false
122+ }
123+ ] ,
124+ languageCodes : [ ]
125+ } as FormFieldModel ;
126+
127+ parser = new OneboxFieldParser ( submissionId , regexField , initFormValues , parserOptions ) ;
128+ fieldModel = parser . parse ( ) ;
129+ } ) ;
130+
131+ it ( 'should have initialized pattern validator' , ( ) => {
132+ expect ( fieldModel instanceof DynamicOneboxModel ) . toBe ( true ) ;
133+ expect ( fieldModel . validators ) . not . toBeNull ( ) ;
134+ expect ( fieldModel . validators . pattern ) . not . toBeNull ( ) ;
135+ } ) ;
136+
137+ it ( 'should mark valid not case sensitive basic characters regex in multiline' , ( ) => {
138+ let pattern = fieldModel . validators . pattern as RegExp ;
139+ expect ( pattern . test ( 'HELLO' ) ) . toBe ( true ) ;
140+ expect ( pattern . test ( 'hello' ) ) . toBe ( true ) ;
141+ expect ( pattern . test ( 'hello\nhello\nhello' ) ) . toBe ( true ) ;
142+ expect ( pattern . test ( 'HeLlO' ) ) . toBe ( true ) ;
143+ } ) ;
144+
145+ it ( 'should be invalid for non-basic alphabet characters' , ( ) => {
146+ let pattern = fieldModel . validators . pattern as RegExp ;
147+ expect ( pattern . test ( '12345' ) ) . toBe ( false ) ;
148+ expect ( pattern . test ( 'àèìòùáéíóú' ) ) . toBe ( false ) ;
149+ } ) ;
150+ } ) ;
151+
104152} ) ;
0 commit comments