UNPKG

@unifygtm/intent-client

Version:

JavaScript client for interacting with the Unify Intent API in the browser.

46 lines (40 loc) 1.43 kB
import { anyObject, mockReset } from 'jest-mock-extended'; import { IdentifyActivity, UNIFY_INTENT_IDENTIFY_URL, } from '../../../client/activities'; import { IdentifyEventData } from '../../../types'; import { MockClientSession, TEST_ANONYMOUS_USER_ID } from '../../mocks/data'; import { MockUnifyIntentContext } from '../../mocks/intent-context-mock'; describe('IdentifyActivity', () => { const mockContext = MockUnifyIntentContext(); beforeEach(() => { mockReset(mockContext.apiClient); mockReset(mockContext.identityManager); mockReset(mockContext.sessionManager); }); describe('track', () => { beforeEach(() => { mockContext.sessionManager.getOrCreateSession.mockReturnValue( MockClientSession(), ); mockContext.identityManager.getOrCreateAnonymousUserId.mockReturnValue( TEST_ANONYMOUS_USER_ID, ); }); it('tracks an identify activity with user traits', () => { const identify = new IdentifyActivity(mockContext, { email: 'solomon@unifygtm.com', }); identify.track(); expect(mockContext.apiClient.post).toHaveBeenCalledWith( UNIFY_INTENT_IDENTIFY_URL, anyObject(), ); const data = mockContext.apiClient.post.mock .calls[0][1] as IdentifyEventData; expect(data.type).toEqual('identify'); expect(data.traits.email).toEqual('solomon@unifygtm.com'); }); }); });