sorting cycles by their order
authorBruno Trecenti <btrecent@thoughtworks.com>
Tue, 25 Feb 2014 14:27:01 +0000 (11:27 -0300)
committerBruno Trecenti <btrecent@thoughtworks.com>
Tue, 25 Feb 2014 14:27:01 +0000 (11:27 -0300)
src/models/cycle.js
src/models/radar.js
test/models/cycle-spec.js
test/models/radar-spec.js

index 5893aa2..b3f65b0 100644 (file)
@@ -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;
 };
index 7e48b63..c6bfdbd 100644 (file)
@@ -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 () {
index ecba3d1..d02deeb 100644 (file)
@@ -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);
+  });
 });
index 8b565c7..09043d6 100644 (file)
@@ -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]);
+    });
   });
 });