From a38bbd158706ac00e91a29fa96b3f783e8cb555f Mon Sep 17 00:00:00 2001
From: Bruno Trecenti <btrecent@thoughtworks.com>
Date: Tue, 25 Feb 2014 11:27:01 -0300
Subject: [PATCH] sorting cycles by their order

---
 src/models/cycle.js       |  6 +++++-
 src/models/radar.js       |  2 +-
 test/models/cycle-spec.js |  6 ++++++
 test/models/radar-spec.js | 16 ++++++++++++++--
 4 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/src/models/cycle.js b/src/models/cycle.js
index 5893aa2..b3f65b0 100644
--- a/src/models/cycle.js
+++ b/src/models/cycle.js
@@ -1,9 +1,13 @@
-tr.models.Cycle = function (name) {
+tr.models.Cycle = function (name, order) {
   var self = {};
 
   self.name = function () {
     return name;
   };
 
+  self.order = function () {
+    return order;
+  };
+
   return self;
 };
diff --git a/src/models/radar.js b/src/models/radar.js
index 7e48b63..c6bfdbd 100644
--- a/src/models/radar.js
+++ b/src/models/radar.js
@@ -54,7 +54,7 @@ tr.models.Radar = function() {
       }
     }
 
-    return cycleArray.slice(0);
+    return cycleArray.slice(0).sort(function (a, b) { return a.order() - b.order(); });
   };
 
   self.quadrants = function () {
diff --git a/test/models/cycle-spec.js b/test/models/cycle-spec.js
index ecba3d1..d02deeb 100644
--- a/test/models/cycle-spec.js
+++ b/test/models/cycle-spec.js
@@ -4,4 +4,10 @@ describe('tr.models.Cycle', function () {
 
     expect(cycle.name()).toEqual('My Cycle');
   });
+
+  it('has a order', function () {
+    var cycle = new tr.models.Cycle('My Cycle', 0);
+
+    expect(cycle.order()).toEqual(0);
+  });
 });
diff --git a/test/models/radar-spec.js b/test/models/radar-spec.js
index 8b565c7..09043d6 100644
--- a/test/models/radar-spec.js
+++ b/test/models/radar-spec.js
@@ -57,8 +57,8 @@ describe('tr.models.Radar', function () {
     var quadrant, radar, firstCycle, secondCycle;
 
     beforeEach(function () {
-      firstCycle = new tr.models.Cycle('Adopt');
-      secondCycle = new tr.models.Cycle('Hold');
+      firstCycle = new tr.models.Cycle('Adopt', 0);
+      secondCycle = new tr.models.Cycle('Hold', 1);
       quadrant = new tr.models.Quadrant('Fourth');
       radar = new tr.models.Radar();
     });
@@ -85,5 +85,17 @@ describe('tr.models.Radar', function () {
 
       expect(radar.cycles()).toEqual([firstCycle, secondCycle]);
     });
+
+    it('has sorts by the cycle order', function () {
+      quadrant.add([
+        new tr.models.Blip('C', secondCycle),
+        new tr.models.Blip('A', firstCycle),
+        new tr.models.Blip('B', firstCycle)
+      ]);
+
+      radar.setFirstQuadrant(quadrant);
+
+      expect(radar.cycles()).toEqual([firstCycle, secondCycle]);
+    });
   });
 });
-- 
2.39.5