1
1
import { assert , expect } from 'chai' ;
2
2
import 'mocha' ;
3
+ import ConfigManager from '../config-manager' ;
4
+ import ConfigWizard from '../config-wizard' ;
3
5
import TaskManager from '../task-manager' ;
4
6
import PluginManager , { ERRORS } from './index' ;
5
7
6
8
describe ( 'PluginManager' , ( ) => {
7
- const taskManager = TaskManager ( ) ;
8
- const validPlugin = {
9
- install : ( ) => true ,
10
- } ;
9
+ let taskManager ;
10
+ let configWizard ;
11
+ let validPlugin ;
12
+
13
+ beforeEach ( async ( ) => {
14
+ taskManager = TaskManager ( {
15
+ hooks : [ 'before' , 'midway' , 'after' ] ,
16
+ } ) ;
17
+ configWizard = ConfigWizard ( await ConfigManager ( ) ) ;
18
+ validPlugin = { install : ( ) => true } ;
19
+ } ) ;
20
+
11
21
12
22
it ( 'instantiates' , ( ) => {
13
- const pluginManager = PluginManager ( taskManager ) ;
23
+ const pluginManager = PluginManager ( taskManager , configWizard ) ;
14
24
expect ( pluginManager ) . to . be . an ( 'object' )
15
- . to . contain . keys ( 'use' , 'validate' ) ;
25
+ . to . contain . keys ( 'use' ) ;
16
26
} ) ;
17
27
18
28
@@ -23,24 +33,54 @@ describe('PluginManager', () => {
23
33
} ) ;
24
34
25
35
26
- it ( 'throws if plugin is undefined or not an object' , ( ) => {
27
- assert . throws ( ( ) => PluginManager ( taskManager ) . validate ( undefined ) , ERRORS . PLUGIN_INVALID ) ;
36
+ it ( 'throws if not passed ConfigWizard instance' , ( ) => {
37
+ assert . throws ( ( ) => PluginManager ( taskManager ) , ERRORS . NO_CONFIG_WIZARD ) ;
38
+ assert . throws ( ( ) => PluginManager ( taskManager , { } ) , ERRORS . NO_CONFIG_WIZARD ) ;
39
+ assert . throws ( ( ) => PluginManager ( taskManager , 1 ) , ERRORS . NO_CONFIG_WIZARD ) ;
28
40
} ) ;
29
41
30
42
31
- it ( 'throws if plugin doesn\'t have .install() method' , ( ) => {
32
- assert . throws ( ( ) => PluginManager ( taskManager ) . validate ( { } ) , ERRORS . PLUGIN_NOT_INSTALLABLE ) ;
43
+ it ( 'calls taskManager.getSubscribers() method if plugin is valid' , ( ) => {
44
+ let called = false ;
45
+
46
+ const taskManagerStub = {
47
+ add : ( ) => undefined ,
48
+ getSubscribers : ( ) => called = true ,
49
+ run : ( ) => undefined ,
50
+ } ;
51
+ const pluginManager = PluginManager ( taskManagerStub , configWizard ) ;
52
+ pluginManager . use ( validPlugin ) ;
53
+ expect ( called ) . to . be . true ;
33
54
} ) ;
34
55
35
56
36
- it ( 'calls taskManager.add () method if plugin is valid' , ( ) => {
57
+ it ( 'calls configWizard.getSubscriber () method if plugin is valid' , ( ) => {
37
58
let called = false ;
38
- const pluginManager = PluginManager ( {
39
- add : ( ) => called = true ,
40
- run : ( ) => undefined ,
41
- } ) ;
42
59
60
+ const configManagerStub = {
61
+ addQuestionnaire : ( ) => undefined ,
62
+ getSubscriber : ( ) => called = true ,
63
+ start : ( ) => undefined ,
64
+ } ;
65
+
66
+ const pluginManager = PluginManager ( taskManager , configManagerStub ) ;
43
67
pluginManager . use ( validPlugin ) ;
44
68
expect ( called ) . to . be . true ;
45
69
} ) ;
70
+
71
+
72
+ it ( 'passes taskSubscribers and configSubscriber arguments to plugin.install() method' , ( ) => {
73
+ const pluginStub = {
74
+ install ( taskSubscribers , configSubscriber ) {
75
+ expect ( taskSubscribers )
76
+ . to . be . be . an ( 'object' )
77
+ . to . not . be . empty ;
78
+ expect ( configSubscriber )
79
+ . to . be . be . a ( 'function' ) ;
80
+ } ,
81
+ } ;
82
+
83
+ const pluginManager = PluginManager ( taskManager , configWizard ) ;
84
+ pluginManager . use ( pluginStub ) ;
85
+ } ) ;
46
86
} ) ;
0 commit comments