node-red/test/unit/@node-red/runtime/lib/telemetry/index_spec.js

96 lines
3.1 KiB
JavaScript

const should = require("should");
const NR_TEST_UTILS = require("nr-test-utils");
const telemetryApi = NR_TEST_UTILS.require("@node-red/runtime/lib/telemetry/index");
describe("telemetry", function() {
afterEach(function () {
telemetryApi.stop()
messages = []
})
let messages = []
function getMockRuntime(settings) {
return {
settings: {
get: key => { return settings[key] },
set: (key, value) => { settings[key] = value },
available: () => true,
},
log: {
debug: (msg) => { messages.push(msg)}
}
}
}
// Principles to test:
// - No settings at all; disable telemetry
// - Runtime settings only; do what it says
// - User settings take precedence over runtime settings
it('Disables telemetry with no settings present', function () {
telemetryApi.init(getMockRuntime({}))
messages.should.have.length(0)
// Returns undefined as we don't know either way
;(telemetryApi.isEnabled() === undefined).should.be.true()
})
it('Runtime settings - enable', function () {
// Enabled in runtime settings
telemetryApi.init(getMockRuntime({
telemetry: { enabled: true }
}))
telemetryApi.isEnabled().should.be.true()
messages.should.have.length(1)
;/Telemetry enabled/.test(messages[0]).should.be.true()
})
it('Runtime settings - disable', function () {
telemetryApi.init(getMockRuntime({
telemetry: { enabled: false },
}))
// Returns false, not undefined
telemetryApi.isEnabled().should.be.false()
messages.should.have.length(0)
})
it('User settings - enable overrides runtime settings', function () {
telemetryApi.init(getMockRuntime({
telemetry: { enabled: false },
telemetryEnabled: true
}))
telemetryApi.isEnabled().should.be.true()
messages.should.have.length(1)
;/Telemetry enabled/.test(messages[0]).should.be.true()
})
it('User settings - disable overrides runtime settings', function () {
telemetryApi.init(getMockRuntime({
telemetry: { enabled: true },
telemetryEnabled: false
}))
telemetryApi.isEnabled().should.be.false()
messages.should.have.length(0)
})
it('Can enable/disable telemetry', function () {
const settings = {}
telemetryApi.init(getMockRuntime(settings))
;(telemetryApi.isEnabled() === undefined).should.be.true()
telemetryApi.enable()
telemetryApi.isEnabled().should.be.true()
messages.should.have.length(1)
;/Telemetry enabled/.test(messages[0]).should.be.true()
settings.should.have.property('telemetryEnabled', true)
telemetryApi.disable()
telemetryApi.isEnabled().should.be.false()
messages.should.have.length(2)
;/Telemetry disabled/.test(messages[1]).should.be.true()
settings.should.have.property('telemetryEnabled', false)
})
})