breaking: bring your own sinon instead of bundling, to resolve leaks when versions...
[squeep-test-helper] / test / example.js
diff --git a/test/example.js b/test/example.js
new file mode 100644 (file)
index 0000000..6670c1c
--- /dev/null
@@ -0,0 +1,44 @@
+'use strict';
+const { StubDatabase, StubLogger } = require('../index');
+const sinon = require('sinon');
+const assert = require('node:assert');
+
+class App {
+  constructor(logger, db) {
+    this.logger = logger;
+    this.db = db;
+  }
+  doAThing() {
+    this.db.valueGet();
+    this.logger.error('doAThing', 'oh no');
+  }
+}
+
+class AppDB extends StubDatabase {
+  constructor() {
+    super(sinon);
+  }
+  get _stubFns() {
+    return [
+      ...super._stubFns,
+      'valueGet',
+      'valueSet',
+    ];
+  }
+}
+
+const logger = new StubLogger(sinon);
+const db = new AppDB();
+
+describe('App Test', function () {
+  beforeEach(function () {
+    db._reset();
+    logger._reset();
+  });
+  it('uses stubs', function () {
+    const app = new App(logger, db);
+    app.doAThing();
+    assert(logger.error.called);
+    assert(db.valueGet.called);
+  });
+});