diff --git a/README.md b/README.md index ef956a72ba8..5b74f23ac8b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[Grafana](http://grafana.org) [![Build Status](https://api.travis-ci.org/grafana/grafana.svg)](https://travis-ci.org/grafana/grafana) [![Coverage Status](https://coveralls.io/repos/grafana/grafana/badge.png?branch=develop)](https://coveralls.io/r/grafana/grafana?branch=develop) +[Grafana](http://grafana.org) [![Build Status](https://api.travis-ci.org/grafana/grafana.svg)](https://travis-ci.org/grafana/grafana) [![Coverage Status](https://coveralls.io/repos/grafana/grafana/badge.png)](https://coveralls.io/r/grafana/grafana) ================ [Website](http://grafana.org) | [Twitter](http://twitter.com/grafana) | diff --git a/grafana.sublime-project b/grafana.sublime-project deleted file mode 100644 index 127807d37de..00000000000 --- a/grafana.sublime-project +++ /dev/null @@ -1,18 +0,0 @@ -{ - "folders": - [ - { - "follow_symlinks": true, - "path": ".", - "folder_exclude_patterns": [ - "node_modules" - ] - } - ], - "settings": - { - "tab_size": 2, - "translate_tabs_to_spaces": true, - "trim_trailing_white_space_on_save": true - } -} diff --git a/src/test/specs/helpers.js b/src/test/specs/helpers.js index f5c6a88d584..0383b69b5c0 100644 --- a/src/test/specs/helpers.js +++ b/src/test/specs/helpers.js @@ -24,7 +24,9 @@ define([ return inject(function($controller, $rootScope, $q) { self.scope = $rootScope.$new(); self.scope.panel = {}; + self.scope.row = { panels:[] }; self.scope.filter = new FilterSrvStub(); + $rootScope.colors = []; for (var i = 0; i < 50; i++) { $rootScope.colors.push('#' + i); } diff --git a/src/test/specs/row-ctrl-specs.js b/src/test/specs/row-ctrl-specs.js new file mode 100644 index 00000000000..de149b70fac --- /dev/null +++ b/src/test/specs/row-ctrl-specs.js @@ -0,0 +1,62 @@ +define([ + './helpers', + 'controllers/row' +], function(helpers) { + 'use strict'; + + describe('RowCtrl', function() { + var ctx = new helpers.ControllerTestContext(); + + beforeEach(module('grafana.controllers')); + + beforeEach(ctx.providePhase()); + beforeEach(ctx.createControllerPhase('RowCtrl')); + + describe('when getting rowSpan', function() { + it('should return sum of panels spans', function() { + var spanLeft = ctx.scope.rowSpan({ panels: [{ span: 2 }, { span: 3 }] }); + expect(spanLeft).to.be(5); + }); + }); + + describe('when adding panel to row with 12 span panel', function() { + it('should split span in half and add panel with defaults', function() { + ctx.scope.row = { panels: [{ span: 12 }] }; + ctx.scope.add_panel_default('graph'); + + expect(ctx.scope.row.panels[0].span).to.be(6); + expect(ctx.scope.row.panels[1].span).to.be(6); + expect(ctx.scope.row.panels[1].type).to.be('graph'); + }); + }); + + describe('when duplicating panel', function() { + it('should try to add it to same row', function() { + var panel = { span: 4, attr: '123' }; + ctx.scope.row = { panels: [panel] }; + ctx.scope.duplicatePanel(panel, ctx.scope.row); + + expect(ctx.scope.row.panels[0].span).to.be(4); + expect(ctx.scope.row.panels[1].span).to.be(4); + expect(ctx.scope.row.panels[1].attr).to.be('123'); + }); + }); + + describe('when duplicating panel', function() { + it('should add row if there is no space left', function() { + var panel = { span: 12, attr: '123' }; + ctx.scope.row = { panels: [panel] }; + ctx.scope.dashboard = { rows: [ctx.scope.row] }; + + ctx.scope.duplicatePanel(panel, ctx.scope.row); + + expect(ctx.scope.row.panels[0].span).to.be(12); + expect(ctx.scope.row.panels.length).to.be(1); + expect(ctx.scope.dashboard.rows[1].panels[0].attr).to.be('123'); + }); + }); + + }); + +}); + diff --git a/src/test/test-main.js b/src/test/test-main.js index 7de59a19ee9..8de27db211a 100644 --- a/src/test/test-main.js +++ b/src/test/test-main.js @@ -117,6 +117,7 @@ require([ 'specs/lexer-specs', 'specs/parser-specs', 'specs/gfunc-specs', + 'specs/row-ctrl-specs', 'specs/graphiteTargetCtrl-specs', 'specs/influxdb-datasource-specs', 'specs/graph-ctrl-specs',