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