feat: add running procedure events (#6650)

* chore: fixup procedure change event tests

* feat: add running procedure change return events

* fixup change return

* feat: add running the procedure rename event

* feat: add running procedure enable events

* feat: add running parameter rename events

* feat: add running procedure create events

* feat: add running procedure delete events

* feat: add running parameter create events

* feat: add running procedure parameter delete events

* chore: add types to all of the new procedure events

* chore: format

* chore: use type imports

* chore: fix test comments

* chore: add more inline docs
This commit is contained in:
Beka Westberg
2022-12-01 08:38:50 -08:00
committed by GitHub
parent 485bd4dddf
commit c959ce85ae
18 changed files with 355 additions and 121 deletions

View File

@@ -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;

View File

@@ -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);
}
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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 {}

View File

@@ -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(

View File

@@ -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(

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
});
});
});

View File

@@ -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,

View File

@@ -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,

View File

@@ -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);
});
});
});

View File

@@ -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,

View File

@@ -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,

View File

@@ -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);
});
});
});

View File

@@ -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);
});
});
});