test-scribe
Version:
Your sidekick for analog machine development. Run machines interactively and generate automated test scripts based on the outcome.
247 lines (190 loc) • 8.73 kB
JavaScript
// $(function (){
// // initially hide all "configure-section"s
// $('.configure-section').hide();
// $(".dropdown-menu li a").click(function(){
// // Update display
// var friendlyName = $(this).text();
// $(".btn:first-child").text(friendlyName);
// $(".btn:first-child").val(friendlyName);
// // Set up configure sections
// var identity = $(this).attr('data-identity');
// // Setup the appropriate "configure-section"
// var $configureSection = $('.configure-section.'+identity);
// // Hide any other visible "configure-section"s
// $('.configure-section').hide();
// // Hide inputs which are known to be provided by the server
// // $configureSection.find('.preview-action-input-form-group-manifest').hide();
// // $configureSection.find('.preview-action-input-form-group-library').hide();
// // $configureSection.find('.preview-action-input-form-group-circuitInputs').hide();
// // $configureSection.find('.preview-action-input-form-group-circuitExits').hide();
// // Show this one
// $configureSection.show();
// // Remember a reference to its `preview-results` element, but hide it for now
// var $previewResults = $configureSection.find('.preview-results');
// $previewResults.hide();
// // And set up a submit event for it
// $configureSection.find('form').off('submit');
// $configureSection.find('form').submit(function (e){
// e.preventDefault();
// // Disable "run" button and mark it w/ a loading state
// $configureSection.find('.run-btn').addClass('running');
// $configureSection.find('.run-btn').prop('disabled',true);
// $configureSection.find('.run-btn').text('Running machine...');
// $previewResults.hide();
// // console.log('Running "%s"...', identity);
// // console.log( $( this ).serializeArray() );
// var configValues = $( this ).serializeArray();
// // console.log('configValues ==> ',configValues);
// $.post('/machinepreview/'+identity, {config: JSON.stringify(configValues)}, function (data, jqxhr){
// // console.log('Done!');
// console.log('result: ', data);
// // Re-enable "run" button and remove the loading state
// $configureSection.find('.run-btn').removeClass('running');
// $configureSection.find('.run-btn').prop('disabled',false);
// $configureSection.find('.run-btn').text('Run');
// //
// // Now show the results section, populated with the data we got from the server response
// //
// // display outcome
// var $exit = $previewResults.find('.exit');
// $exit.text(data.exit);
// // display output data, if relevant
// var $pre = $previewResults.find('pre');
// var $typeMetadata = $previewResults.find('.type-metadata');
// if (!data.void) {
// // save json value
// $previewResults.find('.json-value').val(data.jsonValue);
// // save "void"-ness
// $previewResults.find('.is-void').val('');
// // parse json data in 'jsonValue' (unless this is void)
// try {
// data.jsonValue = JSON.parse(data.jsonValue);
// }
// catch (e) {
// console.error('Failed to parse jsonValue in response. Error details:',e);
// }
// // display result and its type
// var displayResult = data.inspectedValue;
// $pre.show();
// $pre.text(displayResult);
// var resultType = typeof data.jsonValue;
// if (resultType === 'object') {
// if (data.jsonValue.length) {
// resultType = 'array';
// }
// else resultType = 'dictionary';
// }
// $typeMetadata.show();
// $typeMetadata.text(resultType);
// }
// else {
// // save "void"-ness
// $previewResults.find('.is-void').val('true');
// $pre.hide();
// }
// $previewResults.show();
// // Set up ACE editors for test lifecycle functions
// // (i.e. "before" and "after" in mocha)
// var beforeAceEditor = setupAceEditor('before-editor-'+identity);
// var afterAceEditor = setupAceEditor('after-editor-'+identity);
// var $saveAsTestButton = $previewResults.find('[data-purpose="saveAsTest"]');
// // TODO: if JSON test already exists for these inputs, style+label the button accordingly:
// if (false) {
// // TODO: If old test outcome and return value is exactly the same, reflect that
// // (potentially even display the previously-saved outcome + return value)
// $saveAsTestButton.removeClass('btn-primary');
// $saveAsTestButton.removeClass('btn-warning');
// if (false) {
// $saveAsTestButton.text('Overwrite previous test?');
// $saveAsTestButton.addClass('btn-warning');
// }
// else {
// $saveAsTestButton.text('Test already saved w/ these input values...');
// $saveAsTestButton.addClass('btn-success');
// }
// }
// // Reset style/text of saveAsTest button
// $saveAsTestButton.text('Save as Test');
// $saveAsTestButton.removeClass('btn-success');
// $saveAsTestButton.addClass('btn-primary');
// // Now set up a click event for the "Save as Test" button.
// $saveAsTestButton.off('click');
// $saveAsTestButton.on('click', function (){
// // get outcome
// // var $exit = $previewResults.find('.exit');
// // var outcome = $exit.text();
// // and output data, if relevant
// // var isVoid = !!$previewResults.find('.is-void').val();
// // var json = $previewResults.find('.json-value').val();
// var outcome = data.exit;
// var isVoid = data.void;
// var json = data.jsonValue;
// console.log('void?', isVoid);
// console.log('json?', json);
// console.log('->',outcome);
// console.log('configValues',configValues);
// // Extract before and after functions, if provided.
// var beforeFnStr = beforeAceEditor.getValue();
// var afterFnStr = afterAceEditor.getValue();
// if (beforeFnStr) {
// beforeFnStr = wrapLifecycleFn(beforeFnStr);
// }
// if (afterFnStr){
// afterFnStr = wrapLifecycleFn(afterFnStr);
// }
// /**
// * helper fn to wrap stringified fn in fn signature
// * @param {[type]} stringifiedFn [description]
// * @return {[type]} [description]
// */
// function wrapLifecycleFn(stringifiedFn){
// stringifiedFn = 'function (done){\n' + stringifiedFn;
// stringifiedFn += '\n}';
// return stringifiedFn;
// }
// console.log('beforeFnStr', beforeFnStr);
// console.log('afterFnStr',afterFnStr);
// // TODO: show loading state
// // build and send request
// var requestData = {
// using: JSON.stringify(configValues),
// outcome: outcome,
// };
// if (!isVoid) {
// requestData.returns = JSON.stringify(json);
// }
// if (beforeFnStr) {
// requestData.before = beforeFnStr;
// }
// if (afterFnStr) {
// requestData.after = afterFnStr;
// }
// var jqRequest = $.ajax({
// type: 'PUT',
// url: '/preview/' + identity + '/test',
// data: requestData,
// dataType: 'json'
// });
// // jqRequest.done(function (data, textstatus,jqxhr){
// // console.log('!!!!!!!');
// // });
// // jqRequest.then(function(){
// // console.log('then');
// // });
// // jqRequest.success(function(){
// // console.log('success');
// // });
// jqRequest.always(function (data, textstatus,jqxhr){
// console.log('finished saving test!',jqxhr.statusCode, data);
// // TODO: hide loading state
// // show "Test saved (check)" status output
// $saveAsTestButton.text('Saved!');
// $saveAsTestButton.removeClass('btn-primary');
// $saveAsTestButton.addClass('btn-success');
// });
// });
// });
// return false;
// });
// });
// });