- Replaced direct access to session.firstMessage with formatSessionLabel for consistent label formatting across components. - Updated SessionItem, TeamSessionsSection, and KanbanFilterPopover to utilize the new formatting function. - Enhanced display logic in SessionItem to differentiate between regular and team sessions, improving user experience. - Added new icons for team sessions and adjusted metadata display for better clarity.
77 lines
2.1 KiB
TypeScript
77 lines
2.1 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
import { getVisibleCommentIdsFallback } from '../../../src/renderer/hooks/useViewportCommentRead';
|
|
|
|
function makeRect({
|
|
top,
|
|
bottom,
|
|
left = 0,
|
|
right = 100,
|
|
}: {
|
|
top: number;
|
|
bottom: number;
|
|
left?: number;
|
|
right?: number;
|
|
}): DOMRect {
|
|
return {
|
|
x: left,
|
|
y: top,
|
|
top,
|
|
bottom,
|
|
left,
|
|
right,
|
|
width: right - left,
|
|
height: bottom - top,
|
|
toJSON: () => ({}),
|
|
} as DOMRect;
|
|
}
|
|
|
|
describe('getVisibleCommentIdsFallback', () => {
|
|
it('returns comment IDs that are visibly inside the scroll container', () => {
|
|
const container = document.createElement('div');
|
|
const visible = document.createElement('div');
|
|
const hidden = document.createElement('div');
|
|
|
|
vi.spyOn(container, 'getBoundingClientRect').mockReturnValue(
|
|
makeRect({ top: 100, bottom: 300 })
|
|
);
|
|
vi.spyOn(visible, 'getBoundingClientRect').mockReturnValue(makeRect({ top: 120, bottom: 180 }));
|
|
vi.spyOn(hidden, 'getBoundingClientRect').mockReturnValue(makeRect({ top: 320, bottom: 380 }));
|
|
|
|
const result = getVisibleCommentIdsFallback(
|
|
container,
|
|
new Map([
|
|
['visible-comment', visible],
|
|
['hidden-comment', hidden],
|
|
])
|
|
);
|
|
|
|
expect(result).toEqual(['visible-comment']);
|
|
});
|
|
|
|
it('requires at least 10% of the comment height to be visible', () => {
|
|
const container = document.createElement('div');
|
|
const barelyVisible = document.createElement('div');
|
|
const enoughVisible = document.createElement('div');
|
|
|
|
vi.spyOn(container, 'getBoundingClientRect').mockReturnValue(
|
|
makeRect({ top: 100, bottom: 300 })
|
|
);
|
|
vi.spyOn(barelyVisible, 'getBoundingClientRect').mockReturnValue(
|
|
makeRect({ top: 295, bottom: 405 })
|
|
);
|
|
vi.spyOn(enoughVisible, 'getBoundingClientRect').mockReturnValue(
|
|
makeRect({ top: 290, bottom: 390 })
|
|
);
|
|
|
|
const result = getVisibleCommentIdsFallback(
|
|
container,
|
|
new Map([
|
|
['barely-visible', barelyVisible],
|
|
['enough-visible', enoughVisible],
|
|
])
|
|
);
|
|
|
|
expect(result).toEqual(['enough-visible']);
|
|
});
|
|
});
|