summaryrefslogtreecommitdiff
path: root/packages/telemetry/test/index.test.js
diff options
context:
space:
mode:
authorGravatar Nate Moore <natemoo-re@users.noreply.github.com> 2023-08-28 16:03:01 -0500
committerGravatar GitHub <noreply@github.com> 2023-08-28 16:03:01 -0500
commit0c7b42dc6780e687e416137539f55a3a427d1d10 (patch)
tree39a7110e46ae6fbd37cd479f4930e7f96631fd5a /packages/telemetry/test/index.test.js
parent1db4e92c12ed73681217f5cefd39f2f47542f961 (diff)
downloadastro-0c7b42dc6780e687e416137539f55a3a427d1d10.tar.gz
astro-0c7b42dc6780e687e416137539f55a3a427d1d10.tar.zst
astro-0c7b42dc6780e687e416137539f55a3a427d1d10.zip
Update telemetry notice (#8234)
* chore: enable telemetry notice * chore: update telemetry date, notify * chore(telemetry): refactor telemetry notices * chore: add changeset * chore: improve debugging * chore: update debug * fix: logical error * chore(lint): remove unused input * chore: improve telemetry debug * chore: improve telemetry tests * chore: allow isCI to be stubbed * chore: stub process.env * chore: stub process.env * chore: add env to class * chore: act like we're not on CI * test: didn't commit the env stub properly * chore: tweak wording
Diffstat (limited to 'packages/telemetry/test/index.test.js')
-rw-r--r--packages/telemetry/test/index.test.js78
1 files changed, 76 insertions, 2 deletions
diff --git a/packages/telemetry/test/index.test.js b/packages/telemetry/test/index.test.js
index 29ade53f9..a8929329e 100644
--- a/packages/telemetry/test/index.test.js
+++ b/packages/telemetry/test/index.test.js
@@ -1,9 +1,83 @@
import { expect } from 'chai';
import { AstroTelemetry } from '../dist/index.js';
-describe('AstroTelemetry', () => {
+function setup() {
+ const config = new Map();
+ const telemetry = new AstroTelemetry({ version: '0.0.0-test.1' });
+ const logs = [];
+ // Stub isCI to false so we can test user-facing behavior
+ telemetry.isCI = false;
+ // Stub process.env to properly test in Astro's own CI
+ telemetry.env = {};
+ // Override config so we can inspect it
+ telemetry.config = config;
+ // Override debug so we can inspect it
+ telemetry.debug.enabled = true;
+ telemetry.debug.log = (...args) => logs.push(args);
+
+ return { telemetry, config, logs }
+}
+describe('AstroTelemetry', () => {
+ let oldCI;
+ before(() => {
+ oldCI = process.env.CI;
+ // Stub process.env.CI to `false`
+ process.env.CI = 'false';
+ })
+ after(() => {
+ process.env.CI = oldCI;
+ })
it('initializes when expected arguments are given', () => {
- const telemetry = new AstroTelemetry({ version: '0.0.0-test.1' });
+ const { telemetry } = setup();
expect(telemetry).to.be.instanceOf(AstroTelemetry);
});
+ it('does not record event if disabled', async () => {
+ const { telemetry, config, logs } = setup();
+ telemetry.setEnabled(false);
+ const [key] = Array.from(config.keys());
+ expect(key).not.to.be.undefined;
+ expect(config.get(key)).to.be.false;
+ expect(telemetry.enabled).to.be.false;
+ expect(telemetry.isDisabled).to.be.true;
+ const result = await telemetry.record(['TEST']);
+ expect(result).to.be.undefined;
+ const [log] = logs;
+ expect(log).not.to.be.undefined;
+ expect(logs.join('')).to.match(/disabled/);
+ });
+ it('records event if enabled', async () => {
+ const { telemetry, config, logs } = setup();
+ telemetry.setEnabled(true);
+ const [key] = Array.from(config.keys());
+ expect(key).not.to.be.undefined;
+ expect(config.get(key)).to.be.true;
+ expect(telemetry.enabled).to.be.true;
+ expect(telemetry.isDisabled).to.be.false;
+ await telemetry.record(['TEST']);
+ expect(logs.length).to.equal(2);
+ });
+ it('respects disable from notify', async () => {
+ const { telemetry, config, logs } = setup();
+ await telemetry.notify(() => false);
+ const [key] = Array.from(config.keys());
+ expect(key).not.to.be.undefined;
+ expect(config.get(key)).to.be.false;
+ expect(telemetry.enabled).to.be.false;
+ expect(telemetry.isDisabled).to.be.true;
+ const [log] = logs;
+ expect(log).not.to.be.undefined;
+ expect(logs.join('')).to.match(/disabled/);
+ });
+ it('respects enable from notify', async () => {
+ const { telemetry, config, logs } = setup();
+ await telemetry.notify(() => true);
+ const [key] = Array.from(config.keys());
+ expect(key).not.to.be.undefined;
+ expect(config.get(key)).to.be.true;
+ expect(telemetry.enabled).to.be.true;
+ expect(telemetry.isDisabled).to.be.false;
+ const [log] = logs;
+ expect(log).not.to.be.undefined;
+ expect(logs.join('')).to.match(/enabled/);
+ });
});