diff --git a/src/behaviours/application-update/__snapshots__/installing-update-using-tray.test.ts.snap b/src/behaviours/application-update/__snapshots__/installing-update-using-tray.test.ts.snap
index ddea0e46f1..16595f03f1 100644
--- a/src/behaviours/application-update/__snapshots__/installing-update-using-tray.test.ts.snap
+++ b/src/behaviours/application-update/__snapshots__/installing-update-using-tray.test.ts.snap
@@ -17,7 +17,7 @@ exports[`installing update using tray when started when user checks for updates
class="Notifications flex column align-flex-end"
>
void) => void;
+}
+
@observer
-class DefaultedAnimate extends React.Component
{
+class DefaultedAnimate extends React.Component {
static defaultProps = {
name: "opacity",
enter: true,
@@ -38,7 +44,7 @@ class DefaultedAnimate extends React.Component {
+
+ this.props.requestAnimationFrame(() => {
this.statusClassName.enter = true;
this.props.onEnter();
});
@@ -115,4 +122,17 @@ class DefaultedAnimate extends React.Component ;
+export const NonInjectedAnimate = (props: AnimateProps & Dependencies) => ;
+
+export const Animate = withInjectables(
+ NonInjectedAnimate,
+
+ {
+ getProps: (di, props) => ({
+ requestAnimationFrame: di.inject(requestAnimationFrameInjectable),
+ ...props,
+ }),
+ },
+);
+
+
diff --git a/src/renderer/components/animate/request-animation-frame.injectable.ts b/src/renderer/components/animate/request-animation-frame.injectable.ts
new file mode 100644
index 0000000000..f61b2ae874
--- /dev/null
+++ b/src/renderer/components/animate/request-animation-frame.injectable.ts
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import { getInjectable } from "@ogre-tools/injectable";
+
+const requestAnimationFrameInjectable = getInjectable({
+ id: "request-animation-frame",
+ instantiate: () => (callback: () => void) => requestAnimationFrame(callback),
+ causesSideEffects: true,
+});
+
+export default requestAnimationFrameInjectable;
diff --git a/src/renderer/components/update-button/__tests__/update-button.test.tsx b/src/renderer/components/update-button/__tests__/update-button.test.tsx
index ff52035a48..8133bd3845 100644
--- a/src/renderer/components/update-button/__tests__/update-button.test.tsx
+++ b/src/renderer/components/update-button/__tests__/update-button.test.tsx
@@ -3,15 +3,25 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
-import { render, act } from "@testing-library/react";
+import { act } from "@testing-library/react";
import React from "react";
import { UpdateButton } from "../update-button";
import "@testing-library/jest-dom/extend-expect";
+import { getDiForUnitTesting } from "../../../getDiForUnitTesting";
+import type { DiRender } from "../../test-utils/renderFor";
+import { renderFor } from "../../test-utils/renderFor";
const update = jest.fn();
describe("", () => {
+ let render: DiRender;
+
beforeEach(() => {
+
+ const di = getDiForUnitTesting({ doGeneralOverrides: true });
+
+ render = renderFor(di);
+
update.mockClear();
});
diff --git a/src/renderer/getDiForUnitTesting.tsx b/src/renderer/getDiForUnitTesting.tsx
index adc70e2a41..43e7925feb 100644
--- a/src/renderer/getDiForUnitTesting.tsx
+++ b/src/renderer/getDiForUnitTesting.tsx
@@ -44,6 +44,7 @@ import { observable } from "mobx";
import defaultShellInjectable from "./components/+preferences/default-shell.injectable";
import appVersionInjectable from "../common/get-configuration-file-model/app-version/app-version.injectable";
import provideInitialValuesForSyncBoxesInjectable from "./sync-box/provide-initial-values-for-sync-boxes.injectable";
+import requestAnimationFrameInjectable from "./components/animate/request-animation-frame.injectable";
export const getDiForUnitTesting = (opts: GetDiForUnitTestingOptions = {}) => {
const {
@@ -80,6 +81,8 @@ export const getDiForUnitTesting = (opts: GetDiForUnitTestingOptions = {}) => {
di.override(historyInjectable, () => createMemoryHistory());
+ di.override(requestAnimationFrameInjectable, () => (callback) => callback());
+
di.override(lensResourcesDirInjectable, () => "/irrelevant");
di.override(ipcRendererInjectable, () => ({