1+ import { Hub } from '@aws-amplify/core' ;
12import { record as pinpointRecord } from '@aws-amplify/core/internals/providers/pinpoint' ;
23import { ConsoleLogger as Logger } from '@aws-amplify/core/internals/utils' ;
34import { record } from '../../../../src/providers/pinpoint' ;
@@ -20,35 +21,43 @@ import {
2021 config ,
2122} from './testUtils/data' ;
2223
24+ jest . mock ( '@aws-amplify/core' ) ;
25+ jest . mock ( '@aws-amplify/core/internals/providers/pinpoint' ) ;
2326jest . mock ( '../../../../src/utils' ) ;
2427jest . mock ( '../../../../src/providers/pinpoint/utils' ) ;
25- jest . mock ( '@aws-amplify/core/internals/providers/pinpoint' ) ;
2628
2729describe ( 'Pinpoint API: record' , ( ) => {
30+ // create spies
31+ const loggerWarnSpy = jest . spyOn ( Logger . prototype , 'warn' ) ;
32+ // create mocks
2833 const mockPinpointRecord = pinpointRecord as jest . Mock ;
2934 const mockResolveConfig = resolveConfig as jest . Mock ;
3035 const mockResolveCredentials = resolveCredentials as jest . Mock ;
3136 const mockIsAnalyticsEnabled = isAnalyticsEnabled as jest . Mock ;
3237 const mockGetAnalyticsUserAgentString =
3338 getAnalyticsUserAgentString as jest . Mock ;
34- const loggerWarnSpy = jest . spyOn ( Logger . prototype , 'warn' ) ;
39+ const mockHubDispatch = Hub . dispatch as jest . Mock ;
3540
3641 beforeEach ( ( ) => {
37- mockPinpointRecord . mockReset ( ) ;
3842 mockPinpointRecord . mockResolvedValue ( undefined ) ;
39- mockResolveConfig . mockReset ( ) ;
4043 mockResolveConfig . mockReturnValue ( config ) ;
41- mockIsAnalyticsEnabled . mockReset ( ) ;
4244 mockIsAnalyticsEnabled . mockReturnValue ( true ) ;
43- mockGetAnalyticsUserAgentString . mockReset ( ) ;
4445 mockGetAnalyticsUserAgentString . mockReturnValue ( 'mock-user-agent' ) ;
45- mockResolveCredentials . mockReset ( ) ;
4646 mockResolveCredentials . mockResolvedValue ( {
4747 credentials,
4848 identityId,
4949 } ) ;
5050 } ) ;
5151
52+ afterEach ( ( ) => {
53+ mockPinpointRecord . mockReset ( ) ;
54+ mockResolveConfig . mockReset ( ) ;
55+ mockIsAnalyticsEnabled . mockReset ( ) ;
56+ mockGetAnalyticsUserAgentString . mockReset ( ) ;
57+ mockResolveCredentials . mockReset ( ) ;
58+ mockHubDispatch . mockClear ( ) ;
59+ } ) ;
60+
5261 it ( 'invokes the core record implementation' , async ( ) => {
5362 record ( event ) ;
5463
@@ -101,4 +110,17 @@ describe('Pinpoint API: record', () => {
101110
102111 expect ( mockPinpointRecord ) . not . toBeCalled ( ) ;
103112 } ) ;
113+
114+ it ( 'should dispatch a Hub event' , async ( ) => {
115+ record ( event ) ;
116+
117+ await new Promise ( process . nextTick ) ;
118+
119+ expect ( mockHubDispatch ) . toBeCalledWith (
120+ 'analytics' ,
121+ { event : 'record' , data : event , message : 'Recording Analytics event' } ,
122+ 'Analytics' ,
123+ expect . anything ( )
124+ ) ;
125+ } ) ;
104126} ) ;
0 commit comments