blob: a61003f5ef5212a365a5359bdd75ec7d6469ddef [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Common from '../core/common/common.js';
import type * as SDK from '../core/sdk/sdk.js';
import * as IssuesManager from '../models/issues_manager/issues_manager.js';
import {MockIssuesModel} from './MockIssuesModel.js';
import type {StubIssue} from './StubIssue.js';
export class MockIssuesManager extends Common.ObjectWrapper.ObjectWrapper<IssuesManager.IssuesManager.EventTypes> {
private mockIssues: IssuesManager.Issue.Issue[];
private issueCounts = new Map<IssuesManager.Issue.IssueKind, number>([
[IssuesManager.Issue.IssueKind.IMPROVEMENT, 0],
[IssuesManager.Issue.IssueKind.BREAKING_CHANGE, 1],
[IssuesManager.Issue.IssueKind.PAGE_ERROR, 2],
]);
// An empty model to pass along for the IssuesManager.Events.IssueAdded event.
private mockModel = new MockIssuesModel([]) as unknown as SDK.IssuesModel.IssuesModel;
constructor(issues: Iterable<IssuesManager.Issue.Issue>) {
super();
this.mockIssues = Array.from(issues);
}
issues() {
return this.mockIssues;
}
getIssueById(id: string): IssuesManager.Issue.Issue|null {
for (const issue of this.mockIssues) {
if (issue.getIssueId() === id) {
return issue;
}
}
return null;
}
numberOfIssues(kind?: IssuesManager.Issue.IssueKind): number {
if (kind) {
return this.issueCounts.get(kind) ?? 0;
}
return Array.from(this.issueCounts.values()).reduce((sum, v) => sum + v, 0);
}
setNumberOfIssues(counts: Map<IssuesManager.Issue.IssueKind, number>): void {
this.issueCounts = counts;
}
incrementIssueCountsOfAllKinds() {
for (const [key, value] of this.issueCounts) {
this.issueCounts.set(key, value + 1);
}
this.dispatchEventToListeners(IssuesManager.IssuesManager.Events.ISSUES_COUNT_UPDATED);
}
addIssue(mockIssue: StubIssue) {
this.mockIssues.push(mockIssue as IssuesManager.Issue.Issue);
this.dispatchEventToListeners(
IssuesManager.IssuesManager.Events.ISSUE_ADDED, {issue: mockIssue, issuesModel: this.mockModel});
}
}