diff options
author | 2025-06-05 14:25:23 +0000 | |
---|---|---|
committer | 2025-06-05 14:25:23 +0000 | |
commit | e586d7d704d475afe3373a1de6ae20d504f79d6d (patch) | |
tree | 7e3fa24807cebd48a86bd40f866d792181191ee9 /packages/telemetry/test | |
download | astro-latest.tar.gz astro-latest.tar.zst astro-latest.zip |
Sync from a8e1c0a7402940e0fc5beef669522b315052df1blatest
Diffstat (limited to 'packages/telemetry/test')
-rw-r--r-- | packages/telemetry/test/config.test.js | 10 | ||||
-rw-r--r-- | packages/telemetry/test/index.test.js | 84 |
2 files changed, 94 insertions, 0 deletions
diff --git a/packages/telemetry/test/config.test.js b/packages/telemetry/test/config.test.js new file mode 100644 index 000000000..d68663b77 --- /dev/null +++ b/packages/telemetry/test/config.test.js @@ -0,0 +1,10 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; +import { GlobalConfig } from '../dist/config.js'; + +describe('GlobalConfig', () => { + it('initializes when expected arguments are given', () => { + const config = new GlobalConfig({ name: 'TEST_NAME' }); + assert(config instanceof GlobalConfig); + }); +}); diff --git a/packages/telemetry/test/index.test.js b/packages/telemetry/test/index.test.js new file mode 100644 index 000000000..47d64198c --- /dev/null +++ b/packages/telemetry/test/index.test.js @@ -0,0 +1,84 @@ +import assert from 'node:assert/strict'; +import { after, before, describe, it } from 'node:test'; +import { AstroTelemetry } from '../dist/index.js'; + +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 } = setup(); + assert(telemetry instanceof AstroTelemetry); + }); + it('does not record event if disabled', async () => { + const { telemetry, config, logs } = setup(); + telemetry.setEnabled(false); + const [key] = Array.from(config.keys()); + assert.notEqual(key, undefined); + assert.equal(config.get(key), false); + assert.equal(telemetry.enabled, false); + assert.equal(telemetry.isDisabled, true); + const result = await telemetry.record(['TEST']); + assert.equal(result, undefined); + const [log] = logs; + assert.notEqual(log, undefined); + assert.match(logs.join(''), /disabled/); + }); + it('records event if enabled', async () => { + const { telemetry, config, logs } = setup(); + telemetry.setEnabled(true); + const [key] = Array.from(config.keys()); + assert.notEqual(key, undefined); + assert.equal(config.get(key), true); + assert.equal(telemetry.enabled, true); + assert.equal(telemetry.isDisabled, false); + await telemetry.record(['TEST']); + assert.equal(logs.length, 2); + }); + it('respects disable from notify', async () => { + const { telemetry, config, logs } = setup(); + await telemetry.notify(() => false); + const [key] = Array.from(config.keys()); + assert.notEqual(key, undefined); + assert.equal(config.get(key), false); + assert.equal(telemetry.enabled, false); + assert.equal(telemetry.isDisabled, true); + const [log] = logs; + assert.notEqual(log, undefined); + assert.match(logs.join(''), /disabled/); + }); + it('respects enable from notify', async () => { + const { telemetry, config, logs } = setup(); + await telemetry.notify(() => true); + const [key] = Array.from(config.keys()); + assert.notEqual(key, undefined); + assert.equal(config.get(key), true); + assert.equal(telemetry.enabled, true); + assert.equal(telemetry.isDisabled, false); + const [log] = logs; + assert.notEqual(log, undefined); + assert.match(logs.join(''), /enabled/); + }); +}); |