diff --git a/core/events/events_procedure_base.ts b/core/events/events_procedure_base.ts index dc3fca472..36c42f25c 100644 --- a/core/events/events_procedure_base.ts +++ b/core/events/events_procedure_base.ts @@ -9,6 +9,9 @@ import type {IProcedureModel} from '../interfaces/i_procedure_model.js'; import type {Workspace} from '../workspace.js'; +/** + * The base event for an event associated with a procedure. + */ export class ProcedureBase extends AbstractEvent { isBlank = false; diff --git a/core/events/events_procedure_change_return.ts b/core/events/events_procedure_change_return.ts index 1f818b108..9078056e2 100644 --- a/core/events/events_procedure_change_return.ts +++ b/core/events/events_procedure_change_return.ts @@ -5,19 +5,49 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IProcedureModel} from '../interfaces/i_procedure_model.js'; +import type {IProcedureModel} from '../interfaces/i_procedure_model.js'; import * as registry from '../registry.js'; -import {Workspace} from '../workspace.js'; +import type {Workspace} from '../workspace.js'; import {ProcedureBase} from './events_procedure_base.js'; import * as eventUtils from './utils.js'; +/** + * Represents a procedure's return type/status changing. + */ export class ProcedureChangeReturn extends ProcedureBase { + /** A string used to check the type of the event. */ + type = eventUtils.PROCEDURE_CHANGE_RETURN; + + /** The new type(s) the procedure's return has been set to. */ + private newTypes: string[]|null; + + /** + * @param oldTypes The type(s) the procedure's return was set to before it + * changed. + */ constructor( workpace: Workspace, model: IProcedureModel, public readonly oldTypes: string[]|null) { super(workpace, model); + + this.newTypes = model.getReturnTypes(); + } + + run(forward: boolean) { + const procedureModel = + this.getEventWorkspace_().getProcedureMap().get(this.model.getId()); + if (!procedureModel) { + throw new Error( + 'Cannot change the type of a procedure that does not exist ' + + 'in the procedure map'); + } + if (forward) { + procedureModel.setReturnTypes(this.newTypes); + } else { + procedureModel.setReturnTypes(this.oldTypes); + } } } diff --git a/core/events/events_procedure_create.ts b/core/events/events_procedure_create.ts index 5f96db077..7e9d187e6 100644 --- a/core/events/events_procedure_create.ts +++ b/core/events/events_procedure_create.ts @@ -4,13 +4,40 @@ * SPDX-License-Identifier: Apache-2.0 */ +import type {IProcedureModel} from '../interfaces/i_procedure_model.js'; +import {ObservableProcedureModel} from '../procedures.js'; import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {ProcedureBase} from './events_procedure_base.js'; import * as eventUtils from './utils.js'; -export class ProcedureCreate extends ProcedureBase {} +/** + * Represents a procedure data model being created. + */ +export class ProcedureCreate extends ProcedureBase { + /** A string used to check the type of the event. */ + type = eventUtils.PROCEDURE_CREATE; + + constructor(workspace: Workspace, model: IProcedureModel) { + super(workspace, model); + } + + run(forward: boolean) { + const workspace = this.getEventWorkspace_(); + const procedureMap = workspace.getProcedureMap(); + const procedureModel = procedureMap.get(this.model.getId()); + if (forward) { + if (procedureModel) return; + procedureMap.add(new ObservableProcedureModel( + workspace, this.model.getName(), this.model.getId())); + } else { + if (!procedureModel) return; + procedureMap.delete(this.model.getId()); + } + } +} registry.register( registry.Type.EVENT, eventUtils.PROCEDURE_CREATE, ProcedureCreate); diff --git a/core/events/events_procedure_delete.ts b/core/events/events_procedure_delete.ts index 0cb55319e..021088e8d 100644 --- a/core/events/events_procedure_delete.ts +++ b/core/events/events_procedure_delete.ts @@ -5,13 +5,40 @@ * SPDX-License-Identifier: Apache-2.0 */ +import type {IProcedureModel} from '../interfaces/i_procedure_model.js'; +import {ObservableProcedureModel} from '../procedures.js'; import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {ProcedureBase} from './events_procedure_base.js'; import * as eventUtils from './utils.js'; -export class ProcedureDelete extends ProcedureBase {} +/** + * Represents a procedure data model being deleted. + */ +export class ProcedureDelete extends ProcedureBase { + /** A string used to check the type of the event. */ + type = eventUtils.PROCEDURE_DELETE; + + constructor(workspace: Workspace, model: IProcedureModel) { + super(workspace, model); + } + + run(forward: boolean) { + const workspace = this.getEventWorkspace_(); + const procedureMap = workspace.getProcedureMap(); + const procedureModel = procedureMap.get(this.model.getId()); + if (forward) { + if (!procedureModel) return; + procedureMap.delete(this.model.getId()); + } else { + if (procedureModel) return; + procedureMap.add(new ObservableProcedureModel( + workspace, this.model.getName(), this.model.getId())); + } + } +} registry.register( registry.Type.EVENT, eventUtils.PROCEDURE_DELETE, ProcedureDelete); diff --git a/core/events/events_procedure_enable.ts b/core/events/events_procedure_enable.ts index 43ecd3fed..33820d966 100644 --- a/core/events/events_procedure_enable.ts +++ b/core/events/events_procedure_enable.ts @@ -5,13 +5,45 @@ * SPDX-License-Identifier: Apache-2.0 */ +import type {IProcedureModel} from '../interfaces/i_procedure_model.js'; import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {ProcedureBase} from './events_procedure_base.js'; import * as eventUtils from './utils.js'; +/** + * Represents a procedure data model being enabled or disabled. + */ +export class ProcedureEnable extends ProcedureBase { + /** A string used to check the type of the event. */ + type = eventUtils.PROCEDURE_ENABLE; -export class ProcedureEnable extends ProcedureBase {} + private oldState: boolean; + private newState: boolean; + + constructor(workspace: Workspace, model: IProcedureModel) { + super(workspace, model); + + this.oldState = !model.getEnabled(); + this.newState = model.getEnabled(); + } + + run(forward: boolean) { + const procedureModel = + this.getEventWorkspace_().getProcedureMap().get(this.model.getId()); + if (!procedureModel) { + throw new Error( + 'Cannot change the enabled state of a procedure that does not ' + + 'exist in the procedure map'); + } + if (forward) { + procedureModel.setEnabled(this.newState); + } else { + procedureModel.setEnabled(this.oldState); + } + } +} registry.register( registry.Type.EVENT, eventUtils.PROCEDURE_ENABLE, ProcedureEnable); diff --git a/core/events/events_procedure_parameter_base.ts b/core/events/events_procedure_parameter_base.ts index 137769d75..e0ea1a4af 100644 --- a/core/events/events_procedure_parameter_base.ts +++ b/core/events/events_procedure_parameter_base.ts @@ -8,4 +8,7 @@ import {ProcedureBase} from './events_procedure_base.js'; +/** + * The base event for an event associated with a procedure parameter. + */ export class ProcedureParameterBase extends ProcedureBase {} diff --git a/core/events/events_procedure_parameter_create.ts b/core/events/events_procedure_parameter_create.ts index 3c2f413b6..b7ffec79b 100644 --- a/core/events/events_procedure_parameter_create.ts +++ b/core/events/events_procedure_parameter_create.ts @@ -4,22 +4,59 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IParameterModel} from '../interfaces/i_parameter_model.js'; -import {IProcedureModel} from '../interfaces/i_procedure_model.js'; +import type {IParameterModel} from '../interfaces/i_parameter_model.js'; +import type {IProcedureModel} from '../interfaces/i_procedure_model.js'; +import {ObservableParameterModel} from '../procedures/observable_parameter_model.js'; import * as registry from '../registry.js'; -import {Workspace} from '../workspace.js'; +import type {Workspace} from '../workspace.js'; import {ProcedureParameterBase} from './events_procedure_parameter_base.js'; import * as eventUtils from './utils.js'; +/** + * Represents a parameter being added to a procedure. + */ export class ProcedureParameterCreate extends ProcedureParameterBase { + /** A string used to check the type of the event. */ + type = eventUtils.PROCEDURE_PARAMETER_CREATE; + + /** + * @param parameter The parameter model that was just added to the procedure. + * @param index The index the parameter was inserted at. + */ constructor( workspace: Workspace, procedure: IProcedureModel, public readonly parameter: IParameterModel, public readonly index: number) { super(workspace, procedure); } + + run(forward: boolean) { + const workspace = this.getEventWorkspace_(); + const procedureMap = workspace.getProcedureMap(); + const procedureModel = procedureMap.get(this.model.getId()); + if (!procedureModel) { + throw new Error( + 'Cannot add a parameter to a procedure that does not exist ' + + 'in the procedure map'); + } + const parameterModel = procedureModel.getParameter(this.index); + if (forward) { + if (this.parameterMatches(parameterModel)) return; + procedureModel.insertParameter( + new ObservableParameterModel( + workspace, this.parameter.getName(), this.parameter.getId()), + this.index); + } else { + if (!this.parameterMatches(parameterModel)) return; + procedureModel.deleteParameter(this.index); + } + } + + parameterMatches(param: IParameterModel) { + return param && param.getId() === this.parameter.getId(); + } } registry.register( diff --git a/core/events/events_procedure_parameter_delete.ts b/core/events/events_procedure_parameter_delete.ts index 82554ca46..838ef5971 100644 --- a/core/events/events_procedure_parameter_delete.ts +++ b/core/events/events_procedure_parameter_delete.ts @@ -4,22 +4,59 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IParameterModel} from '../interfaces/i_parameter_model.js'; -import {IProcedureModel} from '../interfaces/i_procedure_model.js'; +import type {IParameterModel} from '../interfaces/i_parameter_model.js'; +import type {IProcedureModel} from '../interfaces/i_procedure_model.js'; +import {ObservableParameterModel} from '../procedures/observable_parameter_model.js'; import * as registry from '../registry.js'; -import {Workspace} from '../workspace.js'; +import type {Workspace} from '../workspace.js'; import {ProcedureParameterBase} from './events_procedure_parameter_base.js'; import * as eventUtils from './utils.js'; - +/** + * Represents a parameter being removed from a procedure. + */ export class ProcedureParameterDelete extends ProcedureParameterBase { + /** A string used to check the type of the event. */ + type = eventUtils.PROCEDURE_PARAMETER_DELETE; + + /** + * @param parameter The parameter model that was just removed from the + * procedure. + * @param index The index the parameter was at before it was removed. + */ constructor( workspace: Workspace, procedure: IProcedureModel, public readonly parameter: IParameterModel, public readonly index: number) { super(workspace, procedure); } + + run(forward: boolean) { + const workspace = this.getEventWorkspace_(); + const procedureMap = workspace.getProcedureMap(); + const procedureModel = procedureMap.get(this.model.getId()); + if (!procedureModel) { + throw new Error( + 'Cannot add a parameter to a procedure that does not exist ' + + 'in the procedure map'); + } + const parameterModel = procedureModel.getParameter(this.index); + if (forward) { + if (!this.parameterMatches(parameterModel)) return; + procedureModel.deleteParameter(this.index); + } else { + if (this.parameterMatches(parameterModel)) return; + procedureModel.insertParameter( + new ObservableParameterModel( + workspace, this.parameter.getName(), this.parameter.getId()), + this.index); + } + } + + parameterMatches(param: IParameterModel) { + return param && param.getId() === this.parameter.getId(); + } } registry.register( diff --git a/core/events/events_procedure_parameter_rename.ts b/core/events/events_procedure_parameter_rename.ts index d18f1679c..50c248f3c 100644 --- a/core/events/events_procedure_parameter_rename.ts +++ b/core/events/events_procedure_parameter_rename.ts @@ -4,21 +4,51 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IParameterModel} from '../interfaces/i_parameter_model.js'; -import {IProcedureModel} from '../interfaces/i_procedure_model.js'; +import type {IParameterModel} from '../interfaces/i_parameter_model.js'; +import type {IProcedureModel} from '../interfaces/i_procedure_model.js'; import * as registry from '../registry.js'; -import {Workspace} from '../workspace.js'; +import type {Workspace} from '../workspace.js'; import {ProcedureParameterBase} from './events_procedure_parameter_base.js'; import * as eventUtils from './utils.js'; - +/** + * Represents a parameter of a procedure being renamed. + */ export class ProcedureParameterRename extends ProcedureParameterBase { + /** A string used to check the type of the event. */ + type = eventUtils.PROCEDURE_PARAMETER_RENAME; + private readonly newName: string; + constructor( workspace: Workspace, procedure: IProcedureModel, public readonly parameter: IParameterModel, public readonly oldName: string) { super(workspace, procedure); + + this.newName = parameter.getName(); + } + + run(forward: boolean) { + const procedureModel = + this.getEventWorkspace_().getProcedureMap().get(this.model.getId()); + if (!procedureModel) { + throw new Error( + 'Cannot rename the parameter of a procedure that does not exist ' + + 'in the procedure map'); + } + const parameterModel = procedureModel.getParameters().find( + (p) => p.getId() === this.parameter.getId()); + if (!parameterModel) { + throw new Error( + 'Cannot rename a parameter that does not exist ' + + 'in the procedure map'); + } + if (forward) { + parameterModel.setName(this.newName); + } else { + parameterModel.setName(this.oldName); + } } } diff --git a/core/events/events_procedure_rename.ts b/core/events/events_procedure_rename.ts index 59a51964b..19c696a21 100644 --- a/core/events/events_procedure_rename.ts +++ b/core/events/events_procedure_rename.ts @@ -4,21 +4,42 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IProcedureModel} from '../interfaces/i_procedure_model.js'; +import type {IProcedureModel} from '../interfaces/i_procedure_model.js'; import * as registry from '../registry.js'; -import {Workspace} from '../workspace.js'; +import type {Workspace} from '../workspace.js'; import {ProcedureBase} from './events_procedure_base.js'; import * as eventUtils from './utils.js'; - +/** + * Represents a procedure being renamed. + */ export class ProcedureRename extends ProcedureBase { + /** A string used to check the type of the event. */ type = eventUtils.PROCEDURE_RENAME; + private newName: string; constructor( workspace: Workspace, model: IProcedureModel, public readonly oldName: string) { super(workspace, model); + + this.newName = model.getName(); + } + + run(forward: boolean) { + const procedureModel = + this.getEventWorkspace_().getProcedureMap().get(this.model.getId()); + if (!procedureModel) { + throw new Error( + 'Cannot change the type of a procedure that does not exist ' + + 'in the procedure map'); + } + if (forward) { + procedureModel.setName(this.newName); + } else { + procedureModel.setName(this.oldName); + } } } diff --git a/tests/mocha/event_procedure_change_return_test.js b/tests/mocha/event_procedure_change_return_test.js index b18e5d086..0e11458d6 100644 --- a/tests/mocha/event_procedure_change_return_test.js +++ b/tests/mocha/event_procedure_change_return_test.js @@ -10,8 +10,7 @@ import {assertEventFiredShallow, assertEventNotFired, createChangeListenerSpy} f import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js'; -// TODO (#6519): Unskip. -suite.skip('Procedure Change Return Event', function() { +suite('Procedure Change Return Event', function() { setup(function() { sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); @@ -34,10 +33,13 @@ suite.skip('Procedure Change Return Event', function() { }; this.createEventToState = (procedureModel) => { - return new Blockly.Events.ProcedureChangeReturn( + const event = new Blockly.Events.ProcedureChangeReturn( this.workspace, procedureModel, - procedureModel.getReturnTypes()); + procedureModel.getReturnTypes() === DEFAULT_TYPES ? + NON_DEFAULT_TYPES : + DEFAULT_TYPES); + return event; }; }); @@ -49,7 +51,7 @@ suite.skip('Procedure Change Return Event', function() { const event = this.createEventToState(final); this.procedureMap.add(initial); - event.run(true /* forward */); + event.run(/* forward= */ true); chai.assert.equal( initial.getReturnTypes(), @@ -65,7 +67,7 @@ suite.skip('Procedure Change Return Event', function() { this.procedureMap.add(initial); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventFiredShallow( this.eventSpy, @@ -84,7 +86,7 @@ suite.skip('Procedure Change Return Event', function() { this.procedureMap.add(initial); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventNotFired( this.eventSpy, @@ -102,7 +104,7 @@ suite.skip('Procedure Change Return Event', function() { const event = this.createEventToState(final); chai.assert.throws(() => { - event.run(true /* forward */); + event.run(/* forward= */ true); }); }); }); @@ -116,7 +118,7 @@ suite.skip('Procedure Change Return Event', function() { const event = this.createEventToState(undoable); this.procedureMap.add(initial); - event.run(false /* backward */); + event.run(/* forward= */ false); chai.assert.equal( initial.getReturnTypes(), @@ -133,14 +135,14 @@ suite.skip('Procedure Change Return Event', function() { this.procedureMap.add(initial); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventFiredShallow( this.eventSpy, Blockly.Events.ProcedureChangeReturn, { model: initial, - oldTypes: DEFAULT_TYPES, + oldTypes: NON_DEFAULT_TYPES, }, this.workspace.id); }); @@ -153,7 +155,7 @@ suite.skip('Procedure Change Return Event', function() { this.procedureMap.add(initial); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventNotFired( this.eventSpy, @@ -173,7 +175,7 @@ suite.skip('Procedure Change Return Event', function() { const event = this.createEventToState(undoable); chai.assert.throws(() => { - event.run(false /* backward */); + event.run(/* forward= */ false); }); }); }); diff --git a/tests/mocha/event_procedure_create_test.js b/tests/mocha/event_procedure_create_test.js index 295d2eab2..1455d3afe 100644 --- a/tests/mocha/event_procedure_create_test.js +++ b/tests/mocha/event_procedure_create_test.js @@ -10,8 +10,7 @@ import {assertEventFiredShallow, assertEventNotFired, createChangeListenerSpy} f import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js'; -// TODO (#6519): Unskip. -suite.skip('Procedure Create Event', function() { +suite('Procedure Create Event', function() { setup(function() { sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); @@ -40,7 +39,7 @@ suite.skip('Procedure Create Event', function() { const model = this.createProcedureModel('test name', 'test id'); const event = this.createEventToState(model); - event.run(true /* forward */); + event.run(/* forward= */ true); const createdProc = this.procedureMap.get('test id'); chai.assert.isDefined(createdProc, 'Expected the procedure to exist'); @@ -59,12 +58,12 @@ suite.skip('Procedure Create Event', function() { const event = this.createEventToState(model); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventFiredShallow( this.eventSpy, Blockly.Events.ProcedureCreate, - {model: this.procedureMap.get('testid')}, + {model: this.procedureMap.get('test id')}, this.workspace.id); }); @@ -76,7 +75,7 @@ suite.skip('Procedure Create Event', function() { const event = this.createEventToState(model); this.procedureMap.add(model); - event.run(true /* forward */); + event.run(/* forward= */ true); chai.assert.equal( this.procedureMap.get('test id'), @@ -91,7 +90,7 @@ suite.skip('Procedure Create Event', function() { this.procedureMap.add(model); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventNotFired( this.eventSpy, @@ -109,7 +108,7 @@ suite.skip('Procedure Create Event', function() { const event = this.createEventToState(model); this.procedureMap.add(model); - event.run(false /* backward */); + event.run(/* forward= */ false); chai.assert.isUndefined( this.procedureMap.get('test id'), @@ -122,7 +121,7 @@ suite.skip('Procedure Create Event', function() { this.procedureMap.add(model); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventFiredShallow( this.eventSpy, @@ -131,18 +130,12 @@ suite.skip('Procedure Create Event', function() { this.workspace.id); }); - test.skip( - 'a model is not deleted if no model with a matching ID exists', - function() { - // TODO: Do we want this to throw? warn? do nothing? - }); - test('not deleting a model does not fire a delete event', function() { const model = this.createProcedureModel('test name', 'test id'); const event = this.createEventToState(model); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventNotFired( this.eventSpy, diff --git a/tests/mocha/event_procedure_delete_test.js b/tests/mocha/event_procedure_delete_test.js index a4e8f397b..20f41a191 100644 --- a/tests/mocha/event_procedure_delete_test.js +++ b/tests/mocha/event_procedure_delete_test.js @@ -10,8 +10,7 @@ import {assertEventFiredShallow, assertEventNotFired, createChangeListenerSpy} f import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js'; -// TODO (#6519): Unskip. -suite.skip('Procedure Delete Event', function() { +suite('Procedure Delete Event', function() { setup(function() { sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); @@ -44,7 +43,7 @@ suite.skip('Procedure Delete Event', function() { const event = this.createEventToState(model); this.procedureMap.add(model); - event.run(true /* forward */); + event.run(/* forward= */ true); chai.assert.isUndefined( this.procedureMap.get('test id'), @@ -57,7 +56,7 @@ suite.skip('Procedure Delete Event', function() { this.procedureMap.add(model); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventFiredShallow( this.eventSpy, @@ -65,19 +64,13 @@ suite.skip('Procedure Delete Event', function() { {model}, this.workspace.id); }); - - test( - 'a model is not deleted if if nodel with a matching ID exists', - function() { - // TODO: Figure out what we want to do here. - }); test('not deleting a model does not fire a delete event', function() { const model = this.createProcedureModel('test name', 'test id'); const event = this.createEventToState(model); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventNotFired( this.eventSpy, @@ -92,7 +85,7 @@ suite.skip('Procedure Delete Event', function() { const model = this.createProcedureModel('test name', 'test id'); const event = this.createEventToState(model); - event.run(false /* backward */); + event.run(/* forward= */ false); const createdProc = this.procedureMap.get('test id'); chai.assert.isDefined(createdProc, 'Expected the procedure to exist'); @@ -111,12 +104,12 @@ suite.skip('Procedure Delete Event', function() { const event = this.createEventToState(model); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventFiredShallow( this.eventSpy, Blockly.Events.ProcedureCreate, - {model: this.procedureMap.get('testid')}, + {model: this.procedureMap.get('test id')}, this.workspace.id); }); @@ -128,7 +121,7 @@ suite.skip('Procedure Delete Event', function() { const event = this.createEventToState(model); this.procedureMap.add(model); - event.run(false /* backward */); + event.run(/* forward= */ false); chai.assert.equal( this.procedureMap.get('test id'), @@ -143,7 +136,7 @@ suite.skip('Procedure Delete Event', function() { this.procedureMap.add(model); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventNotFired( this.eventSpy, diff --git a/tests/mocha/event_procedure_enable_test.js b/tests/mocha/event_procedure_enable_test.js index 30c32b7ea..9617d4c7d 100644 --- a/tests/mocha/event_procedure_enable_test.js +++ b/tests/mocha/event_procedure_enable_test.js @@ -10,8 +10,7 @@ import {assertEventFiredShallow, assertEventNotFired, createChangeListenerSpy} f import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js'; -// TODO (#6519): Unskip. -suite.skip('Procedure Enable Event', function() { +suite('Procedure Enable Event', function() { setup(function() { sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); @@ -27,11 +26,12 @@ suite.skip('Procedure Enable Event', function() { setup(function() { this.createProcedureModel = (id) => { return new Blockly.procedures.ObservableProcedureModel( - this.workspace, 'test name'); + this.workspace, 'test name', id); }; this.createEventToState = (procedureModel) => { - return new Blockly.Events.ProcedureEnable(procedureModel); + return new Blockly.Events.ProcedureEnable( + this.workspace, procedureModel); }; }); @@ -43,7 +43,7 @@ suite.skip('Procedure Enable Event', function() { const event = this.createEventToState(final); this.procedureMap.add(initial); - event.run(true /* forward */); + event.run(/* forward= */ true); chai.assert.equal( initial.getEnabled(), @@ -59,7 +59,7 @@ suite.skip('Procedure Enable Event', function() { this.procedureMap.add(initial); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventFiredShallow( this.eventSpy, @@ -75,7 +75,7 @@ suite.skip('Procedure Enable Event', function() { this.procedureMap.add(initial); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventNotFired( this.eventSpy, @@ -92,7 +92,7 @@ suite.skip('Procedure Enable Event', function() { const event = this.createEventToState(final); chai.assert.throws(() => { - event.run(true /* forward */); + event.run(/* forward= */ true); }); }); }); @@ -108,7 +108,7 @@ suite.skip('Procedure Enable Event', function() { const event = this.createEventToState(undoable); this.procedureMap.add(initial); - event.run(false /* backward */); + event.run(/* forward= */ false); chai.assert.equal( initial.getEnabled(), @@ -127,7 +127,7 @@ suite.skip('Procedure Enable Event', function() { this.procedureMap.add(initial); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventFiredShallow( this.eventSpy, @@ -146,7 +146,7 @@ suite.skip('Procedure Enable Event', function() { this.procedureMap.add(initial); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventNotFired( this.eventSpy, @@ -167,7 +167,7 @@ suite.skip('Procedure Enable Event', function() { const event = this.createEventToState(undoable); chai.assert.throws(() => { - event.run(false /* backward */); + event.run(/* forward= */ false); }); }); }); diff --git a/tests/mocha/event_procedure_parameter_create_test.js b/tests/mocha/event_procedure_parameter_create_test.js index 92348cf42..88c214d24 100644 --- a/tests/mocha/event_procedure_parameter_create_test.js +++ b/tests/mocha/event_procedure_parameter_create_test.js @@ -10,8 +10,7 @@ import {assertEventFiredShallow, assertEventNotFired, createChangeListenerSpy} f import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js'; -// TODO (#6519): Unskip. -suite.skip('Procedure Parameter Create Event', function() { +suite('Procedure Parameter Create Event', function() { setup(function() { sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); @@ -42,7 +41,7 @@ suite.skip('Procedure Parameter Create Event', function() { this.createEventToState = (procedureModel, parameterModel) => { return new Blockly.Events.ProcedureParameterCreate( - this.workspace, procedureModel, parameterModel); + this.workspace, procedureModel, parameterModel, 0); }; }); @@ -55,7 +54,7 @@ suite.skip('Procedure Parameter Create Event', function() { const actualProc = this.createProcedureModel('test name', 'test id'); this.procedureMap.add(actualProc); - event.run(true /* forward */); + event.run(/* forward= */ true); const createdParam = actualProc.getParameter(0); chai.assert.isDefined(createdParam, 'Expected the parameter to exist'); @@ -78,7 +77,7 @@ suite.skip('Procedure Parameter Create Event', function() { this.procedureMap.add(actualProc); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventFiredShallow( this.eventSpy, @@ -102,7 +101,7 @@ suite.skip('Procedure Parameter Create Event', function() { this.procedureMap.add(modelProc); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); const actualProc = this.procedureMap.get('test id'); chai.assert.equal( @@ -125,7 +124,7 @@ suite.skip('Procedure Parameter Create Event', function() { this.procedureMap.add(modelProc); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventNotFired( this.eventSpy, @@ -143,7 +142,7 @@ suite.skip('Procedure Parameter Create Event', function() { const event = this.createEventToState(proc, param); this.procedureMap.add(proc); - event.run(false /* backward */); + event.run(/* forward= */ false); chai.assert.isUndefined( proc.getParameter(0), @@ -158,7 +157,7 @@ suite.skip('Procedure Parameter Create Event', function() { this.procedureMap.add(proc); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventFiredShallow( this.eventSpy, @@ -187,7 +186,7 @@ suite.skip('Procedure Parameter Create Event', function() { proc.deleteParameter(0); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventNotFired( this.eventSpy, diff --git a/tests/mocha/event_procedure_parameter_delete_test.js b/tests/mocha/event_procedure_parameter_delete_test.js index d3dcc9ca0..16cebd904 100644 --- a/tests/mocha/event_procedure_parameter_delete_test.js +++ b/tests/mocha/event_procedure_parameter_delete_test.js @@ -10,8 +10,7 @@ import {assertEventFiredShallow, assertEventNotFired, createChangeListenerSpy} f import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js'; -// TODO (#6519): Unskip. -suite.skip('Procedure Parameter Delete Event', function() { +suite('Procedure Parameter Delete Event', function() { setup(function() { sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); @@ -41,8 +40,8 @@ suite.skip('Procedure Parameter Delete Event', function() { }; this.createEventToState = (procedureModel, parameterModel) => { - return new Blockly.Events.ProcedureParameterCreate( - this.workspace, procedureModel, parameterModel); + return new Blockly.Events.ProcedureParameterDelete( + this.workspace, procedureModel, parameterModel, 0); }; }); @@ -54,7 +53,7 @@ suite.skip('Procedure Parameter Delete Event', function() { const event = this.createEventToState(proc, param); this.procedureMap.add(proc); - event.run(true /* forward */); + event.run(/* forward= */ true); chai.assert.isUndefined( proc.getParameter(0), @@ -69,7 +68,7 @@ suite.skip('Procedure Parameter Delete Event', function() { this.procedureMap.add(proc); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventFiredShallow( this.eventSpy, @@ -98,7 +97,7 @@ suite.skip('Procedure Parameter Delete Event', function() { proc.deleteParameter(0); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventNotFired( this.eventSpy, @@ -117,7 +116,7 @@ suite.skip('Procedure Parameter Delete Event', function() { const actualProc = this.createProcedureModel('test name', 'test id'); this.procedureMap.add(actualProc); - event.run(true /* forward */); + event.run(/* forward= */ false); const createdParam = actualProc.getParameter(0); chai.assert.isDefined(createdParam, 'Expected the parameter to exist'); @@ -140,7 +139,7 @@ suite.skip('Procedure Parameter Delete Event', function() { this.procedureMap.add(actualProc); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ false); assertEventFiredShallow( this.eventSpy, @@ -164,7 +163,7 @@ suite.skip('Procedure Parameter Delete Event', function() { this.procedureMap.add(modelProc); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ false); const actualProc = this.procedureMap.get('test id'); chai.assert.equal( @@ -187,7 +186,7 @@ suite.skip('Procedure Parameter Delete Event', function() { this.procedureMap.add(modelProc); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ false); assertEventNotFired( this.eventSpy, diff --git a/tests/mocha/event_procedure_parameter_rename_test.js b/tests/mocha/event_procedure_parameter_rename_test.js index 7bbaa2f3a..7a7de0457 100644 --- a/tests/mocha/event_procedure_parameter_rename_test.js +++ b/tests/mocha/event_procedure_parameter_rename_test.js @@ -10,8 +10,7 @@ import {assertEventFiredShallow, assertEventNotFired, createChangeListenerSpy} f import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js'; -// TODO (#6519): Unskip. -suite.skip('Procedure Parameter Rename Event', function() { +suite('Procedure Parameter Rename Event', function() { setup(function() { sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); @@ -38,11 +37,13 @@ suite.skip('Procedure Parameter Rename Event', function() { }; this.createEventToState = (procedureModel, parameterModel) => { - return new Blockly.Events.ProcedureRename( + return new Blockly.Events.ProcedureParameterRename( this.workspace, procedureModel, parameterModel, - parameterModel.getName()); + parameterModel.getName() === DEFAULT_NAME ? + NON_DEFAULT_NAME : + DEFAULT_NAME); }; }); @@ -56,7 +57,7 @@ suite.skip('Procedure Parameter Rename Event', function() { const event = this.createEventToState(finalProc, finalParam); this.procedureMap.add(initialProc); - event.run(true /* forward */); + event.run(/* forward= */ true); chai.assert.equal( initialParam.getName(), @@ -74,7 +75,7 @@ suite.skip('Procedure Parameter Rename Event', function() { this.procedureMap.add(initialProc); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventFiredShallow( this.eventSpy, @@ -96,7 +97,7 @@ suite.skip('Procedure Parameter Rename Event', function() { this.procedureMap.add(initialProc); this.eventSpy.resetHistory(); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventNotFired( this.eventSpy, @@ -116,7 +117,7 @@ suite.skip('Procedure Parameter Rename Event', function() { const event = this.createEventToState(finalProc, finalParam); chai.assert.throws(() => { - event.run(true /* forward */); + event.run(/* forward= */ true); }); }); }); @@ -133,7 +134,7 @@ suite.skip('Procedure Parameter Rename Event', function() { this.procedureMap.add(initialProc); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); chai.assert.equal( initialParam.getName(), @@ -152,7 +153,7 @@ suite.skip('Procedure Parameter Rename Event', function() { this.procedureMap.add(initialProc); this.eventSpy.resetHistory(); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventFiredShallow( @@ -175,7 +176,7 @@ suite.skip('Procedure Parameter Rename Event', function() { const event = this.createEventToState(undoableProc, undoableParam); this.procedureMap.add(initialProc); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventNotFired( @@ -195,10 +196,9 @@ suite.skip('Procedure Parameter Rename Event', function() { initialParam.setName(NON_DEFAULT_NAME); undoableParam.setName(NON_DEFAULT_NAME); const event = this.createEventToState(undoableProc, undoableParam); - this.procedureMap.add(initialProc); chai.assert.throws(() => { - event.run(false /* backward */); + event.run(/* forward= */ false); }); }); }); diff --git a/tests/mocha/event_procedure_rename_test.js b/tests/mocha/event_procedure_rename_test.js index b034438f7..162e216eb 100644 --- a/tests/mocha/event_procedure_rename_test.js +++ b/tests/mocha/event_procedure_rename_test.js @@ -10,8 +10,7 @@ import {assertEventFiredShallow, assertEventNotFired, createChangeListenerSpy} f import {sharedTestSetup, sharedTestTeardown} from './test_helpers/setup_teardown.js'; -// TODO (#6519): Unskip. -suite.skip('Procedure Rename Event', function() { +suite('Procedure Rename Event', function() { setup(function() { sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); @@ -37,7 +36,9 @@ suite.skip('Procedure Rename Event', function() { return new Blockly.Events.ProcedureRename( this.workspace, procedureModel, - procedureModel.getName()); + procedureModel.getName() === DEFAULT_NAME ? + NON_DEFAULT_NAME : + DEFAULT_NAME); }; }); @@ -49,7 +50,7 @@ suite.skip('Procedure Rename Event', function() { const event = this.createEventToState(final); this.procedureMap.add(initial); - event.run(true /* forward */); + event.run(/* forward= */ true); chai.assert.equal( initial.getName(), @@ -64,7 +65,7 @@ suite.skip('Procedure Rename Event', function() { const event = this.createEventToState(final); this.procedureMap.add(initial); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventFiredShallow( this.eventSpy, @@ -79,7 +80,7 @@ suite.skip('Procedure Rename Event', function() { const event = this.createEventToState(final); this.procedureMap.add(initial); - event.run(true /* forward */); + event.run(/* forward= */ true); assertEventNotFired( this.eventSpy, @@ -97,7 +98,7 @@ suite.skip('Procedure Rename Event', function() { const event = this.createEventToState(final); chai.assert.throws(() => { - event.run(true /* forward */); + event.run(/* forward= */ true); }); }); }); @@ -111,7 +112,7 @@ suite.skip('Procedure Rename Event', function() { const event = this.createEventToState(undoable); this.procedureMap.add(initial); - event.run(false /* backward */); + event.run(/* forward= */ false); chai.assert.equal( initial.getName(), @@ -127,7 +128,7 @@ suite.skip('Procedure Rename Event', function() { const event = this.createEventToState(undoable); this.procedureMap.add(initial); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventFiredShallow( this.eventSpy, @@ -143,7 +144,7 @@ suite.skip('Procedure Rename Event', function() { const event = this.createEventToState(undoable); this.procedureMap.add(initial); - event.run(false /* backward */); + event.run(/* forward= */ false); assertEventNotFired( this.eventSpy, @@ -162,7 +163,7 @@ suite.skip('Procedure Rename Event', function() { const event = this.createEventToState(undoable); chai.assert.throws(() => { - event.run(false /* backward */); + event.run(/* forward= */ false); }); }); });