breaking: bring your own sinon instead of bundling, to resolve leaks when versions...
[squeep-test-helper] / test / example.js
1 'use strict';
2 const { StubDatabase, StubLogger } = require('../index');
3 const sinon = require('sinon');
4 const assert = require('node:assert');
5
6 class App {
7 constructor(logger, db) {
8 this.logger = logger;
9 this.db = db;
10 }
11 doAThing() {
12 this.db.valueGet();
13 this.logger.error('doAThing', 'oh no');
14 }
15 }
16
17 class AppDB extends StubDatabase {
18 constructor() {
19 super(sinon);
20 }
21 get _stubFns() {
22 return [
23 ...super._stubFns,
24 'valueGet',
25 'valueSet',
26 ];
27 }
28 }
29
30 const logger = new StubLogger(sinon);
31 const db = new AppDB();
32
33 describe('App Test', function () {
34 beforeEach(function () {
35 db._reset();
36 logger._reset();
37 });
38 it('uses stubs', function () {
39 const app = new App(logger, db);
40 app.doAThing();
41 assert(logger.error.called);
42 assert(db.valueGet.called);
43 });
44 });