@@ -4,62 +4,50 @@ var httpMock = require('./httpMock'),
4
4
path = require ( 'path' ) ,
5
5
defaultConfig = require ( './defaultConfig' ) ;
6
6
7
- function readDataModule ( mockDirectory , mock ) {
8
- return require ( path . join ( mockDirectory , mock ) ) ;
9
- }
10
-
11
- function getDefaultKeys ( mocksConfig ) {
12
- return mocksConfig . default && mocksConfig . default . length > 0 ? mocksConfig . default : [ ] ;
13
- }
14
-
15
- function readModuleConfig ( propertyName ) {
16
- return module . exports . config [ propertyName ] || defaultConfig . moduleConfig [ propertyName ] ;
17
- }
18
-
19
- function getModuleConfig ( ) {
20
- var moduleConfig = { } ;
7
+ function getConfig ( ) {
8
+ var config = defaultConfig ;
21
9
22
10
if ( module . exports . config ) {
23
- moduleConfig . rootDirectory = readModuleConfig ( 'rootDirectory' ) ;
24
- moduleConfig . protractorConfig = readModuleConfig ( 'protractorConfig' ) ;
25
- } else {
26
- moduleConfig = defaultConfig . moduleConfig ;
11
+ config . rootDirectory = module . exports . config [ 'rootDirectory' ] || config . module . rootDirectory ;
27
12
}
28
13
29
- return moduleConfig ;
30
- }
14
+ var protractorConfigFile = path . join ( config . rootDirectory , module . exports . config [ 'protractorConfig' ] || config . protractorConfig ) ;
15
+ var protractorConfig = require ( protractorConfigFile ) . config ;
31
16
32
- function getMocksConfig ( moduleConfig ) {
33
- var protractorConfigFile = path . join ( moduleConfig . rootDirectory , moduleConfig . protractorConfig ) ;
34
- var mocksConfig = require ( protractorConfigFile ) . config . mocks ;
17
+ config . mocks = protractorConfig . mocks || defaultConfig . mocks ;
18
+ // TODO: add validation check
19
+ config . mocks . default = config . mocks . default || [ ] ;
35
20
36
- if ( ! mocksConfig ) {
37
- mocksConfig = defaultConfig . mocksConfig ;
38
- }
21
+ config . plugins = protractorConfig . httpMockPlugins || defaultConfig . plugins ;
22
+ // TODO: add validation check
23
+ config . plugins . default = config . plugins . default || [ ] ;
39
24
40
- return mocksConfig ;
25
+ return config ;
41
26
}
42
27
43
- function getProtractorInstance ( ) {
44
- return protractor . getInstance ? protractor . getInstance ( ) : browser ;
28
+ function readMockFile ( mockDirectory , mock ) {
29
+ return require ( path . join ( mockDirectory , mock ) ) ;
45
30
}
46
31
47
- module . exports = function ( mocks , skipDefaults ) {
32
+ function getDefaultKeys ( mocksConfig ) {
33
+ return mocksConfig . default && mocksConfig . default . length > 0 ? mocksConfig . default : [ ] ;
34
+ }
35
+
36
+ function buildMocks ( mocks , skipDefaults ) {
48
37
var data = [ ] ,
49
- dataModule ,
50
- moduleConfig = getModuleConfig ( ) ,
51
- ptor = getProtractorInstance ( ) ,
52
- mocksConfig = getMocksConfig ( moduleConfig ) ,
53
- mockDirectory = path . join ( moduleConfig . rootDirectory , mocksConfig . dir ) ;
38
+ config = getConfig ( ) ,
39
+ mockDirectory = path . join ( config . rootDirectory , config . mocks . dir ) ;
54
40
55
41
mocks = mocks || [ ] ;
56
42
57
43
if ( ! skipDefaults ) {
58
- mocks = getDefaultKeys ( mocksConfig ) . concat ( mocks ) ;
44
+ mocks = config . mocks . default . concat ( mocks ) ;
59
45
}
60
46
61
47
for ( var i = 0 ; i < mocks . length ; i ++ ) {
62
- dataModule = typeof mocks [ i ] === 'string' ? readDataModule ( mockDirectory , mocks [ i ] ) : mocks [ i ] ;
48
+ // TODO: add validation check
49
+ var dataModule = typeof mocks [ i ] === 'string' ? readMockFile ( mockDirectory , mocks [ i ] ) : mocks [ i ] ;
50
+
63
51
if ( Array . isArray ( dataModule ) ) {
64
52
data = data . concat ( dataModule ) ;
65
53
} else {
@@ -68,7 +56,38 @@ module.exports = function(mocks, skipDefaults){
68
56
69
57
}
70
58
71
- ptor . addMockModule ( 'httpMock' , httpMock ( data ) ) ;
59
+ return data ;
60
+ }
61
+
62
+ function buildPlugins ( plugins , skipDefaults ) {
63
+ var data = [ ] ,
64
+ config = getConfig ( ) ;
65
+
66
+ plugins = plugins || [ ] ;
67
+
68
+ if ( ! skipDefaults ) {
69
+ plugins = config . plugins . default . concat ( plugins ) ;
70
+ }
71
+
72
+ for ( var i = 0 ; i < plugins . length ; i ++ ) {
73
+ // TODO: add validation check
74
+ var plugin = typeof plugins [ i ] === 'string' ? require ( plugins [ i ] ) : plugins [ i ] ;
75
+ data . push ( plugin ) ;
76
+ }
77
+
78
+ return data ;
79
+ }
80
+
81
+ function getProtractorInstance ( ) {
82
+ return protractor . getInstance ? protractor . getInstance ( ) : browser ;
83
+ }
84
+
85
+ module . exports = function ( mocks , plugins , skipDefaults ) {
86
+ var mocks = buildMocks ( mocks , skipDefaults ) ,
87
+ plugins = buildPlugins ( plugins ) ;
88
+
89
+ var ptor = getProtractorInstance ( ) ;
90
+ ptor . addMockModule ( 'httpMock' , httpMock ( mocks , plugins ) ) ;
72
91
} ;
73
92
74
93
module . exports . teardown = function ( ) {
@@ -106,4 +125,4 @@ module.exports.remove = function(mocks){
106
125
var callback = arguments [ arguments . length - 1 ]
107
126
callback ( JSON . stringify ( true ) ) ;
108
127
} , mocks ) ;
109
- } ;
128
+ } ;
0 commit comments