77 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			77 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, '__esModule', { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.default = void 0; | ||
|  | 
 | ||
|  | function _jestUtil() { | ||
|  |   const data = require('jest-util'); | ||
|  | 
 | ||
|  |   _jestUtil = function _jestUtil() { | ||
|  |     return data; | ||
|  |   }; | ||
|  | 
 | ||
|  |   return data; | ||
|  | } | ||
|  | 
 | ||
|  | var _array = _interopRequireDefault(require('./table/array')); | ||
|  | 
 | ||
|  | var _template = _interopRequireDefault(require('./table/template')); | ||
|  | 
 | ||
|  | var _validation = require('./validation'); | ||
|  | 
 | ||
|  | function _interopRequireDefault(obj) { | ||
|  |   return obj && obj.__esModule ? obj : {default: obj}; | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | ||
|  |  * | ||
|  |  * This source code is licensed under the MIT license found in the | ||
|  |  * LICENSE file in the root directory of this source tree. | ||
|  |  * | ||
|  |  */ | ||
|  | var _default = (cb, supportsDone = true) => (table, ...taggedTemplateData) => | ||
|  |   function eachBind(title, test, timeout) { | ||
|  |     try { | ||
|  |       const tests = isArrayTable(taggedTemplateData) | ||
|  |         ? buildArrayTests(title, table) | ||
|  |         : buildTemplateTests(title, table, taggedTemplateData); | ||
|  |       return tests.forEach(row => | ||
|  |         cb( | ||
|  |           row.title, | ||
|  |           applyArguments(supportsDone, row.arguments, test), | ||
|  |           timeout | ||
|  |         ) | ||
|  |       ); | ||
|  |     } catch (e) { | ||
|  |       const error = new (_jestUtil()).ErrorWithStack(e.message, eachBind); | ||
|  |       return cb(title, () => { | ||
|  |         throw error; | ||
|  |       }); | ||
|  |     } | ||
|  |   }; | ||
|  | 
 | ||
|  | exports.default = _default; | ||
|  | 
 | ||
|  | const isArrayTable = data => data.length === 0; | ||
|  | 
 | ||
|  | const buildArrayTests = (title, table) => { | ||
|  |   (0, _validation.validateArrayTable)(table); | ||
|  |   return (0, _array.default)(title, table); | ||
|  | }; | ||
|  | 
 | ||
|  | const buildTemplateTests = (title, table, taggedTemplateData) => { | ||
|  |   const headings = getHeadingKeys(table[0]); | ||
|  |   (0, _validation.validateTemplateTableHeadings)(headings, taggedTemplateData); | ||
|  |   return (0, _template.default)(title, headings, taggedTemplateData); | ||
|  | }; | ||
|  | 
 | ||
|  | const getHeadingKeys = headings => headings.replace(/\s/g, '').split('|'); | ||
|  | 
 | ||
|  | const applyArguments = (supportsDone, params, test) => | ||
|  |   supportsDone && params.length < test.length | ||
|  |     ? done => test(...params, done) | ||
|  |     : () => test(...params); |