Skip to content

Commit

Permalink
feat: Add user cloud it to telemetry (#7232)
Browse files Browse the repository at this point in the history
Github issue / Community forum post (link here to close automatically):
  • Loading branch information
RicardoE105 authored Sep 25, 2023
1 parent 33991e9 commit 60c152d
Show file tree
Hide file tree
Showing 3 changed files with 150 additions and 1 deletion.
140 changes: 140 additions & 0 deletions packages/editor-ui/src/plugins/__tests__/telemetry.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
import { SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';
import { Telemetry } from '@/plugins/telemetry';
import { useSettingsStore } from '@/stores/settings.store';
import merge from 'lodash-es/merge';
import { createPinia, setActivePinia } from 'pinia';

let telemetry: Telemetry;

let settingsStore: ReturnType<typeof useSettingsStore>;

describe('telemetry', () => {
beforeAll(() => {
telemetry = new Telemetry();
setActivePinia(createPinia());
settingsStore = useSettingsStore();
telemetry.init(
{ enabled: true, config: { url: '', key: '' } },
{ versionCli: '1', instanceId: '1' },
);
});

describe('identify', () => {
it('Rudderstack identify method should be called when proving userId ', () => {
const identifyFunction = vi.spyOn(window.rudderanalytics, 'identify');

const userId = '1';
const instanceId = '1';

settingsStore.setSettings(
merge({}, SETTINGS_STORE_DEFAULT_STATE.settings, {
deployment: {
type: '',
},
}),
);

telemetry.identify(userId, instanceId);
expect(identifyFunction).toHaveBeenCalledTimes(1);
expect(identifyFunction).toHaveBeenCalledWith(`${instanceId}#${userId}`, {
instance_id: instanceId,
});
});

it('Rudderstack identify method should be called when proving userId and versionCli ', () => {
const identifyFunction = vi.spyOn(window.rudderanalytics, 'identify');

const userId = '1';
const instanceId = '1';
const versionCli = '1';

settingsStore.setSettings(
merge({}, SETTINGS_STORE_DEFAULT_STATE.settings, {
deployment: {
type: '',
},
}),
);

telemetry.identify(userId, instanceId, versionCli);
expect(identifyFunction).toHaveBeenCalledTimes(1);
expect(identifyFunction).toHaveBeenCalledWith(`${instanceId}#${userId}`, {
instance_id: instanceId,
version_cli: versionCli,
});
});

it('Rudderstack identify method should be called when proving userId and deployment type is cloud ', () => {
const identifyFunction = vi.spyOn(window.rudderanalytics, 'identify');

const userId = '1';
const instanceId = '1';
const versionCli = '1';
const userCloudId = '1';

settingsStore.setSettings(
merge({}, SETTINGS_STORE_DEFAULT_STATE.settings, {
n8nMetadata: {
userId: userCloudId,
},
deployment: {
type: 'cloud',
},
}),
);

telemetry.identify(userId, instanceId, versionCli);
expect(identifyFunction).toHaveBeenCalledTimes(1);
expect(identifyFunction).toHaveBeenCalledWith(`${instanceId}#${userId}`, {
instance_id: instanceId,
version_cli: versionCli,
user_cloud_id: userCloudId,
});
});

it('Rudderstack identify method should be called when proving userId and deployment type is cloud', () => {
const identifyFunction = vi.spyOn(window.rudderanalytics, 'identify');

const userId = '1';
const instanceId = '1';
const versionCli = '1';
const userCloudId = '1';

settingsStore.setSettings(
merge({}, SETTINGS_STORE_DEFAULT_STATE.settings, {
n8nMetadata: {
userId: userCloudId,
},
deployment: {
type: 'cloud',
},
}),
);

telemetry.identify(userId, instanceId, versionCli);
expect(identifyFunction).toHaveBeenCalledTimes(1);
expect(identifyFunction).toHaveBeenCalledWith(`${instanceId}#${userId}`, {
instance_id: instanceId,
version_cli: versionCli,
user_cloud_id: userCloudId,
});
});

it('Rudderstack reset method should be called when proving userId and deployment type is cloud', () => {
const resetFunction = vi.spyOn(window.rudderanalytics, 'reset');

const instanceId = '1';

settingsStore.setSettings(
merge({}, SETTINGS_STORE_DEFAULT_STATE.settings, {
deployment: {
type: '',
},
}),
);

telemetry.identify(instanceId);
expect(resetFunction).toHaveBeenCalledTimes(1);
});
});
});
10 changes: 9 additions & 1 deletion packages/editor-ui/src/plugins/telemetry/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,15 @@ export class Telemetry {
}

identify(instanceId: string, userId?: string, versionCli?: string) {
const traits = { instance_id: instanceId, version_cli: versionCli };
const settingsStore = useSettingsStore();
const traits: { instance_id: string; version_cli?: string; user_cloud_id?: string } = {
instance_id: instanceId,
version_cli: versionCli,
};

if (settingsStore.isCloudDeployment) {
traits.user_cloud_id = settingsStore.settings?.n8nMetadata?.userId ?? '';
}
if (userId) {
this.rudderStack.identify(`${instanceId}#${userId}`, traits);
} else {
Expand Down
1 change: 1 addition & 0 deletions packages/workflow/src/Interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2135,6 +2135,7 @@ export interface IN8nUISettings {
urlBaseEditor: string;
versionCli: string;
n8nMetadata?: {
userId?: string;
[key: string]: string | number | undefined;
};
versionNotifications: IVersionNotificationSettings;
Expand Down

0 comments on commit 60c152d

Please sign in to comment.