Skip to content

Instantly share code, notes, and snippets.

View davidbarral's full-sized avatar

David Barral davidbarral

View GitHub Profile
@davidbarral
davidbarral / test.js
Created June 14, 2022 08:07
DI middle 1
const updateUserPreference = require("./use-cases/update-user-preference.js");
it("updates the user preference", () => {
const mockUpdate = jest.fn();
updateUserPreference({ key: "someKey", value: "someValue", { user: { update: mockUpdate } });
expect(mockUpdate).toHaveBeenCalledWith(/* the updatedUser */);
});
@davidbarral
davidbarral / client.js
Created June 14, 2022 08:05
DI middle 1
const updateUserPreference = require("./use-cases/update-user-preference.js");
updateUserPreference({ key: "someKey", value: "someValue" })
const userRepo = require("./repos/user.js");
const defaultRepositories = () => ({ user: userRepo() });
const updateUserPreference = ({ key, value, repositories = defaultRepositories() }) => {
// Do stuff and updade the user.
repositories.user.update(updatedUser);
}
@davidbarral
davidbarral / test.js
Created June 14, 2022 07:56
DI Pragmatic 3
const mockUpdate = jest.fn();
jest.mock("./repos/user.js", () => () => ({
update: mockUpdate;
}));
jest.beforeEach(() => jest.restoreAllMocks());
const updateUserPreference = require("./use-cases/update-user-preference.js");
@davidbarral
davidbarral / client.js
Created June 14, 2022 07:54
DI Pragmatic 2
const updateUserPreference = require("./use-cases/update-user-preference.js");
updateUserPreference({ key: "someKey", value: "someValue" });
const userRepo = require("./repos/user.js");
const updateUserPreference = ({ key, value }) => {
// Do stuff and updade the user.
const repo = userRepo();
repo.update(updatedUser);
}
@davidbarral
davidbarral / test.js
Last active June 13, 2022 20:00
DI Purist 3
const updateUserPreference = require("./use-cases/update-user-preference.js");
it("updates the user preference", () => {
const mockUpdate = jest.fn();
const mockRepo = { update: mockUpdate };
updateUserPreference({ key: "someKey", value: "someValue", { user: mockRepo });
expect(mockUpdate).toHaveBeenCalledWith(/* the updatedUser */);
});
@davidbarral
davidbarral / client.js
Last active June 18, 2022 15:57
DI Purist 2
const userRepo = require("./repos/user.js");
const updateUserPreference = require("./use-cases/update-user-preference.js");
const user = userRepo();
updateUserPreference({ key: "someKey", value: "someValue", { user });
const updateUserPreference = ({ key, value, repositories }) => {
// Do stuff and get an updated user
repositories.user.update(updatedUser);
}
@davidbarral
davidbarral / cancelable.js
Last active September 30, 2019 18:34
Lazy promises
Promise.cancelable = pendingPromise => {
let lazyCb = null;
let settled = false;
let canceled = false;
const promise = Promise.resolve(pendingPromise).then(() => {
settled = true;
if (canceled) {
return;
}