fix(ci): resolve no-selector-parameter lint error in TeamLogSourceTracker
Split setTracking(enabled) into separate enableTracking/disableTracking public methods per sonarjs/no-selector-parameter rule. Update all callers and test mocks accordingly.
This commit is contained in:
parent
388a24d715
commit
c91a886d49
5 changed files with 29 additions and 32 deletions
|
|
@ -197,7 +197,7 @@ export class TeamDataService {
|
|||
|
||||
if (enabled) {
|
||||
void this.teamLogSourceTracker
|
||||
.setTracking(teamName, 'change_presence', true)
|
||||
.enableTracking(teamName, 'change_presence')
|
||||
.catch((error) =>
|
||||
logger.debug(`Failed to start change-presence tracking for ${teamName}: ${String(error)}`)
|
||||
);
|
||||
|
|
@ -205,7 +205,7 @@ export class TeamDataService {
|
|||
}
|
||||
|
||||
void this.teamLogSourceTracker
|
||||
.setTracking(teamName, 'change_presence', false)
|
||||
.disableTracking(teamName, 'change_presence')
|
||||
.catch((error) =>
|
||||
logger.debug(`Failed to stop change-presence tracking for ${teamName}: ${String(error)}`)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -58,21 +58,11 @@ export class TeamLogSourceTracker {
|
|||
return state ? { ...state.snapshot } : null;
|
||||
}
|
||||
|
||||
async setTracking(
|
||||
teamName: string,
|
||||
consumer: TeamLogSourceTrackingConsumer,
|
||||
enabled: boolean
|
||||
): Promise<TeamLogSourceSnapshot> {
|
||||
return enabled
|
||||
? this.enableTracking(teamName, consumer)
|
||||
: this.disableTracking(teamName, consumer);
|
||||
}
|
||||
|
||||
async ensureTracking(teamName: string): Promise<TeamLogSourceSnapshot> {
|
||||
return this.enableTracking(teamName, 'change_presence');
|
||||
}
|
||||
|
||||
private async enableTracking(
|
||||
async enableTracking(
|
||||
teamName: string,
|
||||
consumer: TeamLogSourceTrackingConsumer
|
||||
): Promise<TeamLogSourceSnapshot> {
|
||||
|
|
@ -139,7 +129,7 @@ export class TeamLogSourceTracker {
|
|||
await this.disableTracking(teamName, 'change_presence');
|
||||
}
|
||||
|
||||
private async disableTracking(
|
||||
async disableTracking(
|
||||
teamName: string,
|
||||
consumer: TeamLogSourceTrackingConsumer
|
||||
): Promise<TeamLogSourceSnapshot> {
|
||||
|
|
|
|||
|
|
@ -102,14 +102,14 @@ export class TeammateToolTracker {
|
|||
state.epoch += 1;
|
||||
state.filesByPath.clear();
|
||||
state.refreshQueued = false;
|
||||
await this.logSourceTracker.setTracking(teamName, 'tool_activity', true);
|
||||
await this.logSourceTracker.enableTracking(teamName, 'tool_activity');
|
||||
await this.refreshTeam(teamName);
|
||||
}
|
||||
|
||||
private async disableTracking(teamName: string): Promise<void> {
|
||||
const state = this.stateByTeam.get(teamName);
|
||||
if (!state) {
|
||||
await this.logSourceTracker.setTracking(teamName, 'tool_activity', false);
|
||||
await this.logSourceTracker.disableTracking(teamName, 'tool_activity');
|
||||
return;
|
||||
}
|
||||
state.enabled = false;
|
||||
|
|
@ -117,7 +117,7 @@ export class TeammateToolTracker {
|
|||
this.resetAllTrackedTools(teamName, state.filesByPath);
|
||||
state.filesByPath.clear();
|
||||
state.refreshQueued = false;
|
||||
await this.logSourceTracker.setTracking(teamName, 'tool_activity', false);
|
||||
await this.logSourceTracker.disableTracking(teamName, 'tool_activity');
|
||||
}
|
||||
|
||||
private async refreshTeam(teamName: string): Promise<void> {
|
||||
|
|
|
|||
|
|
@ -147,7 +147,8 @@ describe('TeamDataService', () => {
|
|||
});
|
||||
|
||||
it('starts and stops task change presence tracking outside getTeamData', async () => {
|
||||
const setTracking = vi.fn(async () => undefined);
|
||||
const enableTracking = vi.fn(async () => undefined);
|
||||
const disableTracking = vi.fn(async () => undefined);
|
||||
|
||||
const service = new TeamDataService(
|
||||
{
|
||||
|
|
@ -174,7 +175,8 @@ describe('TeamDataService', () => {
|
|||
deleteTasks: vi.fn(async () => undefined),
|
||||
} as never,
|
||||
{
|
||||
setTracking,
|
||||
enableTracking,
|
||||
disableTracking,
|
||||
} as never
|
||||
);
|
||||
|
||||
|
|
@ -182,8 +184,8 @@ describe('TeamDataService', () => {
|
|||
service.setTaskChangePresenceTracking('my-team', false);
|
||||
await Promise.resolve();
|
||||
|
||||
expect(setTracking).toHaveBeenNthCalledWith(1, 'my-team', 'change_presence', true);
|
||||
expect(setTracking).toHaveBeenNthCalledWith(2, 'my-team', 'change_presence', false);
|
||||
expect(enableTracking).toHaveBeenNthCalledWith(1, 'my-team', 'change_presence');
|
||||
expect(disableTracking).toHaveBeenNthCalledWith(1, 'my-team', 'change_presence');
|
||||
});
|
||||
|
||||
it('surfaces controller reconcile failures', async () => {
|
||||
|
|
|
|||
|
|
@ -79,7 +79,11 @@ describe('TeammateToolTracker', () => {
|
|||
mtimeMs: Date.now(),
|
||||
},
|
||||
]);
|
||||
const setTracking = vi.fn(async () => ({
|
||||
const enableTracking = vi.fn(async () => ({
|
||||
projectFingerprint: null,
|
||||
logSourceGeneration: null,
|
||||
}));
|
||||
const disableTracking = vi.fn(async () => ({
|
||||
projectFingerprint: null,
|
||||
logSourceGeneration: null,
|
||||
}));
|
||||
|
|
@ -87,13 +91,13 @@ describe('TeammateToolTracker', () => {
|
|||
|
||||
const tracker = new TeammateToolTracker(
|
||||
{ listAttributedSubagentFiles } as never,
|
||||
{ setTracking } as never,
|
||||
{ enableTracking, disableTracking } as never,
|
||||
(event) => events.push(event)
|
||||
);
|
||||
|
||||
await tracker.setTracking('my-team', true);
|
||||
|
||||
expect(setTracking).toHaveBeenCalledWith('my-team', 'tool_activity', true);
|
||||
expect(enableTracking).toHaveBeenCalledWith('my-team', 'tool_activity');
|
||||
expect(events).toHaveLength(1);
|
||||
const payload = JSON.parse(events[0].detail ?? '');
|
||||
expect(payload).toMatchObject({
|
||||
|
|
@ -133,7 +137,7 @@ describe('TeammateToolTracker', () => {
|
|||
const events: TeamChangeEvent[] = [];
|
||||
const tracker = new TeammateToolTracker(
|
||||
{ listAttributedSubagentFiles } as never,
|
||||
{ setTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })) } as never,
|
||||
{ enableTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })), disableTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })) } as never,
|
||||
(event) => events.push(event)
|
||||
);
|
||||
|
||||
|
|
@ -190,7 +194,7 @@ describe('TeammateToolTracker', () => {
|
|||
const events: TeamChangeEvent[] = [];
|
||||
const tracker = new TeammateToolTracker(
|
||||
{ listAttributedSubagentFiles } as never,
|
||||
{ setTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })) } as never,
|
||||
{ enableTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })), disableTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })) } as never,
|
||||
(event) => events.push(event)
|
||||
);
|
||||
|
||||
|
|
@ -239,7 +243,7 @@ describe('TeammateToolTracker', () => {
|
|||
const events: TeamChangeEvent[] = [];
|
||||
const tracker = new TeammateToolTracker(
|
||||
{ listAttributedSubagentFiles } as never,
|
||||
{ setTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })) } as never,
|
||||
{ enableTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })), disableTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })) } as never,
|
||||
(event) => events.push(event)
|
||||
);
|
||||
|
||||
|
|
@ -296,7 +300,7 @@ describe('TeammateToolTracker', () => {
|
|||
const events: TeamChangeEvent[] = [];
|
||||
const tracker = new TeammateToolTracker(
|
||||
{ listAttributedSubagentFiles } as never,
|
||||
{ setTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })) } as never,
|
||||
{ enableTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })), disableTracking: vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null })) } as never,
|
||||
(event) => events.push(event)
|
||||
);
|
||||
|
||||
|
|
@ -345,11 +349,12 @@ describe('TeammateToolTracker', () => {
|
|||
Array<{ memberName: string; sessionId: string; filePath: string; mtimeMs: number }>
|
||||
>();
|
||||
const listAttributedSubagentFiles = vi.fn(() => deferred.promise);
|
||||
const setTracking = vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null }));
|
||||
const enableTracking = vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null }));
|
||||
const disableTracking = vi.fn(async () => ({ projectFingerprint: null, logSourceGeneration: null }));
|
||||
const events: TeamChangeEvent[] = [];
|
||||
const tracker = new TeammateToolTracker(
|
||||
{ listAttributedSubagentFiles } as never,
|
||||
{ setTracking } as never,
|
||||
{ enableTracking, disableTracking } as never,
|
||||
(event) => events.push(event)
|
||||
);
|
||||
|
||||
|
|
@ -369,7 +374,7 @@ describe('TeammateToolTracker', () => {
|
|||
await Promise.all([enablePromise, disablePromise]);
|
||||
|
||||
expect(events).toHaveLength(0);
|
||||
expect(setTracking).toHaveBeenNthCalledWith(1, 'my-team', 'tool_activity', true);
|
||||
expect(setTracking).toHaveBeenNthCalledWith(2, 'my-team', 'tool_activity', false);
|
||||
expect(enableTracking).toHaveBeenNthCalledWith(1, 'my-team', 'tool_activity');
|
||||
expect(disableTracking).toHaveBeenNthCalledWith(1, 'my-team', 'tool_activity');
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue