Skip to content

Commit 2dc407c

Browse files
cshfangjimblanc
andauthored
chore(analytics): Re-enable hub dispatch on record (#12224)
Co-authored-by: Jim Blanchard <[email protected]>
1 parent 99a7af3 commit 2dc407c

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

packages/analytics/__tests__/providers/pinpoint/apis/record.test.ts

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Hub } from '@aws-amplify/core';
12
import { record as pinpointRecord } from '@aws-amplify/core/internals/providers/pinpoint';
23
import { ConsoleLogger as Logger } from '@aws-amplify/core/internals/utils';
34
import { 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');
2326
jest.mock('../../../../src/utils');
2427
jest.mock('../../../../src/providers/pinpoint/utils');
25-
jest.mock('@aws-amplify/core/internals/providers/pinpoint');
2628

2729
describe('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
});

packages/analytics/src/providers/pinpoint/apis/record.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4+
import { Hub } from '@aws-amplify/core';
45
import {
6+
AMPLIFY_SYMBOL,
57
AnalyticsAction,
68
ConsoleLogger as Logger,
79
} from '@aws-amplify/core/internals/utils';
@@ -59,6 +61,12 @@ export const record = (input: RecordInput): void => {
5961

6062
resolveCredentials()
6163
.then(({ credentials, identityId }) => {
64+
Hub.dispatch(
65+
'analytics',
66+
{ event: 'record', data: input, message: 'Recording Analytics event' },
67+
'Analytics',
68+
AMPLIFY_SYMBOL
69+
);
6270
recordCore({
6371
appId,
6472
category: 'Analytics',

0 commit comments

Comments
 (0)