86 lines
2.5 KiB
JavaScript
86 lines
2.5 KiB
JavaScript
|
import ENV from '../../config/environment';
|
||
|
import { skip } from 'qunit';
|
||
|
import { setupApplicationTest, setupRenderingTest, setupTest } from 'ember-qunit';
|
||
|
import api from 'consul-ui/tests/helpers/api';
|
||
|
|
||
|
// this logic could be anything, but in this case...
|
||
|
// if @ignore, then return skip (for backwards compatibility)
|
||
|
// if have annotations in config, then only run those that have a matching annotation
|
||
|
function checkAnnotations(annotations) {
|
||
|
// if ignore is set then we want to skip for backwards compatibility
|
||
|
if (annotations.ignore) {
|
||
|
return ignoreIt;
|
||
|
}
|
||
|
|
||
|
// if have annotations set in config, the only run those that have a matching annotation
|
||
|
if (ENV.annotations && ENV.annotations.length >= 0) {
|
||
|
for (let annotation in annotations) {
|
||
|
if (ENV.annotations.indexOf(annotation) >= 0) {
|
||
|
// have match, so test it
|
||
|
return 'testIt'; // return something other than a function
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// no match, so don't run it
|
||
|
return logIt;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// call back functions
|
||
|
function ignoreIt(testElement) {
|
||
|
skip(`${testElement.title}`, function(/*assert*/) {});
|
||
|
}
|
||
|
|
||
|
function logIt(testElement) {
|
||
|
console.info(`Not running or skipping: "${testElement.title}"`); // eslint-disable-line no-console
|
||
|
}
|
||
|
|
||
|
// exported functions
|
||
|
function runFeature(annotations) {
|
||
|
return checkAnnotations(annotations);
|
||
|
}
|
||
|
|
||
|
function runScenario(featureAnnotations, scenarioAnnotations) {
|
||
|
return checkAnnotations(scenarioAnnotations);
|
||
|
}
|
||
|
|
||
|
// setup tests
|
||
|
// you can override these function to add additional setup setups, or handle new setup related annotations
|
||
|
function setupFeature(featureAnnotations) {
|
||
|
return setupYaddaTest(featureAnnotations);
|
||
|
}
|
||
|
|
||
|
function setupScenario(featureAnnotations, scenarioAnnotations) {
|
||
|
let setupFn = setupYaddaTest(scenarioAnnotations);
|
||
|
if (
|
||
|
setupFn &&
|
||
|
(featureAnnotations.setupapplicationtest ||
|
||
|
featureAnnotations.setuprenderingtest ||
|
||
|
featureAnnotations.setuptest)
|
||
|
) {
|
||
|
throw new Error(
|
||
|
'You must not assign any @setupapplicationtest, @setuprenderingtest or @setuptest annotations to a scenario as well as its feature!'
|
||
|
);
|
||
|
}
|
||
|
return function(model) {
|
||
|
model.afterEach(function() {
|
||
|
api.server.reset();
|
||
|
});
|
||
|
};
|
||
|
// return setupFn;
|
||
|
}
|
||
|
|
||
|
function setupYaddaTest(annotations) {
|
||
|
if (annotations.setupapplicationtest) {
|
||
|
return setupApplicationTest;
|
||
|
}
|
||
|
if (annotations.setuprenderingtest) {
|
||
|
return setupRenderingTest;
|
||
|
}
|
||
|
if (annotations.setuptest) {
|
||
|
return setupTest;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export { runFeature, runScenario, setupFeature, setupScenario };
|