1. 1var sqlite3 = require('..');
2. 1var assert = require('assert');
3. 1
4. 1var invalid_sql = 'update non_existent_table set id=1';
5. 1
6. 1var originalMethods = {
7. 1 Database: {},
8. 1 Statement: {},
9. 1};
10. 1
11. 1function backupOriginalMethods() {
12. 2 for (var obj in originalMethods) {
13. 44 for (var attr in sqlite3[obj].prototype) {
14. 44 originalMethods[obj][attr] = sqlite3[obj].prototype[attr];
15. 44 }
16. 2 }
17. 1}
18. 1
19. 1function resetVerbose() {
20. 2 for (var obj in originalMethods) {
21. 44 for (var attr in originalMethods[obj]) {
22. 44 sqlite3[obj].prototype[attr] = originalMethods[obj][attr];
23. 44 }
24. 2 }
25. 1}
26. 1
27. 1describe('verbose', function() {
28. 1 it('Shoud add trace info to error when verbose is called', function(done) {
29. 1 var db = new sqlite3.Database(':memory:');
30. 1 backupOriginalMethods();
31. 1 sqlite3.verbose();
32. 1
33. 1 db.run(invalid_sql, function(err) {
34. 1 assert(err instanceof Error);
35. 1
36. 1 assert(
37. 1 err.stack.indexOf(`Database#run('${invalid_sql}'`) > -1,
38. 1 `Stack shoud contain trace info, stack = ${err.stack}`
39. 1 );
40. 1
41. 1 done();
42. 1 resetVerbose();
43. 1 });
44. 1 });
45. 1
46. 1 it('Shoud not add trace info to error when verbose is not called', function(done) {
47. 1 var db = new sqlite3.Database(':memory:');
48. 1
49. 1 db.run(invalid_sql, function(err) {
50. 1 assert(err instanceof Error);
51. 1
52. 1 assert(
53. 1 err.stack.indexOf(invalid_sql) === -1,
54. 1 `Stack shoud not contain trace info, stack = ${err.stack}`
55. 1 );
56. 1
57. 1 done();
58. 1 });
59. 1 });
60. 1});
61. 1