logger.test.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import {
  2. Logger,
  3. logger as defaultLogger,
  4. } from '@sequelize/core/_non-semver-use-at-your-own-risk_/utils/logger.js';
  5. import { expect } from 'chai';
  6. import { inspect as nodeInspect } from 'node:util';
  7. import sinon from 'sinon';
  8. describe('logger', () => {
  9. let oldWarn: typeof console.warn;
  10. let fakeWarn: sinon.SinonSpy;
  11. beforeEach(() => {
  12. oldWarn = console.warn;
  13. fakeWarn = sinon.fake();
  14. console.warn = fakeWarn;
  15. });
  16. afterEach(() => {
  17. console.warn = oldWarn;
  18. });
  19. it('creates a default logger in the sequelize context', () => {
  20. defaultLogger.warn('abc');
  21. expect(fakeWarn.calledOnceWithExactly('(sequelize) Warning: abc')).to.equal(true);
  22. });
  23. it("defaults the context of new loggers to 'sequelize'", () => {
  24. const logger = new Logger();
  25. logger.warn('oh no');
  26. expect(fakeWarn.calledOnceWithExactly('(sequelize) Warning: oh no')).to.equal(true);
  27. });
  28. it('respects specified context in new loggers', () => {
  29. const logger = new Logger({ context: 'query-generator' });
  30. logger.warn('This feature is not supported for this dialect.');
  31. expect(
  32. fakeWarn.calledOnceWithExactly(
  33. '(query-generator) Warning: This feature is not supported for this dialect.',
  34. ),
  35. ).to.equal(true);
  36. });
  37. it('inspects a value', () => {
  38. const obj = {
  39. a: 1,
  40. b: 2,
  41. c() {
  42. /* no-op */
  43. },
  44. };
  45. expect(defaultLogger.inspect(obj)).to.equal(nodeInspect(obj, { showHidden: false, depth: 3 }));
  46. });
  47. it('creates a debugger in the correct namespace', () => {
  48. const contextDebugger = defaultLogger.debugContext('query-generator');
  49. expect(contextDebugger.namespace).to.equal('sequelize:query-generator');
  50. });
  51. });