// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import type {BookmarksCommandManagerElement, Command} from 'chrome://bookmarks/bookmarks.js';
import {assertDeepEquals, assertEquals} from 'chrome://webui-test/chai_assert.js';
import {normalizeIterable} from './test_util.js';
export class TestCommandManager {
private commandManager_: BookmarksCommandManagerElement;
private lastCommand_: Command|null = null;
private lastCommandIds_: Set<string>|null = null;
constructor() {
this.commandManager_ = document.createElement('bookmarks-command-manager');
const realHandle = this.commandManager_.handle.bind(this.commandManager_);
this.commandManager_.handle = (command, itemIds) => {
this.lastCommand_ = command;
this.lastCommandIds_ = itemIds;
realHandle(command, itemIds);
};
}
getCommandManager() {
return this.commandManager_;
}
assertLastCommand(command: Command|null, ids?: string[]) {
assertEquals(command, this.lastCommand_);
if (ids) {
assertDeepEquals(ids, normalizeIterable(this.lastCommandIds_!));
}
this.lastCommand_ = null;
this.lastCommandIds_ = null;
}
assertMenuOpenForIds(ids: string[]) {
assertDeepEquals(
ids, normalizeIterable(this.commandManager_.getMenuIdsForTesting()));
}
}