Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 94d7054

Browse files
committed
closes Vincit#1731
1 parent 7b81762 commit 94d7054

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

lib/queryBuilder/QueryBuilder.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,7 @@ class QueryBuilder extends QueryBuilderBase {
682682
const result = await doExecute(builder);
683683
return await afterExecute(builder, result);
684684
} catch (error) {
685-
await handleExecuteError(builder, error);
685+
return await handleExecuteError(builder, error);
686686
}
687687
}
688688

tests/unit/queryBuilder/QueryBuilder.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,41 @@ describe('QueryBuilder', () => {
654654
});
655655
});
656656

657+
it('throwing at any phase should call the onError hook', done => {
658+
let called = false;
659+
QueryBuilder.forClass(TestModel)
660+
.runBefore(function(result, builder) {
661+
throw new Error();
662+
})
663+
.onError(function(err, builder) {
664+
called = true;
665+
})
666+
.then(() => {
667+
expect(called).to.equal(true);
668+
done();
669+
})
670+
.catch(err => {
671+
done(err);
672+
});
673+
});
674+
675+
it('any return value from onError should be the result of the query', done => {
676+
QueryBuilder.forClass(TestModel)
677+
.runBefore(function(result, builder) {
678+
throw new Error();
679+
})
680+
.onError(function(err, builder) {
681+
return 'my custom error';
682+
})
683+
.then(result => {
684+
expect(result).to.equal('my custom error');
685+
done();
686+
})
687+
.catch(err => {
688+
done(err);
689+
});
690+
});
691+
657692
it('should call run* methods in the correct order', done => {
658693
mockKnexQueryResults = [0];
659694

0 commit comments

Comments
 (0)