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) {
|
if (enabled) {
|
||||||
void this.teamLogSourceTracker
|
void this.teamLogSourceTracker
|
||||||
.setTracking(teamName, 'change_presence', true)
|
.enableTracking(teamName, 'change_presence')
|
||||||
.catch((error) =>
|
.catch((error) =>
|
||||||
logger.debug(`Failed to start change-presence tracking for ${teamName}: ${String(error)}`)
|
logger.debug(`Failed to start change-presence tracking for ${teamName}: ${String(error)}`)
|
||||||
);
|
);
|
||||||
|
|
@ -205,7 +205,7 @@ export class TeamDataService {
|
||||||
}
|
}
|
||||||
|
|
||||||
void this.teamLogSourceTracker
|
void this.teamLogSourceTracker
|
||||||
.setTracking(teamName, 'change_presence', false)
|
.disableTracking(teamName, 'change_presence')
|
||||||
.catch((error) =>
|
.catch((error) =>
|
||||||
logger.debug(`Failed to stop change-presence tracking for ${teamName}: ${String(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;
|
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> {
|
async ensureTracking(teamName: string): Promise<TeamLogSourceSnapshot> {
|
||||||
return this.enableTracking(teamName, 'change_presence');
|
return this.enableTracking(teamName, 'change_presence');
|
||||||
}
|
}
|
||||||
|
|
||||||
private async enableTracking(
|
async enableTracking(
|
||||||
teamName: string,
|
teamName: string,
|
||||||
consumer: TeamLogSourceTrackingConsumer
|
consumer: TeamLogSourceTrackingConsumer
|
||||||
): Promise<TeamLogSourceSnapshot> {
|
): Promise<TeamLogSourceSnapshot> {
|
||||||
|
|
@ -139,7 +129,7 @@ export class TeamLogSourceTracker {
|
||||||
await this.disableTracking(teamName, 'change_presence');
|
await this.disableTracking(teamName, 'change_presence');
|
||||||
}
|
}
|
||||||
|
|
||||||
private async disableTracking(
|
async disableTracking(
|
||||||
teamName: string,
|
teamName: string,
|
||||||
consumer: TeamLogSourceTrackingConsumer
|
consumer: TeamLogSourceTrackingConsumer
|
||||||
): Promise<TeamLogSourceSnapshot> {
|
): Promise<TeamLogSourceSnapshot> {
|
||||||
|
|
|
||||||
|
|
@ -102,14 +102,14 @@ export class TeammateToolTracker {
|
||||||
state.epoch += 1;
|
state.epoch += 1;
|
||||||
state.filesByPath.clear();
|
state.filesByPath.clear();
|
||||||
state.refreshQueued = false;
|
state.refreshQueued = false;
|
||||||
await this.logSourceTracker.setTracking(teamName, 'tool_activity', true);
|
await this.logSourceTracker.enableTracking(teamName, 'tool_activity');
|
||||||
await this.refreshTeam(teamName);
|
await this.refreshTeam(teamName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async disableTracking(teamName: string): Promise<void> {
|
private async disableTracking(teamName: string): Promise<void> {
|
||||||
const state = this.stateByTeam.get(teamName);
|
const state = this.stateByTeam.get(teamName);
|
||||||
if (!state) {
|
if (!state) {
|
||||||
await this.logSourceTracker.setTracking(teamName, 'tool_activity', false);
|
await this.logSourceTracker.disableTracking(teamName, 'tool_activity');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.enabled = false;
|
state.enabled = false;
|
||||||
|
|
@ -117,7 +117,7 @@ export class TeammateToolTracker {
|
||||||
this.resetAllTrackedTools(teamName, state.filesByPath);
|
this.resetAllTrackedTools(teamName, state.filesByPath);
|
||||||
state.filesByPath.clear();
|
state.filesByPath.clear();
|
||||||
state.refreshQueued = false;
|
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> {
|
private async refreshTeam(teamName: string): Promise<void> {
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,8 @@ describe('TeamDataService', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('starts and stops task change presence tracking outside getTeamData', async () => {
|
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(
|
const service = new TeamDataService(
|
||||||
{
|
{
|
||||||
|
|
@ -174,7 +175,8 @@ describe('TeamDataService', () => {
|
||||||
deleteTasks: vi.fn(async () => undefined),
|
deleteTasks: vi.fn(async () => undefined),
|
||||||
} as never,
|
} as never,
|
||||||
{
|
{
|
||||||
setTracking,
|
enableTracking,
|
||||||
|
disableTracking,
|
||||||
} as never
|
} as never
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -182,8 +184,8 @@ describe('TeamDataService', () => {
|
||||||
service.setTaskChangePresenceTracking('my-team', false);
|
service.setTaskChangePresenceTracking('my-team', false);
|
||||||
await Promise.resolve();
|
await Promise.resolve();
|
||||||
|
|
||||||
expect(setTracking).toHaveBeenNthCalledWith(1, 'my-team', 'change_presence', true);
|
expect(enableTracking).toHaveBeenNthCalledWith(1, 'my-team', 'change_presence');
|
||||||
expect(setTracking).toHaveBeenNthCalledWith(2, 'my-team', 'change_presence', false);
|
expect(disableTracking).toHaveBeenNthCalledWith(1, 'my-team', 'change_presence');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('surfaces controller reconcile failures', async () => {
|
it('surfaces controller reconcile failures', async () => {
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,11 @@ describe('TeammateToolTracker', () => {
|
||||||
mtimeMs: Date.now(),
|
mtimeMs: Date.now(),
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
const setTracking = vi.fn(async () => ({
|
const enableTracking = vi.fn(async () => ({
|
||||||
|
projectFingerprint: null,
|
||||||
|
logSourceGeneration: null,
|
||||||
|
}));
|
||||||
|
const disableTracking = vi.fn(async () => ({
|
||||||
projectFingerprint: null,
|
projectFingerprint: null,
|
||||||
logSourceGeneration: null,
|
logSourceGeneration: null,
|
||||||
}));
|
}));
|
||||||
|
|
@ -87,13 +91,13 @@ describe('TeammateToolTracker', () => {
|
||||||
|
|
||||||
const tracker = new TeammateToolTracker(
|
const tracker = new TeammateToolTracker(
|
||||||
{ listAttributedSubagentFiles } as never,
|
{ listAttributedSubagentFiles } as never,
|
||||||
{ setTracking } as never,
|
{ enableTracking, disableTracking } as never,
|
||||||
(event) => events.push(event)
|
(event) => events.push(event)
|
||||||
);
|
);
|
||||||
|
|
||||||
await tracker.setTracking('my-team', true);
|
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);
|
expect(events).toHaveLength(1);
|
||||||
const payload = JSON.parse(events[0].detail ?? '');
|
const payload = JSON.parse(events[0].detail ?? '');
|
||||||
expect(payload).toMatchObject({
|
expect(payload).toMatchObject({
|
||||||
|
|
@ -133,7 +137,7 @@ describe('TeammateToolTracker', () => {
|
||||||
const events: TeamChangeEvent[] = [];
|
const events: TeamChangeEvent[] = [];
|
||||||
const tracker = new TeammateToolTracker(
|
const tracker = new TeammateToolTracker(
|
||||||
{ listAttributedSubagentFiles } as never,
|
{ 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)
|
(event) => events.push(event)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -190,7 +194,7 @@ describe('TeammateToolTracker', () => {
|
||||||
const events: TeamChangeEvent[] = [];
|
const events: TeamChangeEvent[] = [];
|
||||||
const tracker = new TeammateToolTracker(
|
const tracker = new TeammateToolTracker(
|
||||||
{ listAttributedSubagentFiles } as never,
|
{ 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)
|
(event) => events.push(event)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -239,7 +243,7 @@ describe('TeammateToolTracker', () => {
|
||||||
const events: TeamChangeEvent[] = [];
|
const events: TeamChangeEvent[] = [];
|
||||||
const tracker = new TeammateToolTracker(
|
const tracker = new TeammateToolTracker(
|
||||||
{ listAttributedSubagentFiles } as never,
|
{ 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)
|
(event) => events.push(event)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -296,7 +300,7 @@ describe('TeammateToolTracker', () => {
|
||||||
const events: TeamChangeEvent[] = [];
|
const events: TeamChangeEvent[] = [];
|
||||||
const tracker = new TeammateToolTracker(
|
const tracker = new TeammateToolTracker(
|
||||||
{ listAttributedSubagentFiles } as never,
|
{ 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)
|
(event) => events.push(event)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -345,11 +349,12 @@ describe('TeammateToolTracker', () => {
|
||||||
Array<{ memberName: string; sessionId: string; filePath: string; mtimeMs: number }>
|
Array<{ memberName: string; sessionId: string; filePath: string; mtimeMs: number }>
|
||||||
>();
|
>();
|
||||||
const listAttributedSubagentFiles = vi.fn(() => deferred.promise);
|
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 events: TeamChangeEvent[] = [];
|
||||||
const tracker = new TeammateToolTracker(
|
const tracker = new TeammateToolTracker(
|
||||||
{ listAttributedSubagentFiles } as never,
|
{ listAttributedSubagentFiles } as never,
|
||||||
{ setTracking } as never,
|
{ enableTracking, disableTracking } as never,
|
||||||
(event) => events.push(event)
|
(event) => events.push(event)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -369,7 +374,7 @@ describe('TeammateToolTracker', () => {
|
||||||
await Promise.all([enablePromise, disablePromise]);
|
await Promise.all([enablePromise, disablePromise]);
|
||||||
|
|
||||||
expect(events).toHaveLength(0);
|
expect(events).toHaveLength(0);
|
||||||
expect(setTracking).toHaveBeenNthCalledWith(1, 'my-team', 'tool_activity', true);
|
expect(enableTracking).toHaveBeenNthCalledWith(1, 'my-team', 'tool_activity');
|
||||||
expect(setTracking).toHaveBeenNthCalledWith(2, 'my-team', 'tool_activity', false);
|
expect(disableTracking).toHaveBeenNthCalledWith(1, 'my-team', 'tool_activity');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue