13
13
* See the License for the specific language governing permissions and
14
14
* limitations under the License.
15
15
*/
16
+ const path = require ( 'path' ) ;
16
17
const gulp = require ( 'gulp' ) ;
17
18
const jshint = require ( 'gulp-jshint' ) ;
18
19
const mocha = require ( 'gulp-mocha' ) ;
19
20
const jsdoc = require ( 'gulp-jsdoc3' ) ;
20
21
22
+ const { parallel, series } = gulp ;
23
+
24
+ const marklogic = require ( './' ) ;
25
+ const proxy = require ( './lib/proxy-generator.js' ) ;
26
+ const testproxy = require ( './test-basic-proxy/testGenerator.js' ) ;
27
+ const testconfig = require ( './etc/test-config.js' ) ;
28
+ const basicloader = require ( './lib/basic-loader.js' ) ;
21
29
22
30
function lint ( ) {
23
31
return gulp . src ( 'lib/*' )
@@ -36,13 +44,128 @@ function test() {
36
44
}
37
45
38
46
function doc ( ) {
39
- // TODO: clear the directory first
47
+ // TODO: clear the directory first - maybe by following this recipe:
48
+ // https://github.com/gulpjs/gulp/blob/master/docs/recipes/delete-files-folder.md
40
49
const config = require ( './jsdoc.json' ) ;
41
50
return gulp . src ( [ './lib/*.js' , 'README.md' ] )
42
51
. pipe ( jsdoc ( config ) ) ;
43
52
}
44
53
54
+ let testModulesClient = null ;
55
+ function getTestModulesClient ( ) {
56
+ if ( testModulesClient === null ) {
57
+ const connectionParams = {
58
+ host : testconfig . restEvaluatorConnection . host ,
59
+ port : testconfig . restEvaluatorConnection . port ,
60
+ user : testconfig . restEvaluatorConnection . user ,
61
+ password : testconfig . restEvaluatorConnection . password ,
62
+ authType : testconfig . restEvaluatorConnection . authType ,
63
+ database : 'unittest-nodeapi-modules'
64
+ } ;
65
+ testModulesClient = marklogic . createDatabaseClient ( connectionParams ) ;
66
+ }
67
+ return testModulesClient ;
68
+ }
69
+ function getTestDocumentPermissions ( ) {
70
+ return [
71
+ { 'role-name' :'rest-reader' , capabilities :[ 'read' , 'execute' ] } ,
72
+ { 'role-name' :'rest-writer' , capabilities :[ 'update' ] }
73
+ ] ;
74
+ }
75
+
76
+ function loadProxyTestInspector ( callback ) {
77
+ const testdir = path . resolve ( 'test-basic-proxy' ) ;
78
+ const modulesdir = path . resolve ( testdir , 'ml-modules' ) ;
79
+ const filePath = path . resolve ( modulesdir , 'testInspector.sjs' ) ;
80
+ const databaseClient = getTestModulesClient ( ) ;
81
+ const documentDescriptor = {
82
+ uri : '/dbf/test/testInspector.sjs' ,
83
+ contentType : 'application/vnd.marklogic-javascript' ,
84
+ permissions : getTestDocumentPermissions ( )
85
+ } ;
86
+ basicloader . loadFile ( callback , {
87
+ filePath : filePath ,
88
+ databaseClient : databaseClient ,
89
+ documentDescriptor : documentDescriptor
90
+ } ) ;
91
+ }
92
+
93
+ function loadProxyTestData ( callback ) {
94
+ const testdir = path . resolve ( 'test-basic-proxy' ) ;
95
+ const filePath = path . resolve ( testdir , 'testdef.json' ) ;
96
+ const databaseClient = marklogic . createDatabaseClient ( testconfig . restWriterConnection ) ;
97
+ const documentDescriptor = {
98
+ uri : '/dbf/test.json' ,
99
+ contentType : 'application/json'
100
+ } ;
101
+ basicloader . loadFile ( callback , {
102
+ filePath : filePath ,
103
+ databaseClient : databaseClient ,
104
+ documentDescriptor : documentDescriptor
105
+ } ) ;
106
+ }
107
+
108
+ function loadProxyTestCases ( callback ) {
109
+ const databaseClient = getTestModulesClient ( ) ;
110
+ const documentMetadata = {
111
+ collections : [ '/dbf/test/cases' ] ,
112
+ permissions : getTestDocumentPermissions ( )
113
+ } ;
114
+ const uriPrefix = '/dbf/test/' ;
115
+ const uriStartDepth = 4 ;
116
+ return gulp . src ( [
117
+ 'test-basic-proxy/ml-modules/*/*/service.json' ,
118
+ 'test-basic-proxy/ml-modules/*/*/*.api' ,
119
+ 'test-basic-proxy/ml-modules/*/*/*.sjs' ,
120
+ 'test-basic-proxy/ml-modules/*/*/*.mjs' ,
121
+ 'test-basic-proxy/ml-modules/*/*/*.xqy'
122
+ ] )
123
+ . pipe ( basicloader . loadFileStream ( {
124
+ databaseClient : databaseClient ,
125
+ documentMetadata : documentMetadata ,
126
+ uriPrefix : uriPrefix ,
127
+ uriStartDepth : uriStartDepth
128
+ } ) ) ;
129
+ }
130
+ function positiveProxyTests ( ) {
131
+ return gulp . src ( 'test-basic-proxy/ml-modules/positive/*' )
132
+ . pipe ( proxy . generate ( ) )
133
+ . pipe ( gulp . dest ( 'test-basic-proxy/lib/positive/' ) ) ;
134
+ }
135
+ function negativeProxyTests ( ) {
136
+ return gulp . src ( 'test-basic-proxy/ml-modules/negative/*' )
137
+ . pipe ( proxy . generate ( ) )
138
+ . pipe ( gulp . dest ( 'test-basic-proxy/lib/negative/' ) ) ;
139
+ }
140
+ function generatedProxyTests ( ) {
141
+ return gulp . src ( 'test-basic-proxy/ml-modules/generated/*' )
142
+ . pipe ( testproxy . generate ( ) )
143
+ . pipe ( gulp . dest ( 'test-basic-proxy/lib/generated/' ) ) ;
144
+ }
145
+ function runProxyTests ( ) {
146
+ return gulp . src ( [ 'test-basic-proxy/lib/*/*Test.js' ] )
147
+ . pipe ( mocha ( {
148
+ reporter : 'spec' ,
149
+ globals : {
150
+ should : require ( 'chai' )
151
+ }
152
+ } ) ) ;
153
+ }
154
+ function proxyDocTests ( ) {
155
+ return gulp . src ( [ 'test-basic-proxy/lib/positive/DescribedBundle.js' ] )
156
+ . pipe ( jsdoc ( { opts :{ destination :'test-basic-proxy/doc' } } ) ) ;
157
+ }
158
+
45
159
exports . doc = doc ;
46
160
exports . lint = lint ;
161
+ exports . loadProxyTests = parallel ( loadProxyTestInspector , loadProxyTestData , loadProxyTestCases ) ;
162
+ exports . generateProxyTests = parallel ( positiveProxyTests , negativeProxyTests , generatedProxyTests ) ;
163
+ exports . generateProxyDocTests = proxyDocTests ;
164
+ exports . runProxyTests = runProxyTests ;
165
+ exports . proxyTests = series (
166
+ parallel ( loadProxyTestInspector , loadProxyTestData , loadProxyTestCases ) ,
167
+ parallel ( positiveProxyTests , negativeProxyTests , generatedProxyTests ) ,
168
+ proxyDocTests ,
169
+ runProxyTests ) ;
47
170
exports . test = test ;
48
171
exports . default = lint ;
0 commit comments