@@ -37,7 +37,7 @@ describe('From a fixed app', () => {
3737 cy . dataCy ( 'input-title' )
3838 . type ( 'A' )
3939 cy . visit ( '/authors' )
40- cy . dataCy ( 'btn-add-author ' )
40+ cy . dataCy ( 'btn-add-person ' )
4141 . click ( )
4242 cy . visit ( '/finish' )
4343 } )
@@ -74,20 +74,20 @@ describe('From a fixed app', () => {
7474 cy . checkThatAppValidityIs ( false )
7575 cy . dataCy ( 'banner-error-messages' )
7676 . should ( 'contain.text' , 'Add at least one author' )
77- cy . dataCy ( 'btn-add-author ' )
77+ cy . dataCy ( 'btn-add-person ' )
7878 . click ( )
7979 cy . checkThatAppValidityIs ( true )
8080 } )
8181 it ( 'should validate duplicate authors' , ( ) => {
8282 cy . dataCy ( 'btn-remove' )
8383 . click ( )
84- cy . dataCy ( 'btn-add-author ' )
84+ cy . dataCy ( 'btn-add-person ' )
8585 . click ( )
8686 cy . dataCy ( 'input-given-names' )
8787 . type ( 'A' )
8888 cy . dataCy ( 'btn-done' )
8989 . click ( )
90- cy . dataCy ( 'btn-add-author ' )
90+ cy . dataCy ( 'btn-add-person ' )
9191 . click ( )
9292 cy . dataCy ( 'input-given-names' )
9393 . type ( 'A' )
@@ -104,10 +104,34 @@ describe('From a fixed app', () => {
104104 . click ( )
105105 cy . checkThatAppValidityIs ( true )
106106 } )
107- it ( 'should validate authors\' fields' , ( ) => {
107+ it ( 'should validate person and entity being equal' , ( ) => {
108+ cy . dataCy ( 'input-email' )
109+ . type ( 'some@email.com' )
110+ cy . dataCy ( 'input-orcid' )
111+ . type ( '1234123412341234' )
112+ cy . dataCy ( 'btn-done' )
113+ . click ( )
114+ cy . dataCy ( 'btn-add-entity' )
115+ . click ( )
116+ cy . dataCy ( 'input-email' )
117+ . type ( 'some@email.com' )
118+ cy . dataCy ( 'input-orcid' )
119+ . type ( '1234123412341234' )
120+ cy . dataCy ( 'btn-done' )
121+ . click ( )
122+
123+ cy . dataCy ( 'card-author0' )
124+ . should ( 'have.class' , 'red-border' )
125+ cy . dataCy ( 'card-author1' )
126+ . should ( 'have.class' , 'red-border' )
127+ cy . checkThatAppValidityIs ( false )
128+ cy . dataCy ( 'banner-error-messages' )
129+ . should ( 'contain.text' , 'There are duplicate authors' )
130+ } )
131+ it ( 'should validate person\'s fields' , ( ) => {
108132 cy . dataCy ( 'btn-remove' )
109133 . click ( )
110- cy . dataCy ( 'btn-add-author ' )
134+ cy . dataCy ( 'btn-add-person ' )
111135 . click ( )
112136 cy . dataCy ( 'input-email' )
113137 . type ( 'a' )
@@ -128,6 +152,65 @@ describe('From a fixed app', () => {
128152 . should ( 'not.have.class' , 'q-field--error' )
129153 cy . checkThatAppValidityIs ( true )
130154 } )
155+ it ( 'should validate entity\'s fields' , ( ) => {
156+ cy . dataCy ( 'btn-remove' )
157+ . click ( )
158+ cy . dataCy ( 'btn-add-entity' )
159+ . click ( )
160+ cy . dataCy ( 'input-name' )
161+ . type ( 'Entity name' )
162+
163+ const fields = [
164+ { name : 'date-start' , bad : '2021-01-0' , fix : '1' , checkInput : false } ,
165+ { name : 'date-end' , bad : '2021-01-0' , fix : '1' , checkInput : false } ,
166+ { name : 'email' , bad : 'a' , fix : '@a.com' , checkInput : true } ,
167+ { name : 'orcid' , bad : '1' , fix : '234123412341234' , checkInput : true }
168+ ]
169+ for ( const field of fields ) {
170+ cy . dataCy ( `input-${ field . name } ` )
171+ . type ( field . bad )
172+ cy . checkThatInputValidityIs ( false , field . name )
173+ cy . checkThatAppValidityIs ( false )
174+ cy . dataCy ( `input-${ field . name } ` )
175+ . type ( field . fix )
176+ if ( field . checkInput ) {
177+ cy . checkThatInputValidityIs ( true , field . name )
178+ } else {
179+ cy . dataCy ( `input-${ field . name } ` )
180+ . parents ( '.q-field' )
181+ . should ( 'not.have.class' , 'q-field--error' )
182+ }
183+ cy . checkThatAppValidityIs ( true )
184+ }
185+ } )
186+ it ( 'should error when it is inferrable that it is an entity without name' , ( ) => {
187+ cy . dataCy ( 'btn-remove' )
188+ . click ( )
189+ cy . dataCy ( 'btn-add-entity' )
190+ . click ( )
191+
192+ const fields = [
193+ { name : 'date-start' , value : '2021-01-01' } ,
194+ { name : 'date-end' , value : '2021-01-01' } ,
195+ { name : 'location' , value : 'Here' }
196+ ]
197+ for ( const field of fields ) {
198+ cy . dataCy ( `input-${ field . name } ` )
199+ . type ( field . value )
200+
201+ cy . checkThatInputValidityIs ( false , 'name' )
202+ cy . checkThatAppValidityIs ( false )
203+ cy . dataCy ( 'input-name' )
204+ . type ( 'Fixed' )
205+ cy . checkThatInputValidityIs ( true , 'name' )
206+ cy . checkThatAppValidityIs ( true )
207+
208+ cy . dataCy ( 'input-name' )
209+ . clear ( )
210+ cy . dataCy ( `input-${ field . name } ` )
211+ . clear ( )
212+ }
213+ } )
131214 } )
132215
133216 describe ( 'On screen Identifiers' , ( ) => {
0 commit comments