33 * 
44 * @group  unit/metrics/class 
55 */ 
6- import  type  {  LambdaInterface  }  from  '@aws-lambda-powertools/commons/types' ; 
6+ import  type  { 
7+   GenericLogger , 
8+   LambdaInterface , 
9+ }  from  '@aws-lambda-powertools/commons/types' ; 
710import  context  from  '@aws-lambda-powertools/testing-utils/context' ; 
811import  type  {  Context ,  Handler  }  from  'aws-lambda' ; 
912import  {  EnvironmentVariablesService  }  from  '../../src/config/EnvironmentVariablesService.js' ; 
@@ -350,7 +353,13 @@ describe('Class: Metrics', () => {
350353
351354    test ( 'it should update existing dimension value if same dimension is added again' ,  ( )  =>  { 
352355      // Prepare 
353-       const  metrics : Metrics  =  new  Metrics ( {  namespace : TEST_NAMESPACE  } ) ; 
356+       const  logger  =  { 
357+         warn : jest . fn ( ) , 
358+       }  as  unknown  as  GenericLogger ; 
359+       const  metrics : Metrics  =  new  Metrics ( { 
360+         namespace : TEST_NAMESPACE , 
361+         logger, 
362+       } ) ; 
354363      const  dimensionName  =  'test-dimension' ; 
355364
356365      // Act 
@@ -365,6 +374,9 @@ describe('Class: Metrics', () => {
365374          } , 
366375        } ) 
367376      ) ; 
377+       expect ( logger . warn ) . toHaveBeenCalledWith ( 
378+         `Dimension "test-dimension" has already been added. The previous value will be overwritten.` 
379+       ) ; 
368380    } ) ; 
369381
370382    test ( 'it should throw error if the number of dimensions exceeds the maximum allowed' ,  ( )  =>  { 
@@ -521,7 +533,7 @@ describe('Class: Metrics', () => {
521533      const  dimensionName  =  'test-dimension' ; 
522534      const  dimensionValue  =  'test-value' ; 
523535      const  dimensionsToBeAdded : LooseObject  =  { } ; 
524-       for  ( let  i  =  0 ;  i  <  MAX_DIMENSION_COUNT ;  i ++ )  { 
536+       for  ( let  i  =  0 ;  i  <  MAX_DIMENSION_COUNT   -   1 ;  i ++ )  { 
525537        dimensionsToBeAdded [ `${ dimensionName } ${ i }  ]  =  `${ dimensionValue } ${ i }  ; 
526538      } 
527539
@@ -531,7 +543,7 @@ describe('Class: Metrics', () => {
531543      ) . not . toThrowError ( ) ; 
532544      // biome-ignore  lint/complexity/useLiteralKeys: This needs to be accessed with literal key for testing 
533545      expect ( Object . keys ( metrics [ 'dimensions' ] ) . length ) . toBe ( 
534-         MAX_DIMENSION_COUNT 
546+         MAX_DIMENSION_COUNT   -   1   // Starts from 1 because the service dimension is already added by default 
535547      ) ; 
536548    } ) ; 
537549
@@ -541,22 +553,22 @@ describe('Class: Metrics', () => {
541553      const  dimensionName  =  'test-dimension' ; 
542554      const  dimensionValue  =  'test-value' ; 
543555      const  dimensionsToBeAdded : LooseObject  =  { } ; 
544-       for  ( let  i  =  0 ;  i  <  MAX_DIMENSION_COUNT ;  i ++ )  { 
556+       for  ( let  i  =  0 ;  i  <  MAX_DIMENSION_COUNT   -   1 ;  i ++ )  { 
545557        dimensionsToBeAdded [ `${ dimensionName } ${ i }  ]  =  `${ dimensionValue } ${ i }  ; 
546558      } 
547559
548560      // Act & Assess 
549561      metrics . addDimensions ( dimensionsToBeAdded ) ; 
550562      // biome-ignore  lint/complexity/useLiteralKeys: This needs to be accessed with literal key for testing 
551563      expect ( Object . keys ( metrics [ 'dimensions' ] ) . length ) . toBe ( 
552-         MAX_DIMENSION_COUNT 
564+         MAX_DIMENSION_COUNT   -   1   // Starts from 1 because the service dimension is already added by default 
553565      ) ; 
554566      expect ( ( )  => 
555567        metrics . addDimensions ( { 
556568          'another-dimension' : 'another-dimension-value' , 
557569        } ) 
558570      ) . toThrowError ( 
559-         `Unable to add 1 dimensions: the  number of metric dimensions must be lower than ${ MAX_DIMENSION_COUNT }  
571+         `The  number of metric dimensions must be lower than ${ MAX_DIMENSION_COUNT }  
560572      ) ; 
561573    } ) ; 
562574
0 commit comments