oatts-cypress
Version:
An Open API Cypress Test Template Generator
143 lines (112 loc) • 6.43 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>index.js - Documentation</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Namespaces</h3><ul><li><a href="compilation.html">compilation</a><ul class='methods'><li data-type='method'><a href="compilation.html#compile">compile</a></li><li data-type='method'><a href="compilation.html#compileOperationLevel">compileOperationLevel</a></li><li data-type='method'><a href="compilation.html#compilePathLevel">compilePathLevel</a></li><li data-type='method'><a href="compilation.html#compileTransactionLevel">compileTransactionLevel</a></li><li data-type='method'><a href="compilation.html#prepareTemplate">prepareTemplate</a></li></ul></li><li><a href="processing.html">processing</a><ul class='methods'><li data-type='method'><a href="processing.html#determineQueryType">determineQueryType</a></li><li data-type='method'><a href="processing.html#isNumberType">isNumberType</a></li><li data-type='method'><a href="processing.html#lookupCustomQueryValue">lookupCustomQueryValue</a></li><li data-type='method'><a href="processing.html#lookupCustomValue">lookupCustomValue</a></li><li data-type='method'><a href="processing.html#pathify">pathify</a></li><li data-type='method'><a href="processing.html#process">process</a></li><li data-type='method'><a href="processing.html#processHeaders">processHeaders</a></li><li data-type='method'><a href="processing.html#processOperations">processOperations</a></li><li data-type='method'><a href="processing.html#processParams">processParams</a></li><li data-type='method'><a href="processing.html#processPaths">processPaths</a></li><li data-type='method'><a href="processing.html#processResponse">processResponse</a></li><li data-type='method'><a href="processing.html#processTransactions">processTransactions</a></li><li data-type='method'><a href="processing.html#replaceNewlines">replaceNewlines</a></li></ul></li><li><a href="templateHelpers.html">templateHelpers</a><ul class='methods'><li data-type='method'><a href="templateHelpers.html#isNotDefaultStatusCode">isNotDefaultStatusCode</a></li><li data-type='method'><a href="templateHelpers.html#json">json</a></li><li data-type='method'><a href="templateHelpers.html#notEmptyObject">notEmptyObject</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html">generate</a></li><li><a href="global.html">merge2</a></li></ul>
</nav>
<div id="main">
<h1 class="page-title">index.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>// Copyright 2018 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
'use strict';
var proc = require('./lib/process.js')
var compile = require('./lib/compile.js')
var sway = require('sway')
var fs = require('fs')
var join = require('path').join
var merge2 = require('./lib/util').merge2
module.exports = {
generate: generate
}
/**
* GenerationResults is the final result of the generation function
* @typedef {object} GenerationResults
* @property {compilation.GeneratedTest[]} generated set of generated test objects
*/
/**
* Generates test artifacts based on the given API Spec and options
* @function generate
* @instance
* @param {string} specPath path to the API spec document
* @param {object} options options to apply during processing of API spec
* @return {Promise<GenerationResults>}
*/
function generate(specPath, options) {
return sway.create({
'definition': specPath,
'jsonRefs': options && options.jsonRefs,
'customFormats': options && options.customFormats,
'customFormatGenerators': options && options.customFormatGenerators,
'customValidators': options && options.customValidators
})
.then(function (api) {
if (options.customValues) {
options.customValues = JSON.parse(options.customValues);
}
if (options.customValuesFile) {
var customFromFile = require(
join(process.cwd(), options.customValuesFile))
options.customValues = merge2(options.customValues, customFromFile)
}
var processed = proc(api, options)
var compiled = compile(processed, options)
if (options.writeTo !== undefined) {
if (!fs.existsSync(options.writeTo)) {
fs.mkdirSync(options.writeTo)
}
try {
for (var i = 0; i < compiled.length; i++) {
const testObj = compiled[i];
fs.writeFileSync(join(options.writeTo, testObj.filename), testObj.contents)
}
} catch (err) {
console.log(err);
}
}
return {'generated': compiled}
}, function (err) {
console.error(err.stack);
return err
});
}
</code></pre>
</article>
</section>
</div>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.3</a> on Sat Aug 24 2019 12:31:35 GMT+0100 (Western European Summer Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
</footer>
<script>prettyPrint();</script>
<script src="scripts/linenumber.js"></script>
</body>
</html>