fix(SEC-WEB-26+29): Remove console.log + fix formatTime error handling
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- Remove debug console.log from workspaces page and teams page - Fix formatTime to return "Invalid date" fallback instead of empty string when date parsing fails (handles both thrown errors and NaN dates) - Export formatTime and add unit tests for error handling cases Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -61,7 +61,6 @@ function WorkspacesPageContent(): ReactElement {
|
|||||||
setIsCreating(true);
|
setIsCreating(true);
|
||||||
try {
|
try {
|
||||||
// TODO: Replace with real API call
|
// TODO: Replace with real API call
|
||||||
console.log("Creating workspace:", newWorkspaceName);
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 1000)); // Simulate API call
|
await new Promise((resolve) => setTimeout(resolve, 1000)); // Simulate API call
|
||||||
alert(`Workspace "${newWorkspaceName}" created successfully!`);
|
alert(`Workspace "${newWorkspaceName}" created successfully!`);
|
||||||
setNewWorkspaceName("");
|
setNewWorkspaceName("");
|
||||||
|
|||||||
@@ -45,8 +45,6 @@ function TeamsPageContent(): ReactElement {
|
|||||||
// description: newTeamDescription || undefined,
|
// description: newTeamDescription || undefined,
|
||||||
// });
|
// });
|
||||||
|
|
||||||
console.log("Creating team:", { name: newTeamName, description: newTeamDescription });
|
|
||||||
|
|
||||||
// Reset form
|
// Reset form
|
||||||
setNewTeamName("");
|
setNewTeamName("");
|
||||||
setNewTeamDescription("");
|
setNewTeamDescription("");
|
||||||
|
|||||||
43
apps/web/src/components/chat/MessageList.test.tsx
Normal file
43
apps/web/src/components/chat/MessageList.test.tsx
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/**
|
||||||
|
* @file MessageList.test.tsx
|
||||||
|
* @description Tests for formatTime utility in MessageList
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { describe, it, expect } from "vitest";
|
||||||
|
import { formatTime } from "./MessageList";
|
||||||
|
|
||||||
|
describe("formatTime", () => {
|
||||||
|
it("should format a valid ISO date string", () => {
|
||||||
|
const result = formatTime("2024-06-15T14:30:00Z");
|
||||||
|
// The exact output depends on locale, but it should not be empty or "Invalid date"
|
||||||
|
expect(result).toBeTruthy();
|
||||||
|
expect(result).not.toBe("Invalid date");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return "Invalid date" for an invalid date string', () => {
|
||||||
|
const result = formatTime("not-a-date");
|
||||||
|
expect(result).toBe("Invalid date");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return "Invalid date" for an empty string', () => {
|
||||||
|
const result = formatTime("");
|
||||||
|
expect(result).toBe("Invalid date");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return "Invalid date" for garbage input', () => {
|
||||||
|
const result = formatTime("abc123xyz");
|
||||||
|
expect(result).toBe("Invalid date");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should handle a valid date without time component", () => {
|
||||||
|
const result = formatTime("2024-01-01");
|
||||||
|
expect(result).toBeTruthy();
|
||||||
|
expect(result).not.toBe("Invalid date");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should handle Unix epoch", () => {
|
||||||
|
const result = formatTime("1970-01-01T00:00:00Z");
|
||||||
|
expect(result).toBeTruthy();
|
||||||
|
expect(result).not.toBe("Invalid date");
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -313,12 +313,15 @@ function LoadingIndicator({ quip }: { quip?: string | null }): React.JSX.Element
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatTime(isoString: string): string {
|
export function formatTime(isoString: string): string {
|
||||||
try {
|
try {
|
||||||
const date = new Date(isoString);
|
const date = new Date(isoString);
|
||||||
|
if (isNaN(date.getTime())) {
|
||||||
|
return "Invalid date";
|
||||||
|
}
|
||||||
return date.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
|
return date.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
|
||||||
} catch {
|
} catch {
|
||||||
return "";
|
return "Invalid date";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user