Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

B7161682765: Remove event as a function callback #154

Merged
merged 8 commits into from Mar 18, 2024
57 changes: 1 addition & 56 deletions src/event.js
Expand Up @@ -9,35 +9,11 @@
export default function event(spec, my) {
my ||= {};

// DEPRECATED: use that.register() instead.
function that(callback) {
// eslint-disable-next-line no-console
console.warn(
"Using an event as a function is deprecated. Send register() to the event instead.",
);

return that.register(callback);
}

let bindings = [];

// #### Public API

/**
* Binds callback to event. The callback will be invoked whenever the event is fired.
*
* @deprecated use that.register() instead.
* @param callback {function}
* @returns {eventBinding}
*/
that.on = function (callback) {
// eslint-disable-next-line no-console
console.warn(
"Sending on() to an event is deprecated. Send register() instead.",
);

return that.register(callback);
};
let that = {};

/**
* Binds callback to event. The callback will be invoked
Expand Down Expand Up @@ -121,22 +97,6 @@ export default function event(spec, my) {
return that;
}

/**
* Like on() except callback will only be fired once
*
* @deprecated use registerOnce() instead
* @param callback {function}
* @returns {eventBinding}
*/
that.onceOn = function (callback) {
// eslint-disable-next-line no-console
console.warn(
"Sending onceOn() to an event is deprecated. Send registerOnce() instead.",
);

return that.registerOnce(callback);
};

/**
* Like on() except callback will only be fired once
*
Expand All @@ -155,21 +115,6 @@ export default function event(spec, my) {
return onceBinding;
};

/**
* Removed "binding" attached to event.
* @deprecated use unregister() instead
* @param name {String} Name of event
* @param binding {eventBinding} Binding
*/
that.off = function (binding) {
// eslint-disable-next-line no-console
console.warn(
"Sending off() to an event is deprecated. Send unregister() instead.",
);

that.unregister(binding);
};

/**
* Removed "binding" attached to event.
* @param name {String} Name of event
Expand Down
48 changes: 0 additions & 48 deletions src/eventCategory.js
Expand Up @@ -33,22 +33,6 @@ export default function eventCategory() {
return addEvent(event(), name);
};

/**
* Binds callback to a named event. The callback will be invoked whenever the event is fired.
*
* @deprecated use register() instead
* @param name {String}
* @param callback {function}
*/
that.on = function (name, callback) {
// eslint-disable-next-line no-console
console.warn(
"Sending on() to a category is deprecated. Send register() instead.",
);

return that.register(name, callback);
};

/**
* Binds callback to a named event. The callback will be invoked whenever the event is fired.
*
Expand All @@ -59,21 +43,6 @@ export default function eventCategory() {
return ensureEventHolderFor(name).register(callback);
};

/**
* Removed "binding" attached to event.
* @deprecated use unregister() instead
* @param name {String} Name of event
* @param binding {eventBinding} Binding
*/
that.off = function (name, binding) {
// eslint-disable-next-line no-console
console.warn(
"Sending off() to a category is deprecated. Send unregister() instead.",
);

return that.unregister(name, binding);
};

/**
* Removed "binding" attached to event.
* @param name {String} Name of event
Expand All @@ -83,23 +52,6 @@ export default function eventCategory() {
return ensureEventHolderFor(name).unregister(binding);
};

/**
* Like on() except callback will only be fired once
*
* @deprecated use registerOnce() instead
* @param name
* @param callback
* @returns {*}
*/
that.onceOn = function (name, callback) {
// eslint-disable-next-line no-console
console.warn(
"Sending onceOn() to a category is deprecated. Send registerOnce() instead.",
);

return that.registerOnce(name, callback);
};

/**
* Like on() except callback will only be fired once
*
Expand Down
110 changes: 3 additions & 107 deletions test/events.test.js
Expand Up @@ -158,8 +158,8 @@ describe("events", () => {
let anotherEvent = someEvents.createEvent();

// Assert: events created
expect(anEvent.on).toBeTruthy();
expect(anotherEvent.on).toBeTruthy();
expect(anEvent.register).toBeTruthy();
expect(anotherEvent.register).toBeTruthy();
});

it("Event Category can keep named events", () => {
Expand All @@ -168,7 +168,7 @@ describe("events", () => {
let anEvent = someEvents.createEvent("namedEvent");

// Assert: events created
expect(anEvent.on).toBeTruthy();
expect(anEvent.register).toBeTruthy();
});

it("Event Category can bind callback to named event using register", () => {
Expand Down Expand Up @@ -261,107 +261,3 @@ describe("events", () => {
expect(triggered).toBeTruthy();
});
});

describe("deprecated", () => {
/* eslint-disable no-console */
let originalConsoleWarn;

beforeEach(() => {
console.warn = jasmine.createSpy("console.warn");
});

beforeAll(() => {
originalConsoleWarn = console.warn;
});

afterAll(() => {
console.warn = originalConsoleWarn;
});

it("on() method delegates to register", () => {
// Arrange: an event
let anEvent = event();
let spy = jasmine.createSpy("register");

anEvent.register = spy;
anEvent.on("foo");

expect(spy).toHaveBeenCalledWith("foo");
expect(console.warn).toHaveBeenCalled();
});

it("'using an event as a function' delegates to register", () => {
// Arrange: an event
let anEvent = event();
let spy = jasmine.createSpy("register");

anEvent.register = spy;
anEvent("foo");

expect(spy).toHaveBeenCalledWith("foo");
expect(console.warn).toHaveBeenCalled();
});

it("off() method delegates to unregister", () => {
// Arrange: an event
let anEvent = event();
let spy = jasmine.createSpy("unregister");

anEvent.unregister = spy;
anEvent.off("foo");

expect(spy).toHaveBeenCalledWith("foo");
expect(console.warn).toHaveBeenCalled();
});

it("onceOn() method delegates to registerOnce", () => {
// Arrange: an event
let anEvent = event();
let spy = jasmine.createSpy("registerOnce");

anEvent.registerOnce = spy;
anEvent.onceOn(spy);

expect(spy).toHaveBeenCalled();
expect(console.warn).toHaveBeenCalled();
});

it("on() category method delegates to register", () => {
// Arrange: an event
let someEvents = eventCategory();
let spy = jasmine.createSpy("register");

someEvents.register = spy;

someEvents.on("namedEvent", "something else");

expect(spy).toHaveBeenCalledWith("namedEvent", "something else");
expect(console.warn).toHaveBeenCalled();
});

it("off() category method delegates to unregister", () => {
// Arrange: an event
let someEvents = eventCategory();
let spy = jasmine.createSpy("unregister");

someEvents.unregister = spy;

someEvents.off("namedEvent", "something else");

expect(spy).toHaveBeenCalledWith("namedEvent", "something else");
expect(console.warn).toHaveBeenCalled();
});

it("onceOn() category method delegates to registerOnce", () => {
// Arrange: an event
let someEvents = eventCategory();
let spy = jasmine.createSpy("registerOnce");

someEvents.registerOnce = spy;

someEvents.onceOn("namedEvent", "something else");

expect(spy).toHaveBeenCalledWith("namedEvent", "something else");
expect(console.warn).toHaveBeenCalled();
});
});