Skip to content

Commit bec4ac7

Browse files
committed
Feature: Add the ability to ignore services
There are situations in that the user may temporarily want to ignore some services; this feature allows them to do this by simply adding them as an array and putting it as the third parameter of the loadServices method.
1 parent 275eda5 commit bec4ac7

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

src/service-broker.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -740,19 +740,31 @@ class ServiceBroker {
740740
/**
741741
* Load services from a folder
742742
*
743-
* @param {string} [folder="./services"] Folder of services
743+
* @param {string} [folder="./services"] Folder of services
744744
* @param {string} [fileMask="**\/*.service.js"] Service filename mask
745-
* @returns {Number} Number of found services
745+
* @param {array<string>} [excludedFiles] Excluded files
746+
* @returns {Number} Number of found services
746747
*
747748
* @memberof ServiceBroker
748749
*/
749-
loadServices(folder = "./services", fileMask = "**/*.service.js") {
750+
loadServices(folder = "./services", fileMask = "**/*.service.js", excludedFiles) {
750751
this.logger.debug(`Search services in '${folder}/${fileMask}'...`);
751752

752753
let serviceFiles;
753754

754-
if (Array.isArray(fileMask)) serviceFiles = fileMask.map(f => path.join(folder, f));
755-
else serviceFiles = glob.sync(path.join(folder, fileMask));
755+
if (Array.isArray(fileMask)) {
756+
serviceFiles = fileMask.map(f => path.join(folder, f));
757+
} else {
758+
if (excludedFiles) {
759+
let ignoredFiles = [];
760+
excludedFiles.forEach(excludedFile => {
761+
ignoredFiles.push(path.join(folder, excludedFile));
762+
})
763+
serviceFiles = glob.sync(path.join(folder, fileMask), { ignore: ignoredFiles });
764+
} else {
765+
serviceFiles = glob.sync(path.join(folder, fileMask));
766+
}
767+
}
756768

757769
if (serviceFiles) serviceFiles.forEach(filename => this.loadService(filename));
758770

test/unit/service-broker.spec.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1159,14 +1159,33 @@ describe("Test loadServices", () => {
11591159
expect(broker.loadService).toHaveBeenCalledWith("test/services/greeter.es6.service.js");
11601160
});
11611161

1162-
it("should load 1 services", () => {
1162+
it("should load 1 service", () => {
11631163
broker.loadService.mockClear();
11641164
const count = broker.loadServices("./test/services", "users.*.js");
11651165
expect(count).toBe(1);
11661166
expect(broker.loadService).toHaveBeenCalledTimes(1);
11671167
expect(broker.loadService).toHaveBeenCalledWith("test/services/users.service.js");
11681168
});
11691169

1170+
it("should ignore 1 service and load 3 services", () => {
1171+
broker.loadService.mockClear();
1172+
const count = broker.loadServices("./test/services", "*.service.js", ["math.service.js"]);
1173+
expect(count).toBe(3);
1174+
expect(broker.loadService).toHaveBeenCalledTimes(3);
1175+
expect(broker.loadService).toHaveBeenCalledWith("test/services/users.service.js");
1176+
expect(broker.loadService).toHaveBeenCalledWith("test/services/posts.service.js");
1177+
expect(broker.loadService).toHaveBeenCalledWith("test/services/greeter.es6.service.js");
1178+
});
1179+
1180+
it("should ignore 2 services and load 2 services", () => {
1181+
broker.loadService.mockClear();
1182+
const count = broker.loadServices("./test/services", "*.service.js", ["math.service.js", "users.service.js"]);
1183+
expect(count).toBe(2);
1184+
expect(broker.loadService).toHaveBeenCalledTimes(2);
1185+
expect(broker.loadService).toHaveBeenCalledWith("test/services/posts.service.js");
1186+
expect(broker.loadService).toHaveBeenCalledWith("test/services/greeter.es6.service.js");
1187+
});
1188+
11701189
it("should load 0 services", () => {
11711190
broker.loadService.mockClear();
11721191
const count = broker.loadServices();

0 commit comments

Comments
 (0)