html5 boiler plate
[scannr.git] / js / flotr2 / spec / Graph.js
blob:a/js/flotr2/spec/Graph.js -> blob:b/js/flotr2/spec/Graph.js
--- a/js/flotr2/spec/Graph.js
+++ b/js/flotr2/spec/Graph.js
@@ -1,1 +1,80 @@
+describe('Graph', function () {
 
+  describe('Options', function () {
+    var
+      nodeA, nodeB,
+      a, b, x, i,
+      d1 = [],
+      options = {};
+
+      for (i = 0; i < 100; i++) {
+        x = (i*1000*3600*24*36.5);
+        d1.push([x, i+Math.random()*30+Math.sin(i/20+Math.random()*2)*20+Math.sin(i/10+Math.random())*10]);
+      }
+
+      options = {
+        xaxis : {
+          mode : 'time',
+          labelsAngle : 45
+        },
+        selection : {
+          mode : 'x'
+        },
+        HtmlText : false,
+      };
+
+    beforeEach(function () {
+      nodeA = buildNode();
+      Flotr = TestFlotr;
+    });
+
+    afterEach(function () {
+      destroyNode(nodeA);
+      a = b = null;
+      Flotr = null;
+    });
+
+    it('should override nested default options with user options', function() {
+      a = new TestFlotr.Graph(nodeA, d1, options);
+      expect(a.options.xaxis.mode).toEqual(options.xaxis.mode);
+    });
+    
+    it('should retain default options if user option\'s nested object does not define property', function() {
+      a = new TestFlotr.Graph(nodeA, d1, options);
+      expect(a.options.xaxis.tickFormatter).toBeTruthy();
+    });
+
+    it('should not affect default options when modifying graph options (objects)', function() {
+      a = new TestFlotr.Graph(nodeA, d1, options);
+      a.options.x2axis = {  
+        titleAlign : 'left'
+      };
+      a.options.xaxis.scaling = 'logarithmic';
+      expect(TestFlotr.defaultOptions.xaxis.scaling).toEqual('linear');
+      expect(TestFlotr.defaultOptions.x2axis.titleAlign).toBeFalsy();
+    });
+    
+    /*
+    it('should not affect default options when modifying graph options (arrays)', function() {
+      a = new TestFlotr.Graph(nodeA, d1, options);
+      a.options.colors[1] = '#bada55';
+      expect(TestFlotr.defaultOptions.colors[1]).toNotBe('#bada55');
+    });
+    */
+
+  });
+
+  function buildNode () {
+    var node = document.createElement('div');
+    document.body.appendChild(node);
+    node.style.width = '320px';
+    node.style.height = '240px';
+    return node;
+  }
+
+  function destroyNode (node) {
+    document.body.removeChild(node);
+  }
+
+});
+