@@ -285,4 +285,112 @@ describe('formattingMiddleware', function () {
285285
286286
287287 } ) ;
288+
289+ describe ( 'function with language parameter' , function ( ) {
290+ beforeEach ( function ( ) {
291+ res . statusCode = 400 ;
292+ } ) ;
293+
294+ it ( 'formats message in English when language is "en"' , function ( ) {
295+ testMiddleware = formattingMiddleware ( __dirname + '/catalog-index.json' , null , 'en' ) ;
296+ var nextCalled = false ;
297+ testMiddleware ( req , res , function ( ) {
298+ nextCalled = true ;
299+ } ) ;
300+ assert . isTrue ( nextCalled ) ;
301+ var testError = new CatalogedError ( '0001' , 'exampleLocal' , 'Example error' , { } , [ ] ) ;
302+ res . send ( testError ) ;
303+ assert ( originalSendSpy . calledOnce , "Send should have been called once" ) ;
304+ var spyArg = originalSendSpy . getCall ( 0 ) . args [ 0 ] ;
305+ expect ( spyArg . message ) . to . equal ( 'This is an example message' ) ;
306+ } ) ;
307+
308+ it ( 'formats message in French when language is "fr"' , function ( ) {
309+ testMiddleware = formattingMiddleware ( __dirname + '/catalog-index.json' , null , 'fr' ) ;
310+ var nextCalled = false ;
311+ testMiddleware ( req , res , function ( ) {
312+ nextCalled = true ;
313+ } ) ;
314+ assert . isTrue ( nextCalled ) ;
315+ var testError = new CatalogedError ( '0001' , 'exampleLocal' , 'Example error' , { } , [ ] ) ;
316+ res . send ( testError ) ;
317+ assert ( originalSendSpy . calledOnce , "Send should have been called once" ) ;
318+ var spyArg = originalSendSpy . getCall ( 0 ) . args [ 0 ] ;
319+ expect ( spyArg . message ) . to . equal ( 'This is an example message for french catalog' ) ;
320+ } ) ;
321+
322+ it ( 'formats message in German when language is "de"' , function ( ) {
323+ testMiddleware = formattingMiddleware ( __dirname + '/catalog-index.json' , null , 'de' ) ;
324+ var nextCalled = false ;
325+ testMiddleware ( req , res , function ( ) {
326+ nextCalled = true ;
327+ } ) ;
328+ assert . isTrue ( nextCalled ) ;
329+ var testError = new CatalogedError ( '0002' , 'exampleLocal' , 'Example error' , { id : 'test-id' } , [ ] ) ;
330+ res . send ( testError ) ;
331+ assert ( originalSendSpy . calledOnce , "Send should have been called once" ) ;
332+ var spyArg = originalSendSpy . getCall ( 0 ) . args [ 0 ] ;
333+ expect ( spyArg . message ) . to . equal ( 'This is an example message with a special insert test-id, in german locale' ) ;
334+ } ) ;
335+
336+ it ( 'formats message in Japanese when language is "jp"' , function ( ) {
337+ testMiddleware = formattingMiddleware ( __dirname + '/catalog-index.json' , null , 'jp' ) ;
338+ var nextCalled = false ;
339+ testMiddleware ( req , res , function ( ) {
340+ nextCalled = true ;
341+ } ) ;
342+ assert . isTrue ( nextCalled ) ;
343+ var testError = new CatalogedError ( '0001' , 'exampleLocal' , 'Example error' , { } , [ ] ) ;
344+ res . send ( testError ) ;
345+ assert ( originalSendSpy . calledOnce , "Send should have been called once" ) ;
346+ var spyArg = originalSendSpy . getCall ( 0 ) . args [ 0 ] ;
347+ expect ( spyArg . message ) . to . equal ( 'This is an example message for japanese catalog' ) ;
348+ } ) ;
349+
350+ it ( 'falls back to English when language is not available' , function ( ) {
351+ testMiddleware = formattingMiddleware ( __dirname + '/catalog-index.json' , null , 'es' ) ;
352+ var nextCalled = false ;
353+ testMiddleware ( req , res , function ( ) {
354+ nextCalled = true ;
355+ } ) ;
356+ assert . isTrue ( nextCalled ) ;
357+ var testError = new CatalogedError ( '0001' , 'exampleLocal' , 'Example error' , { } , [ ] ) ;
358+ res . send ( testError ) ;
359+ assert ( originalSendSpy . calledOnce , "Send should have been called once" ) ;
360+ var spyArg = originalSendSpy . getCall ( 0 ) . args [ 0 ] ;
361+ expect ( spyArg . message ) . to . equal ( 'This is an example message' ) ;
362+ } ) ;
363+
364+ it ( 'falls back to English for message not in specified language' , function ( ) {
365+ testMiddleware = formattingMiddleware ( __dirname + '/catalog-index.json' , null , 'de' ) ;
366+ var nextCalled = false ;
367+ testMiddleware ( req , res , function ( ) {
368+ nextCalled = true ;
369+ } ) ;
370+ assert . isTrue ( nextCalled ) ;
371+ var testError = new CatalogedError ( '0004' , 'exampleLocal' , 'Example error' , { } , [ ] ) ;
372+ res . send ( testError ) ;
373+ assert ( originalSendSpy . calledOnce , "Send should have been called once" ) ;
374+ var spyArg = originalSendSpy . getCall ( 0 ) . args [ 0 ] ;
375+ expect ( spyArg . message ) . to . equal ( 'This is a message only in the default catalog' ) ;
376+ } ) ;
377+
378+ it ( 'works with pre-processor and language parameter' , function ( ) {
379+ var preProcessorStub = sinon . stub ( ) . callsFake ( function ( msg ) {
380+ var newMsg = JSON . parse ( JSON . stringify ( msg ) ) ;
381+ newMsg . namedInserts . id = 'transformed-with-lang' ;
382+ return newMsg ;
383+ } ) ;
384+ testMiddleware = formattingMiddleware ( __dirname + '/catalog-index.json' , preProcessorStub , 'de' ) ;
385+ var nextStub = sinon . stub ( ) ;
386+ testMiddleware ( req , res , nextStub ) ;
387+ expect ( nextStub ) . to . have . callCount ( 1 ) ;
388+ var testError = new CatalogedError ( '0002' , 'exampleLocal' , 'Example error' , { id : 'original-id' } , [ ] ) ;
389+ res . send ( testError ) ;
390+ expect ( preProcessorStub ) . to . have . callCount ( 1 ) ;
391+ expect ( originalSendSpy ) . to . have . callCount ( 1 ) ;
392+ var sentFormattedMessage = originalSendSpy . getCall ( 0 ) . args [ 0 ] ;
393+ expect ( sentFormattedMessage . message ) . to . equal ( 'This is an example message with a special insert transformed-with-lang, in german locale' ) ;
394+ } ) ;
395+ } ) ;
288396} ) ;
0 commit comments