@@ -17,6 +17,7 @@ import { SimpleErrorReporter } from '@vinejs/vine'
17
17
import { CookieClient } from '@adonisjs/core/http'
18
18
import { fieldContext } from '@vinejs/vine/factories'
19
19
import { AppFactory } from '@adonisjs/core/factories/app'
20
+ import { I18nManagerFactory } from '@adonisjs/i18n/factories'
20
21
import { ApplicationService , EventsList } from '@adonisjs/core/types'
21
22
import { EncryptionFactory } from '@adonisjs/core/factories/encryption'
22
23
import EdgeServiceProvider from '@adonisjs/core/providers/edge_provider'
@@ -973,6 +974,80 @@ test.group('Session | Flash', (group) => {
973
974
email : [ 'Invalid email' ] ,
974
975
username : [ 'Invalid username' , 'Username is required' ] ,
975
976
} ,
977
+ errorsBag : {
978
+ E_VALIDATION_ERROR : 'The form could not be saved. Please check the errors below.' ,
979
+ } ,
980
+ inputErrorsBag : {
981
+ email : [ 'Invalid email' ] ,
982
+ username : [ 'Invalid username' , 'Username is required' ] ,
983
+ } ,
984
+ } ,
985
+ } )
986
+ } )
987
+
988
+ test ( 'translate validation error summary' , async ( { assert } ) => {
989
+ const i18nManager = new I18nManagerFactory ( )
990
+ . merge ( {
991
+ config : {
992
+ loaders : [
993
+ ( ) => {
994
+ return {
995
+ async load ( ) {
996
+ return {
997
+ en : {
998
+ 'errors.E_VALIDATION_ERROR' : '{count} errors prohibited form submission' ,
999
+ } ,
1000
+ }
1001
+ } ,
1002
+ }
1003
+ } ,
1004
+ ] ,
1005
+ } ,
1006
+ } )
1007
+ . create ( )
1008
+
1009
+ await i18nManager . loadTranslations ( )
1010
+
1011
+ let sessionId : string | undefined
1012
+
1013
+ const server = httpServer . create ( async ( req , res ) => {
1014
+ const request = new RequestFactory ( ) . merge ( { req, res, encryption } ) . create ( )
1015
+ const response = new ResponseFactory ( ) . merge ( { req, res, encryption } ) . create ( )
1016
+ const ctx = new HttpContextFactory ( ) . merge ( { request, response } ) . create ( )
1017
+ ctx . i18n = i18nManager . locale ( 'en' )
1018
+
1019
+ const session = new Session ( sessionConfig , cookieDriver , emitter , ctx )
1020
+ await session . initiate ( false )
1021
+
1022
+ const errorReporter = new SimpleErrorReporter ( )
1023
+ errorReporter . report ( 'Invalid username' , 'alpha' , fieldContext . create ( 'username' , '' ) , { } )
1024
+ errorReporter . report (
1025
+ 'Username is required' ,
1026
+ 'required' ,
1027
+ fieldContext . create ( 'username' , '' ) ,
1028
+ { }
1029
+ )
1030
+ errorReporter . report ( 'Invalid email' , 'email' , fieldContext . create ( 'email' , '' ) , { } )
1031
+
1032
+ session . flashValidationErrors ( errorReporter . createError ( ) )
1033
+ sessionId = session . sessionId
1034
+
1035
+ await session . commit ( )
1036
+ response . finish ( )
1037
+ } )
1038
+
1039
+ const { headers } = await supertest ( server ) . get ( '/' )
1040
+ const cookies = setCookieParser . parse ( headers [ 'set-cookie' ] , { map : true } )
1041
+
1042
+ assert . deepEqual ( cookieClient . decrypt ( sessionId ! , cookies [ sessionId ! ] . value ) , {
1043
+ __flash__ : {
1044
+ errors : {
1045
+ email : [ 'Invalid email' ] ,
1046
+ username : [ 'Invalid username' , 'Username is required' ] ,
1047
+ } ,
1048
+ errorsBag : {
1049
+ E_VALIDATION_ERROR : '3 errors prohibited form submission' ,
1050
+ } ,
976
1051
inputErrorsBag : {
977
1052
email : [ 'Invalid email' ] ,
978
1053
username : [ 'Invalid username' , 'Username is required' ] ,
@@ -1021,6 +1096,9 @@ test.group('Session | Flash', (group) => {
1021
1096
errors : {
1022
1097
name : [ 'Invalid name' ] ,
1023
1098
} ,
1099
+ errorsBag : {
1100
+ E_VALIDATION_ERROR : 'The form could not be saved. Please check the errors below.' ,
1101
+ } ,
1024
1102
inputErrorsBag : {
1025
1103
name : [ 'Invalid name' ] ,
1026
1104
} ,
0 commit comments