Initial coomit for AAI-UI(sparky-fe)
[aai/sparky-fe.git] / test / utils / MockRest.js
1 /*
2  * ============LICENSE_START=======================================================
3  * SPARKY (AAI UI service)
4  * ================================================================================
5  * Copyright © 2017 AT&T Intellectual Property.
6  * Copyright © 2017 Amdocs
7  * All rights reserved.
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  *
22  * ECOMP and OpenECOMP are trademarks
23  * and service marks of AT&T Intellectual Property.
24  */
25
26 const queue = {
27         fetch: [],
28         put: [],
29         post: [],
30         destroy: []
31 };
32
33 const initQueue = () => {
34         queue['fetch'] = [];
35         queue['put'] = [];
36         queue['post'] = [];
37         queue['destroy'] = [];
38 };
39
40 const handleOperation = (handler, options) => {
41         if(typeof handler === 'function') {
42                 return Promise.resolve(handler(options));
43         }
44         else {
45                 return Promise.resolve(handler);
46         }
47 };
48
49 export default {
50
51         fetch(baseUrl, options) {
52                 const {fetch} = queue;
53                 if(!fetch.length) {
54                         throw new Error(`Fetch operation was called without proper handler. baseUrl: '${baseUrl}' options: '${options}'`);
55                 }
56                 return handleOperation(fetch.shift(), {options, baseUrl});
57         },
58
59         put(baseUrl, data, options) {
60                 const {put} = queue;
61                 if(!put.length) {
62                         throw new Error(`put operation was called without proper handler. baseUrl: '${baseUrl}' options: '${options}'`);
63                 }
64                 return handleOperation(put.shift(), {data, options, baseUrl});
65         },
66
67         post(baseUrl, data, options) {
68                 const {post} = queue;
69                 if(!post.length) {
70                         throw new Error(`post operation was called without proper handler. baseUrl: '${baseUrl}' options: '${options}'`);
71                 }
72                 return handleOperation(post.shift(), {data, options, baseUrl});
73         },
74
75         destroy(baseUrl, options) {
76                 const {destroy} = queue;
77                 if(!destroy.length) {
78                         throw new Error(`Destroy operation was called without proper handler. baseUrl: '${baseUrl}' options: '${options}'`);
79                 }
80                 return handleOperation(destroy.shift(), {options, baseUrl});
81         },
82
83         addHandler(operation, handler) {
84                 queue[operation].push(handler);
85         },
86
87         resetQueue() {
88                 initQueue();
89         }
90 };