Skip to content

Commit e6d7bd9

Browse files
author
Ovidiu Barabula
committed
feat(core): remove add method from task manager in favor of get subscribers method
1 parent e1eeadb commit e6d7bd9

File tree

2 files changed

+26
-39
lines changed

2 files changed

+26
-39
lines changed

src/task-manager/index.spec.ts

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ describe('TaskManager', () => {
2828
const taskManager = TaskManager();
2929
expect(taskManager)
3030
.to.be.an('object')
31-
.to.have.all.keys('add', 'run', 'hasTasks', 'getHooks', 'getTasks');
31+
.to.have.all.keys('getSubscribers', 'run', 'hasTasks', 'getHooks', 'getTasks');
3232
});
3333

3434

@@ -53,36 +53,37 @@ describe('TaskManager', () => {
5353
},
5454
};
5555

56-
taskManager.add(task);
56+
task.install(taskManager.getSubscribers());
5757
});
5858

5959

6060
it('subscribes task to hook', () => {
6161
const taskManager = TaskManager(options);
62+
const subscribers = taskManager.getSubscribers();
6263
const task = makeTask('before');
6364

64-
taskManager.add(task);
65+
task.install(subscribers);
6566

6667
expect(taskManager.getTasks().before)
6768
.to.be.an('array')
6869
.to.have.members(['before-task']);
6970
});
7071

7172

72-
it('returns true on task subscription', () => {
73-
const taskManager = TaskManager(options);
73+
it('returns true on task subscription', async () => {
7474
const task = {
75-
install(subscriptions: TaskSubscriber) {
76-
expect(subscriptions.before('before-task')).to.be.true;
75+
install(subscribers: TaskSubscriber) {
76+
expect(subscribers.before('before-task')).to.be.true;
7777
},
7878
};
79-
taskManager.add(task);
79+
const taskSubscribers = TaskManager(options).getSubscribers();
80+
task.install(taskSubscribers);
8081
});
8182

8283

8384
it('returns true when task is run', async () => {
8485
const taskManager = TaskManager(options);
85-
taskManager.add(makeTask('before'));
86+
makeTask('before').install(taskManager.getSubscribers());
8687
expect(await taskManager.run('before')).to.be.true;
8788
});
8889

@@ -95,7 +96,7 @@ describe('TaskManager', () => {
9596

9697
it('returns true if specific hook has tasks', () => {
9798
const taskManager = TaskManager(options);
98-
taskManager.add(makeTask('before'));
99+
makeTask('before').install(taskManager.getSubscribers());
99100
expect(taskManager.hasTasks('before')).to.be.true;
100101
});
101102

@@ -106,12 +107,6 @@ describe('TaskManager', () => {
106107
});
107108

108109

109-
it('throws when .add() doesn\'t receive appropriate task', () => {
110-
const taskManager = TaskManager(options);
111-
assert.throws(() => taskManager.add(undefined), ERRORS.BAD_TASK);
112-
});
113-
114-
115110
it('returns false when trying to subscribe an already subscribed task name', () => {
116111
const task1 = {
117112
install(subscriptions: TaskSubscriber) {
@@ -125,8 +120,8 @@ describe('TaskManager', () => {
125120
};
126121

127122
const taskManager = TaskManager(options);
128-
taskManager.add(task1);
129-
taskManager.add(task2);
123+
task1.install(taskManager.getSubscribers());
124+
task2.install(taskManager.getSubscribers());
130125
});
131126

132127

@@ -138,6 +133,6 @@ describe('TaskManager', () => {
138133
},
139134
};
140135
const taskManager = TaskManager(options);
141-
taskManager.add(abusingTask);
136+
abusingTask.install(taskManager.getSubscribers());
142137
});
143138
});

src/task-manager/index.ts

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
*/
77

88
import * as gulp from 'gulp';
9+
import { QuestionnaireSubscriber } from '../config-wizard';
910
import { hasNested, limitFn } from '../util/utility-functions';
1011

1112

1213
export interface Task {
1314
name?: string;
1415
description?: string;
15-
install(subscriber: TaskSubscriber): void;
16+
install(subscriber: TaskSubscriber, configSubscriber: QuestionnaireSubscriber): Promise<void>;
1617
}
1718

1819
export interface Tasks {
@@ -24,8 +25,8 @@ export interface TaskSubscriber {
2425
}
2526

2627
export interface TaskManager {
27-
add(task: Task): void;
2828
run(hook: string): Promise<boolean>;
29+
getSubscribers(): TaskSubscriber;
2930
hasTasks?(hook: string): boolean;
3031
getTasks?(): Tasks;
3132
getHooks?(): string[];
@@ -55,23 +56,6 @@ function TaskManager(options?: TaskManagerOptions): TaskManager {
5556
}
5657

5758

58-
/**
59-
* Register new task
60-
* @param task Task object
61-
*/
62-
function add(task: Task): void {
63-
if (
64-
typeof task !== 'object' ||
65-
!task.hasOwnProperty('install') ||
66-
typeof task.install !== 'function'
67-
) {
68-
throw new Error(ERRORS.BAD_TASK);
69-
}
70-
71-
task.install(Object.freeze(createSubscriptions()));
72-
}
73-
74-
7559
/**
7660
* Runs tasks associated with the passed hook
7761
* @param hook Name of the hook
@@ -114,6 +98,14 @@ function TaskManager(options?: TaskManagerOptions): TaskManager {
11498
}
11599

116100

101+
/**
102+
* Return task subscribers object
103+
*/
104+
function getSubscribers(): TaskSubscriber {
105+
return createSubscriptions();
106+
}
107+
108+
117109
function subscribe(task: string, hook: string): boolean {
118110
// Create new array for hook, if not available
119111
if (!hasNested(tasks, hook)) {
@@ -158,7 +150,7 @@ function TaskManager(options?: TaskManagerOptions): TaskManager {
158150

159151
// Creating the public API object
160152
let publicApi: TaskManager = {
161-
add,
153+
getSubscribers,
162154
run,
163155
};
164156

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy