MailOnline/videojs-vast-vpaid

View on GitHub
test/ads/vast/Companion.spec.js

Summary

Maintainability
A
35 mins
Test Coverage
var Companion = require('ads/vast/Companion');
var TrackingEvent = require('ads/vast/TrackingEvent');

var xml = require('utils/xml');

describe("Companion", function(){
  it("must return an instance of Companion", function(){
    var companion = new Companion(xml.toJXONTree('<Companion><StaticResource></StaticResource></Companion>'));
    assert.instanceOf(companion, Companion);
  });

  //Required Elements
  describe("staticResource", function(){
    it("must contain the static resource and mime type", function(){
      var companionXML = '<Companion><StaticResource creativeType="image/jpeg"><![CDATA[http://www.example.com/image.jpg]]></StaticResource></Companion>';
      var companion = new Companion(xml.toJXONTree(companionXML));
      assert.equal(companion.staticResource, "http://www.example.com/image.jpg");
      assert.equal(companion.creativeType, "image/jpeg");
    });
  });

  var companionXML = '<Companion width="300" height="250">' +
        '<StaticResource creativeType="image/jpeg"><![CDATA[http://www.example.com/image.jpg]]></StaticResource>' +
        '<TrackingEvents><Tracking event="creativeView"><![CDATA[http://www.example.com/whatever]]></Tracking></TrackingEvents>' +
        '<CompanionClickThrough><![CDATA[http://www.example.com/tracker.html]]></CompanionClickThrough>' +
    '</Companion>';

  //Optional Elements
  describe("trackingEvents", function(){
    /*jshint maxlen: 500 */
    it("must be filled with all the tracking events that the xml provides", function(){
      var companion = new Companion(xml.toJXONTree(companionXML));
      var trackingEvents = companion.trackingEvents;

      //First tracking event
      var tracking = trackingEvents[0];
      assert.instanceOf(tracking, TrackingEvent);
      assert.equal(tracking.name, 'creativeView');
    });
  });

  describe("dimensions", function(){
    it("must contain creative dimensions", function(){
      var companion = new Companion(xml.toJXONTree(companionXML));
      assert.equal(companion.width, 300);
      assert.equal(companion.height, 250);
    });
  });

  describe("clickthrough", function(){
    it("must provide companion impression tracker", function(){
      var companionXML = '<Companion width="300" height="250">' +
        '<StaticResource creativeType="image/jpeg"><![CDATA[http://www.example.com/image.jpg]]></StaticResource>'+
        '<CompanionClickThrough><![CDATA[http://www.example.com/tracker.html]]></CompanionClickThrough>'+
        '</Companion>';
      var companion = new Companion(xml.toJXONTree(companionXML));
      assert.equal(companion.companionClickThrough, "http://www.example.com/tracker.html");
    });
  });
});