[Test Suite] Don’t run focused pending tests
This commit is contained in:
parent
a8380843e2
commit
619661e8f7
|
@ -0,0 +1 @@
|
|||
__tests__/build/
|
|
@ -103,6 +103,84 @@ function pendingTestTests({ it: _it, describe: _describe }) {
|
|||
otherTest.should.be.called();
|
||||
});
|
||||
});
|
||||
|
||||
_describe('when an outer context is focused', () => {
|
||||
_it('a pending test will still not run', async () => {
|
||||
const pendingTest = sinon.spy();
|
||||
const otherTest = sinon.spy();
|
||||
const unfocusedTest = sinon.spy();
|
||||
|
||||
const testSuite = new TestSuite('', '', {});
|
||||
|
||||
testSuite.addTests(({ fdescribe, it, xit }) => {
|
||||
fdescribe('', () => {
|
||||
xit('', pendingTest);
|
||||
|
||||
it('', otherTest);
|
||||
});
|
||||
|
||||
it('', unfocusedTest);
|
||||
});
|
||||
|
||||
testSuite.setStore({
|
||||
getState: () => { return {}; },
|
||||
});
|
||||
|
||||
const testIdsToRun = Object.keys(testSuite.testDefinitions.focusedTestIds).reduce((memo, testId) => {
|
||||
if (!testSuite.testDefinitions.pendingTestIds[testId]) {
|
||||
memo.push(testId);
|
||||
}
|
||||
|
||||
return memo;
|
||||
}, []);
|
||||
|
||||
await testSuite.run(testIdsToRun);
|
||||
|
||||
pendingTest.should.not.be.called();
|
||||
otherTest.should.be.called();
|
||||
unfocusedTest.should.not.be.called();
|
||||
});
|
||||
});
|
||||
|
||||
_describe('when an outer context is focused', () => {
|
||||
_it('a pending context will still not run', async () => {
|
||||
const pendingTest = sinon.spy();
|
||||
const otherTest = sinon.spy();
|
||||
const unfocusedTest = sinon.spy();
|
||||
|
||||
const testSuite = new TestSuite('', '', {});
|
||||
|
||||
testSuite.addTests(({ fdescribe, it, xdescribe }) => {
|
||||
fdescribe('', () => {
|
||||
xdescribe('', () => {
|
||||
it('', pendingTest);
|
||||
});
|
||||
|
||||
it('', otherTest);
|
||||
});
|
||||
|
||||
it('', unfocusedTest);
|
||||
});
|
||||
|
||||
testSuite.setStore({
|
||||
getState: () => { return {}; },
|
||||
});
|
||||
|
||||
const testIdsToRun = Object.keys(testSuite.testDefinitions.focusedTestIds).reduce((memo, testId) => {
|
||||
if (!testSuite.testDefinitions.pendingTestIds[testId]) {
|
||||
memo.push(testId);
|
||||
}
|
||||
|
||||
return memo;
|
||||
}, []);
|
||||
|
||||
await testSuite.run(testIdsToRun);
|
||||
|
||||
pendingTest.should.not.be.called();
|
||||
otherTest.should.be.called();
|
||||
unfocusedTest.should.not.be.called();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export default pendingTestTests;
|
||||
|
|
|
@ -111,19 +111,19 @@ class TestSuite {
|
|||
*/
|
||||
async run(testIds = undefined) {
|
||||
const testsToRun = (() => {
|
||||
if (testIds) {
|
||||
return testIds.map((id) => {
|
||||
return (testIds || Object.keys(this.testDefinitions.tests)).reduce((memo, id) => {
|
||||
const test = this.testDefinitions.tests[id];
|
||||
|
||||
if (!test) {
|
||||
throw new RangeError(`ReactNativeFirebaseTests.TestRunError: Test with id ${id} not found in test suite ${this.name}`);
|
||||
}
|
||||
|
||||
return test;
|
||||
});
|
||||
if (!this.testDefinitions.pendingTestIds[id]) {
|
||||
memo.push(test);
|
||||
}
|
||||
|
||||
return Object.values(this.testDefinitions.tests);
|
||||
return memo;
|
||||
}, []);
|
||||
})();
|
||||
|
||||
const testRun = new TestRun(this, testsToRun.reverse(), this.testDefinitions);
|
||||
|
|
Loading…
Reference in New Issue