diff options
author | 2023-08-28 16:03:01 -0500 | |
---|---|---|
committer | 2023-08-28 16:03:01 -0500 | |
commit | 0c7b42dc6780e687e416137539f55a3a427d1d10 (patch) | |
tree | 39a7110e46ae6fbd37cd479f4930e7f96631fd5a /packages/telemetry/test/index.test.js | |
parent | 1db4e92c12ed73681217f5cefd39f2f47542f961 (diff) | |
download | astro-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.js | 78 |
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/); + }); }); |