UNPKG

@jasonmit/ember-new-relic

Version:

Adds New Relic to your Ember CLI app based on the app's environment

123 lines (102 loc) 4.02 kB
const fs = require('fs'); const path = require('path'); const broccoli = require('broccoli'); const EmberNewRelic = require('../index.js'); const { module: describe, test } = QUnit; describe("When config['ember-new-relic'].spaMonitoring is false", function(hooks) { hooks.beforeEach(function() { EmberNewRelic.isValidNewRelicConfig = false; this.newRelicConfig = EmberNewRelic.getNewRelicConfig({ spaMonitoring: false, applicationId: 'test application ID', licenseKey: 'test license key' }); }); test('wantsSPAMonitoring(newRelicConfig) returns false', function(assert) { assert.equal(EmberNewRelic.wantsSPAMonitoring(this.newRelicConfig), false); }); test('getNewRelicTrackingCode returns classicTrackingCode', function(assert) { assert.equal( EmberNewRelic.getNewRelicTrackingCode(this.newRelicConfig), EmberNewRelic.classicTrackingCode(this.newRelicConfig) ); }); }); describe("When config['ember-new-relic'].spaMonitoring is true", function(hooks) { hooks.beforeEach(function() { EmberNewRelic.isValidNewRelicConfig = false; this.newRelicConfig = EmberNewRelic.getNewRelicConfig({ spaMonitoring: true, applicationId: 'test application ID', licenseKey: 'test license key', agent: 'js-agent.newrelic.com/nr-spa-963.min.js' }); }); test('contentFor head-footer returns script tag with src to outputPath if importToVendor option is false and newRelicConfig is valid', function(assert) { var newRelicConfigAfterRemovingOurCustomConfig = Object.assign( {}, this.newRelicConfig ); delete newRelicConfigAfterRemovingOurCustomConfig.spaMonitoring; var original = EmberNewRelic.spaTrackingCode; EmberNewRelic.spaTrackingCode = function() { return 'spa!'; }; EmberNewRelic.newRelicConfig = this.newRelicConfig; EmberNewRelic.importToVendor = false; EmberNewRelic.isValidNewRelicConfig = false; try { assert.equal(EmberNewRelic.contentFor('head-footer'), undefined); EmberNewRelic.isValidNewRelicConfig = true; assert.equal( EmberNewRelic.contentFor('head-footer'), EmberNewRelic.asScriptTag(EmberNewRelic.outputPath) ); } finally { EmberNewRelic.spaTrackingCode = original; } }); test('wantsSPAMonitoring(newRelicConfig) returns true', function(assert) { assert.equal(EmberNewRelic.wantsSPAMonitoring(this.newRelicConfig), true); }); test('getNewRelicTrackingCode returns spaTrackingCode', function(assert) { assert.equal( EmberNewRelic.getNewRelicTrackingCode(this.newRelicConfig), EmberNewRelic.spaTrackingCode(this.newRelicConfig) ); }); }); describe('When outputPath, applicationId, and licenseKey are defined', function(hooks) { hooks.beforeEach(function() { EmberNewRelic.isValidNewRelicConfig = false; this.newRelicConfig = EmberNewRelic.getNewRelicConfig({ spaMonitoring: true, applicationId: 'test application ID', licenseKey: 'test license key', agent: 'js-agent.newrelic.com/nr-spa-963.min.js' }); }); test('writeTrackingCodeTree returns a tree containing a file that has the tracking code when newRelicConfig is valid', function(assert) { var newRelicConfig = (EmberNewRelic.newRelicConfig = this.newRelicConfig); var tree = EmberNewRelic.writeTrackingCodeTree(); var builder; // Tree should be undefined assert.equal(tree, undefined); // When NewRelicConfig is valid, tree will be `ok`. EmberNewRelic.isValidNewRelicConfig = true; tree = EmberNewRelic.writeTrackingCodeTree(); assert.ok(tree); builder = new broccoli.Builder(tree); return builder.build().then(function(results) { var contents; contents = fs.readFileSync( path.join(results.directory, EmberNewRelic.outputPath), 'utf-8' ); assert.equal( contents, EmberNewRelic.getNewRelicTrackingCode(newRelicConfig) ); }); }); });