mirror of
https://github.com/bower/bower.git
synced 2026-01-14 16:57:57 -05:00
125 lines
4.1 KiB
JavaScript
125 lines
4.1 KiB
JavaScript
var expect = require('expect.js');
|
|
var proxyquire = require('proxyquire');
|
|
var object = require('mout').object;
|
|
|
|
describe('analytics', function () {
|
|
|
|
var mockAnalytics = function(stubs, promptResponse) {
|
|
return proxyquire('../../lib/util/analytics', {
|
|
insight: function () {
|
|
return object.merge(stubs || {}, {
|
|
askPermission: function (message, callback) {
|
|
callback(undefined, promptResponse);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|
|
|
|
describe('#setup', function () {
|
|
it('leaves analytics enabled if provided', function () {
|
|
return mockAnalytics()
|
|
.setup({ analytics: true })
|
|
.then(function (enabled) {
|
|
expect(enabled).to.be(true);
|
|
});
|
|
});
|
|
|
|
it('leaves analytics disabled if provided', function () {
|
|
return mockAnalytics()
|
|
.setup({ analytics: false })
|
|
.then(function (enabled) {
|
|
expect(enabled).to.be(false);
|
|
});
|
|
});
|
|
|
|
it('disables analytics for non-interactive mode', function () {
|
|
return mockAnalytics()
|
|
.setup({ interactive: false })
|
|
.then(function (enabled) {
|
|
expect(enabled).to.be(false);
|
|
});
|
|
});
|
|
|
|
it('disables if insight.optOut is true and interactive', function () {
|
|
return mockAnalytics({ optOut: true })
|
|
.setup({ interactive: true })
|
|
.then(function (enabled) {
|
|
expect(enabled).to.be(false);
|
|
});
|
|
});
|
|
|
|
it('enables if insight.optOut is false and interactive', function () {
|
|
return mockAnalytics({ optOut: false })
|
|
.setup({ interactive: true })
|
|
.then(function (enabled) {
|
|
expect(enabled).to.be(true);
|
|
});
|
|
});
|
|
|
|
it('disables if insight.optOut is false and non-interactive', function () {
|
|
return mockAnalytics({ optOut: false })
|
|
.setup({ interactive: false })
|
|
.then(function (enabled) {
|
|
expect(enabled).to.be(false);
|
|
});
|
|
});
|
|
|
|
it('enables if interactive insights return true from prompt', function () {
|
|
return mockAnalytics({ optOut: undefined }, true)
|
|
.setup({ interactive: true })
|
|
.then(function (enabled) {
|
|
expect(enabled).to.be(true);
|
|
});
|
|
});
|
|
|
|
it('disables if interactive insights return false from prompt', function () {
|
|
return mockAnalytics({ optOut: undefined }, false)
|
|
.setup({ interactive: true })
|
|
.then(function (enabled) {
|
|
expect(enabled).to.be(false);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('Tracker', function (next) {
|
|
it('tracks if analytics = true', function(next) {
|
|
var analytics = mockAnalytics({
|
|
track: function (arg) {
|
|
expect(arg).to.be('foo');
|
|
next();
|
|
}
|
|
});
|
|
|
|
new analytics.Tracker({ analytics: true }).track('foo');
|
|
});
|
|
|
|
it('does not track if analytics = false', function () {
|
|
var analytics = mockAnalytics({
|
|
track: function (arg) {
|
|
throw new Error();
|
|
}
|
|
});
|
|
|
|
expect(function () {
|
|
new analytics.Tracker({ analytics: false }).track('foo');
|
|
}).to.not.throwError();
|
|
});
|
|
|
|
it('tracks if analytics = undefined and setup returns true', function(next) {
|
|
var analytics = mockAnalytics({
|
|
track: function (arg) {
|
|
expect(arg).to.be('foo');
|
|
next();
|
|
}
|
|
});
|
|
|
|
analytics
|
|
.setup({ analytics: true })
|
|
.then(function () {
|
|
new analytics.Tracker({}).track('foo');
|
|
});
|
|
});
|
|
});
|
|
});
|