Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion core/component_manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,19 @@ Blockly.ComponentManager.ComponentDatum;
* Adds a component.
* @param {!Blockly.ComponentManager.ComponentDatum} componentInfo The data for
* the component to register.
* @param {boolean=} opt_allowOverrides True to prevent an error when overriding
* an already registered item.
* @template T
*/
Blockly.ComponentManager.prototype.addComponent = function(componentInfo) {
Blockly.ComponentManager.prototype.addComponent = function(
componentInfo, opt_allowOverrides) {
// Don't throw an error if opt_allowOverrides is true.
if (!opt_allowOverrides && this.componentData_[componentInfo.id]) {
throw Error(
'Plugin "' + componentInfo.id + '" with capabilities "' +
this.componentData_[componentInfo.id].capabilities +
'" already added.');
}
this.componentData_[componentInfo.id] = componentInfo;
for (var i = 0, type; (type = componentInfo.capabilities[i]); i++) {
var typeKey = String(type).toLowerCase();
Expand Down
6 changes: 6 additions & 0 deletions tests/mocha/toolbox_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ suite('Toolbox', function() {
test('Init called -> Toolbox is subscribed to background and foreground colour', function() {
var themeManager = this.toolbox.workspace_.getThemeManager();
var themeManagerSpy = sinon.spy(themeManager, 'subscribe');
var componentManager = this.toolbox.workspace_.getComponentManager();
sinon.stub(componentManager, 'addComponent');
this.toolbox.init();
sinon.assert.calledWith(themeManagerSpy, this.toolbox.HtmlDiv,
'toolboxBackgroundColour', 'background-color');
Expand All @@ -42,10 +44,14 @@ suite('Toolbox', function() {
});
test('Init called -> Render is called', function() {
var renderSpy = sinon.spy(this.toolbox, 'render');
var componentManager = this.toolbox.workspace_.getComponentManager();
sinon.stub(componentManager, 'addComponent');
this.toolbox.init();
sinon.assert.calledOnce(renderSpy);
});
test('Init called -> Flyout is initialized', function() {
var componentManager = this.toolbox.workspace_.getComponentManager();
sinon.stub(componentManager, 'addComponent');
this.toolbox.init();
chai.assert.isDefined(this.toolbox.flyout_);
});
Expand Down