Skip to content

Commit

Permalink
cherrypick: fix for icons showing/not showing in activities (#26906)
Browse files Browse the repository at this point in the history
For #26838

cherry pick for #26846
  • Loading branch information
ghernandez345 authored Mar 6, 2025
1 parent 8467903 commit fdd68bc
Show file tree
Hide file tree
Showing 9 changed files with 147 additions and 9 deletions.
22 changes: 20 additions & 2 deletions frontend/__mocks__/activityMock.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { IActivity, ActivityType } from "interfaces/activity";
import {
IActivity,
ActivityType,
IHostPastActivity,
} from "interfaces/activity";

const DEFAULT_ACTIVITY_MOCK: IActivity = {
created_at: "2022-11-03T17:22:14Z",
Expand All @@ -11,8 +15,22 @@ const DEFAULT_ACTIVITY_MOCK: IActivity = {
type: ActivityType.EditedAgentOptions,
};

const createMockActivity = (overrides?: Partial<IActivity>): IActivity => {
export const createMockActivity = (
overrides?: Partial<IActivity>
): IActivity => {
return { ...DEFAULT_ACTIVITY_MOCK, ...overrides };
};

const DEFAULT_HOST_PAST_ACTIVITY_MOCK: IHostPastActivity = {
...DEFAULT_ACTIVITY_MOCK,
type: ActivityType.LockedHost,
details: {},
};

export const createMockHostPastActivity = (
overrides?: Partial<IHostPastActivity>
): IHostPastActivity => {
return { ...DEFAULT_HOST_PAST_ACTIVITY_MOCK, ...overrides };
};

export default createMockActivity;
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ const ACTIVITIES_WITH_DETAILS = new Set([
ActivityType.EnabledActivityAutomations,
ActivityType.EditedActivityAutomations,
ActivityType.LiveQuery,
ActivityType.InstalledAppStoreApp,
]);

const getProfileMessageSuffix = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,15 @@ const baseClass = "canceled-script-activity-item";

const CanceledScriptActivityItem = ({
activity,
hideCancel,
}: IHostActivityItemComponentProps) => {
return (
<ActivityItem className={baseClass} activity={activity}>
<ActivityItem
className={baseClass}
activity={activity}
hideCancel={hideCancel}
hideShowDetails
>
<>
<b>{activity.actor_full_name}</b> canceled{" "}
<b>{formatScriptNameForActivityItem(activity.details?.script_name)}</b>{" "}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@ const baseClass = "canceled-software-install-activity-item";

const CanceledSoftwareInstallActivityItem = ({
activity,
hideCancel,
}: IHostActivityItemComponentProps) => {
return (
<ActivityItem className={baseClass} activity={activity}>
<ActivityItem
className={baseClass}
activity={activity}
hideCancel={hideCancel}
hideShowDetails
>
<>
<b>{activity.actor_full_name}</b> canceled{" "}
<b>{activity.details?.software_title}</b> install on this host.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import React from "react";
import { render, screen } from "@testing-library/react";
import { createMockHostPastActivity } from "__mocks__/activityMock";

import LockHostActivityItem from "./LockedHostActivityItem";

describe("LockHostActivityItem", () => {
it("renders the activity content", () => {
render(
<LockHostActivityItem
activity={createMockHostPastActivity({ actor_full_name: "Test User" })}
tab="past"
/>
);

expect(screen.getByText("Test User")).toBeVisible();
expect(screen.getByText(/locked this host/i)).toBeVisible();
});

it("does not render the cancel icon", () => {
render(
<LockHostActivityItem
activity={createMockHostPastActivity({ actor_full_name: "Test User" })}
tab="past"
/>
);

expect(screen.queryByTestId("close-icon")).not.toBeInTheDocument();
});

it("does not render the show details icon", () => {
render(
<LockHostActivityItem
activity={createMockHostPastActivity({ actor_full_name: "Test User" })}
tab="past"
/>
);

expect(screen.queryByTestId("info-outline-icon")).not.toBeInTheDocument();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@ const LockedHostActivityItem = ({
activity,
}: IHostActivityItemComponentProps) => {
return (
<ActivityItem className={baseClass} activity={activity}>
<ActivityItem
className={baseClass}
activity={activity}
hideCancel
hideShowDetails
>
<b>{activity.actor_full_name}</b> locked this host.
</ActivityItem>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ const RanScriptActivityItem = ({
tab,
activity,
onShowDetails,
onCancel,
isSoloActivity,
hideCancel,
}: IHostActivityItemComponentPropsWithShowDetails) => {
Expand All @@ -25,7 +24,6 @@ const RanScriptActivityItem = ({
className={baseClass}
activity={activity}
onShowDetails={onShowDetails}
onCancel={onCancel}
isSoloActivity={isSoloActivity}
hideCancel={hideCancel}
>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import React from "react";
import { render, screen } from "@testing-library/react";
import { createMockHostPastActivity } from "__mocks__/activityMock";

import UnlockHostActivityItem from "./UnlockedHostActivityItem";

describe("UnlockHostActivityItem", () => {
it("renders the activity content for darwin hosts", () => {
render(
<UnlockHostActivityItem
activity={createMockHostPastActivity({
actor_full_name: "Test User",
details: { host_platform: "darwin" },
})}
tab="past"
/>
);

expect(screen.getByText("Test User")).toBeVisible();
expect(
screen.getByText("viewed the six-digit unlock PIN for this host.")
).toBeVisible();
});

it("renders the activity content for non-darwin hosts", () => {
render(
<UnlockHostActivityItem
activity={createMockHostPastActivity({ actor_full_name: "Test User" })}
tab="past"
/>
);

expect(screen.getByText("Test User")).toBeVisible();
expect(screen.getByText(/unlocked this host/i)).toBeVisible();
});

it("does not render the cancel icon", () => {
render(
<UnlockHostActivityItem
activity={createMockHostPastActivity({ actor_full_name: "Test User" })}
tab="past"
/>
);

expect(screen.queryByTestId("close-icon")).not.toBeInTheDocument();
});

it("does not render the show details icon", () => {
render(
<UnlockHostActivityItem
activity={createMockHostPastActivity({ actor_full_name: "Test User" })}
tab="past"
/>
);

expect(screen.queryByTestId("info-outline-icon")).not.toBeInTheDocument();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,13 @@ const UnlockedHostActivityItem = ({
desc = "viewed the six-digit unlock PIN for this host.";
}
return (
<ActivityItem className={baseClass} activity={activity}>
<b>{activity.actor_full_name} </b> {desc}
<ActivityItem
className={baseClass}
activity={activity}
hideCancel
hideShowDetails
>
<b>{activity.actor_full_name}</b> {desc}
</ActivityItem>
);
};
Expand Down

0 comments on commit fdd68bc

Please sign in to comment.