@@ -10,10 +10,29 @@ describe('minErr', function() {
1010 testError = minErr ( 'test' ) ;
1111
1212 var originalObjectMaxDepthInErrorMessage = minErrConfig . objectMaxDepth ;
13+ var originalUrlMaxLengthInErrorMessage = minErrConfig . urlMaxLength ;
1314 afterEach ( function ( ) {
1415 minErrConfig . objectMaxDepth = originalObjectMaxDepthInErrorMessage ;
16+ minErrConfig . urlMaxLength = originalUrlMaxLengthInErrorMessage ;
1517 } ) ;
1618
19+ function extractUrlFromErrorMessage ( message ) {
20+ var match = message . match ( / h t t p [ \s \S ] * \? p 0 = / ) ;
21+ var urlStartAt = message . indexOf ( match [ 0 ] ) ;
22+ if ( urlStartAt < 0 ) {
23+ throw new Error ( 'Could not find url' ) ;
24+ }
25+ return message . slice ( urlStartAt ) ;
26+ }
27+
28+ function createDummyString ( size ) {
29+ var str = '' ;
30+ for ( var i = 0 ; i < size ; i ++ ) {
31+ str += 'a'
32+ }
33+ return str ;
34+ }
35+
1736 it ( 'should return an Error factory' , function ( ) {
1837 var myError = testError ( 'test' , 'Oops' ) ;
1938 expect ( myError instanceof Error ) . toBe ( true ) ;
@@ -143,4 +162,37 @@ describe('minErr', function() {
143162 expect ( testError ( 'acode' , 'aproblem' , 'a' , 'b' , 'value with space' ) . message )
144163 . toMatch ( / ^ [ \s \S ] * \? p 0 = a & p 1 = b & p 2 = v a l u e % 2 0 w i t h % 2 0 s p a c e $ / ) ;
145164 } ) ;
165+
166+ it ( 'should slice error reference URL in the message if it exceeds url max length' , function ( ) {
167+ debugger ;
168+ var a = createDummyString ( 2000 ) ;
169+
170+ var myError = testError ( '26' , 'a when default=2000 is {0}' , a ) ;
171+ var url = extractUrlFromErrorMessage ( myError . message ) ;
172+ expect ( url . length ) . toBe ( 2000 ) ;
173+ expect ( errorHandlingConfig ( ) . urlMaxLength ) . toBe ( 2000 ) ;
174+
175+ errorHandlingConfig ( { urlMaxLength : 500 } ) ;
176+ myError = testError ( '26' , 'a when urlMaxLength=500 is {0}' , a ) ;
177+ url = extractUrlFromErrorMessage ( myError . message ) ;
178+ expect ( url . length ) . toBe ( 500 ) ;
179+ expect ( errorHandlingConfig ( ) . urlMaxLength ) . toBe ( 500 ) ;
180+
181+ errorHandlingConfig ( { urlMaxLength : undefined } ) ;
182+ myError = testError ( '26' , 'a when urlMaxLength=undefined is {0}' , a ) ;
183+ url = extractUrlFromErrorMessage ( myError . message ) ;
184+ expect ( url . length ) . toBe ( 500 ) ;
185+ expect ( errorHandlingConfig ( ) . urlMaxLength ) . toBe ( 500 ) ;
186+ } ) ;
187+
188+ they ( 'should ignore url max length when urlMaxLength = $prop' ,
189+ [ NaN , null , true , false , - 1 , 0 ] , function ( maxLength ) {
190+ errorHandlingConfig ( { urlMaxLength : maxLength } ) ;
191+ var a = createDummyString ( 2100 ) ;
192+ var myError = testError ( '26' , 'a is {0}' , a ) ;
193+ var url = extractUrlFromErrorMessage ( myError . message ) ;
194+ expect ( url . length ) . toBeGreaterThan ( 2100 ) ;
195+ expect ( errorHandlingConfig ( ) . urlMaxLength ) . toBeNaN ( ) ;
196+ }
197+ ) ;
146198} ) ;
0 commit comments