From 26aa98f5bff2170f4eaec6c4aadc72b0da3a5b68 Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Fri, 2 Sep 2022 13:53:49 +0300 Subject: [PATCH] Stop including MobX internals as part of telemetry Signed-off-by: Iku-turso Co-authored-by: Juho Heikka Signed-off-by: Iku-turso --- ...etry-from-specific-function-calls.test.ts} | 34 +++++++++++++++++-- .../renderer/emit-telemetry.injectable.ts | 3 +- 2 files changed, 34 insertions(+), 3 deletions(-) rename src/features/telemetry/{emit-telemetry-from-white-listed-function-calls.test.ts => emit-telemetry-from-specific-function-calls.test.ts} (78%) diff --git a/src/features/telemetry/emit-telemetry-from-white-listed-function-calls.test.ts b/src/features/telemetry/emit-telemetry-from-specific-function-calls.test.ts similarity index 78% rename from src/features/telemetry/emit-telemetry-from-white-listed-function-calls.test.ts rename to src/features/telemetry/emit-telemetry-from-specific-function-calls.test.ts index 97c68c8ad0..961647fa29 100644 --- a/src/features/telemetry/emit-telemetry-from-white-listed-function-calls.test.ts +++ b/src/features/telemetry/emit-telemetry-from-specific-function-calls.test.ts @@ -2,14 +2,14 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ +import { computed, runInAction } from "mobx"; import type { DiContainer } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable"; import { getDiForUnitTesting } from "../../renderer/getDiForUnitTesting"; import telemetryWhiteListForFunctionsInjectable from "./renderer/telemetry-white-list-for-functions.injectable"; -import { runInAction } from "mobx"; import emitEventInjectable from "../../common/app-event-bus/emit-event.injectable"; -describe("sending-telemetry-from-white-listed-function-calls", () => { +describe("emit-telemetry-from-specific-function-calls", () => { let di: DiContainer; beforeEach(() => { @@ -87,6 +87,36 @@ describe("sending-telemetry-from-white-listed-function-calls", () => { }); }); + describe("when the white-listed function is called with MobX reactive content", () => { + beforeEach(() => { + const someComputedProperty = computed(() => "some-computed-value"); + + const someObservable = { + someStaticProperty: "some-static-value", + someComputedProperty, + }; + + injectedWhiteListedFunction(someObservable); + }); + + it("telemetry is emitted in event bus without MobX internals or computeds", () => { + expect(emitEventMock).toHaveBeenCalledWith({ + destination: "auto-capture", + action: "telemetry-from-business-action", + name: "some-white-listed-function", + + params: { + args: [ + { + someStaticProperty: "some-static-value", + someComputedProperty: "some-computed-value", + }, + ], + }, + }); + }); + }); + describe("when the non-white-listed function is called", () => { beforeEach(() => { injectedNonWhiteListedFunction(); diff --git a/src/features/telemetry/renderer/emit-telemetry.injectable.ts b/src/features/telemetry/renderer/emit-telemetry.injectable.ts index 149bdb79bb..f543daf843 100644 --- a/src/features/telemetry/renderer/emit-telemetry.injectable.ts +++ b/src/features/telemetry/renderer/emit-telemetry.injectable.ts @@ -4,6 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import emitEventInjectable from "../../../common/app-event-bus/emit-event.injectable"; +import { toJS, observable } from "mobx"; const emitTelemetryInjectable = getInjectable({ id: "emit-telemetry", @@ -16,7 +17,7 @@ const emitTelemetryInjectable = getInjectable({ destination: "auto-capture", action: "telemetry-from-business-action", name: action, - params: { args }, + params: { args: toJS(observable(args)) }, }); }; },