Changeset 179

Show
Ignore:
Timestamp:
08/21/08 20:30:55 (3 months ago)
Author:
johnbywater
Message:

Adding tests for geochrono page controller. Refactored views and page controller into 'moovc'.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/microfacts/public/behaviour/app/controllers/geochronopage_controller.js

    r172 r179  
    11var GeochronoPageController = new Class({ 
    2     Extends: Controller, 
     2    Extends: BaseController, 
     3    name: 'GeochronoPageController', 
    34 
    4     onFactletSelect: function(factlet) { 
    5         console.log('GeoChronoPageController: saw factletSelect event'); 
    6         console.log(factlet); 
    7         this.fireEvent('factletSelect', factlet); 
    8     }, 
     5    setupViews: function (element) { 
     6        this.element.getElements('#map').each(function (el) { 
     7            this.log("Creating map view for element:"); 
     8            this.log(el); 
     9            var view = new MapView(el); 
     10            this.addView(view); 
     11        }, this); 
     12        this.element.getElements('#timeline').each(function (el) { 
     13            this.log("Creating timeline view for element:"); 
     14            this.log(el); 
     15            var view = new TimelineView(el); 
     16            this.addView(view); 
     17        }, this); 
     18        this.log('Done'); 
     19 
     20        this.model.startWithThread( 
     21            payloadThread,         // From HTML doc. 
     22            payloadThreadFactlets  // From HTML doc. 
     23        ); 
     24    } 
    925     
    10     onFactletUnselect: function(factlet) { 
    11         console.log('GeoChronoPageController: saw factletUnselect event'); 
    12         console.log(factlet); 
    13         this.fireEvent('factletUnselect', factlet); 
    14     }, 
    15      
    16     initialize: function (element) { 
    17         this.initModel(); 
    18         console.log('GeochronoPageController: initialize'); 
    19         this.controllers = []; 
    20         element.getElements('#map').each(function (el) { 
    21             console.log("Constructing map controller for element:"); 
    22             console.log(el); 
    23             var controller = new MapController(el); 
    24             this.addController(controller); 
    25         }, this); 
    26         element.getElements('#timeline').each(function (el) { 
    27             console.log("Constructing timeline controller for element:"); 
    28             console.log(el); 
    29             var controller = new TimelineController(el); 
    30             this.addController(controller); 
    31         }, this); 
    32         console.log('Done'); 
    33  
    34         this.model.startWithThread(payloadThread, payloadThreadFactlets); 
    35     }, 
    36  
    37     initModel: function (payloadThread) { 
    38         this.model = new Model(); 
    39         this.model.addEvent('threadStart', this.onThreadStart.bind(this)); 
    40     }, 
    41  
    42     onThreadStart: function() { 
    43         console.log('ThreadPageController: onThreadStart'); 
    44         console.log(arguments); 
    45         this.fireEvent('threadStart', arguments); 
    46     }, 
    47  
    48     addController: function(controller) { 
    49         console.log("Adding controller:"); 
    50         console.log(controller); 
    51         this.controllers.push(controller); 
    52         this.addEvent('threadStart', controller.onThreadStart.bind(controller)); 
    53         controller.addEvent('factletSelect', this.onFactletSelect.bind(this)); 
    54         this.addEvent('factletSelect', controller.onFactletSelect.bind(controller)); 
    55         controller.addEvent('factletUnselect', this.onFactletUnselect.bind(this)); 
    56         this.addEvent('factletUnselect', controller.onFactletUnselect.bind(controller)); 
    57     } 
    5826}); 
    5927 
  • trunk/microfacts/public/behaviour/app/views/mapview.js

    r172 r179  
    1 // OpenLayers.Feature.Vector.style['default']['strokeWidth'] = '2'; 
    2  
    3 var MapController = new Class({ 
    4     Implements: Events, 
    5  
    6     initialize: function (element) { 
    7         this.element = element; 
    8         //if (! this.element.id) { 
    9         //    console.error("Map element has no id attribute."); 
    10             // Now die. 
    11         //} 
    12         this.initMap(); 
    13         //this.addEvent('factletSelect', this.onFactletSelected.bind(this)); 
    14     }, 
    15  
    16     initMap: function () { 
     1var MapView = new Class({ 
     2    Extends: BaseView, 
     3    name: 'MapView', 
     4 
     5    setupView: function () { 
    176        this.map = new OpenLayers.Map(this.element.id); 
    187        this.baseLayer = new OpenLayers.Layer.WMS( 
     
    7059    }, 
    7160     
    72     onThreadStart: function() { 
    73         this.factletObjectsById = {}; 
    74         console.log("MapController saw threadStart event"); 
    75         console.log(arguments); 
    76         this.thread = arguments[0]; 
    77         this.factlets = arguments[1]; 
    78         this.factlets.each(function (factletObject) { 
    79             this.storeFactletObjectById(factletObject); 
    80         }, this); 
    81         var factletsData = []; 
    82         this.factlets.each(function (factletObject) { 
    83             if (factletObject.data.location) { 
    84                 factletsData.push(factletObject.data); 
    85             } 
    86         }); 
    87         console.log("Factlet data:"); 
    88         console.log(factletsData); 
    89         this.drawFactlets(factletsData); 
    90     }, 
    91  
    9261    drawFactlets: function(factletsData) { 
    9362        var featuresData = this.factletsToGeoJson(factletsData); 
     
    12493        var minLon = null; 
    12594        var maxLon = null; 
    126         console.log("Making bounds."); 
     95        this.log("Making bounds."); 
    12796        factletsData.each(function (factletData) { 
    12897            var location = factletData.location; 
     
    13099                var lon = location.coordinates[0]; 
    131100                var lat = location.coordinates[1]; 
    132                 console.log("Location:"); 
    133                 console.log(location); 
     101                this.log("Location:"); 
     102                this.log(location); 
    134103                if (maxLon == null) { 
    135104                    maxLon = lon; 
     
    161130        bounds.extend(new OpenLayers.LonLat(minLon, minLat)); 
    162131        bounds.extend(new OpenLayers.LonLat(maxLon, maxLat)); 
    163         console.log("Zooming to bounds:"); 
    164         console.log(bounds); 
     132        this.log("Zooming to bounds:"); 
     133        this.log(bounds); 
    165134        this.map.zoomToExtent(bounds); 
    166135        this.map.zoomToScale(0); 
     
    172141 
    173142    onFeatureSelect: function(feature) { 
    174         console.log("onFeatureSelect"); 
    175         console.log(feature); 
     143        this.log("onFeatureSelect"); 
     144        this.log(feature); 
    176145        var factletId = this.getIdFromFeature(feature); 
    177146        var factletObject = this.findFactletObject(factletId); 
     
    180149 
    181150    getIdFromFeature: function(feature) { 
    182         console.log("Getting factlet id from feature:"); 
     151        this.log("Getting factlet id from feature:"); 
    183152        var id = feature.data.factlet.id; 
    184         console.log(id); 
     153        this.log(id); 
    185154        return id; 
    186155    }, 
     
    193162 
    194163    onFactletSelect: function(factletObject) { 
    195         console.log("MapController saw factletSelect event"); 
    196         console.log("factletObject:"); 
    197         console.log(factletObject); 
     164        this.log("MapView saw factletSelect event"); 
     165        this.log("factletObject:"); 
     166        this.log(factletObject); 
    198167        if (this.selectedFeature) { 
    199168            this.removeFactletSummary(); 
     
    206175 
    207176    onFactletUnselect: function(factlet) { 
    208         console.log("MapController saw factletUnselect event:"); 
     177        this.log("MapView saw factletUnselect event:"); 
    209178        if (this.selectedFeature) { 
    210179            this.removeFactletSummary(); 
     
    213182    }, 
    214183 
    215     findFactletObject: function(factletId) { 
    216         return this.factletObjectsById[factletId]; 
    217     }, 
    218  
    219     storeFactletObjectById: function(factletObject) { 
    220         this.factletObjectsById[factletObject.data.id] = factletObject; 
    221     }, 
    222  
    223184    findFeature: function(factletObject) { 
    224         console.log("MapController: finding map feature for factlet"); 
    225         console.log("factletObject:"); 
    226         console.log(factletObject); 
     185        this.log("MapView: finding map feature for factlet"); 
     186        this.log("factletObject:"); 
     187        this.log(factletObject); 
    227188        var mapFeature = null; 
    228189        this.markerLayer.features.each( function(mf) { 
     
    233194            } 
    234195        }, this); 
    235         console.log("mapFeature:"); 
    236         console.log(mapFeature); 
     196        this.log("mapFeature:"); 
     197        this.log(mapFeature); 
    237198        return mapFeature; 
    238199    }, 
  • trunk/microfacts/public/behaviour/app/views/timelineview.js

    r172 r179  
    1 var TimelineController = new Class({ 
    2     Implements: Events, 
     1var TimelineView = new Class({ 
     2    Extends: BaseView, 
     3    name: 'TimelineView', 
    34 
    4     initialize: function (element) { 
    5         this.element = element; 
    6         this.initTimeline(); 
    7     }, 
    8  
    9     initTimeline: function () { 
     5    setupView: function () { 
    106        var eventSource = new Timeline.DefaultEventSource(); 
    117        var theme = Timeline.ClassicTheme.create(); 
     
    4440    }, 
    4541     
    46     onThreadStart: function() { 
    47         console.log("TimelineController saw threadStart event"); 
    48         console.log(arguments); 
    49         this.thread = arguments[0]; 
    50         this.factlets = arguments[1];  // Model objects. 
    51         console.log(this.thread); 
    52         console.log("Timeline factlets:"); 
    53         console.log(this.factlets); 
    54  
    55         this.factletObjectsById = {}; 
    56         this.factlets.each(function (factletObject) { 
    57             this.storeFactletObjectById(factletObject); 
    58         }, this); 
    59  
    60         var factletsData = []; 
    61         this.factlets.each(function (factletObject) { 
    62             if (factletObject.data.start) { 
    63                 factletsData.push(factletObject.data); 
    64             } 
    65         }); 
    66         console.log("Factlet data:"); 
    67         console.log(factletsData); 
    68         this.drawFactlets(factletsData); 
    69     }, 
    70  
    7142    findFactletFromEvent: function(timelineEvent) { 
    7243        var factletId = timelineEvent._obj.id; 
    7344        return this.findFactletObject(factletId); 
    74     }, 
    75  
    76     findFactletObject: function(factletId) { 
    77         return this.factletObjectsById[factletId]; 
    78     }, 
    79  
    80     storeFactletObjectById: function(factletObject) { 
    81         var factletId = factletObject.data.id; 
    82         this.factletObjectsById[factletId] = factletObject; 
    8345    }, 
    8446 
     
    10365    onEventSelect: function(x, y, timelineEvent) { 
    10466        var factletObject = this.findFactletFromEvent(timelineEvent); 
    105         console.log("TimelineController: fired factletSelect event"); 
    106         console.log("factlet object:"); 
    107         console.log(factletObject); 
     67        this.log("TimelineView: fired factletSelect event"); 
     68        this.log("factlet object:"); 
     69        this.log(factletObject); 
    10870        this.fireEvent('factletSelect', factletObject, x, y); 
    10971    }, 
    11072 
    11173    onFactletSelect: function(factletObject, x, y) { 
    112         console.log("TimelineController: saw factletSelect event"); 
    113         console.log("factlet object:"); 
    114         console.log(factletObject); 
     74        this.log("TimelineView: saw factletSelect event"); 
     75        this.log("factlet object:"); 
     76        this.log(factletObject); 
    11577        this.selectedEvent = this.findEvent(factletObject); 
    116         console.log("selected event:"); 
    117         console.log(this.selectedEvent); 
     78        this.log("selected event:"); 
     79        this.log(this.selectedEvent); 
    11880        if (this.selectedEvent) { 
    11981            this.scrollSelectedEvent(); 
     
    12183    }, 
    12284 
     85    getEventsIterator: function() { 
     86        return this.eventSource._events.getAllIterator(); 
     87    }, 
     88 
    12389    findEvent: function(factletObject) { 
    124         console.log("TimelineController: Finding timeline event for factlet"); 
    125         console.log("factlet object:"); 
    126         console.log(factletObject); 
     90        this.log("TimelineView: Finding timeline event for factlet"); 
     91        this.log("factlet object:"); 
     92        this.log(factletObject); 
    12793        var timelineEvent = null; 
    128         var iterator = this.eventSource._events.getAllIterator() 
     94        var iterator = this.getEventsIterator() 
    12995        var te = iterator.next(); 
    13096        while(te) { 
     
    136102            te = iterator.next();  
    137103        } 
    138         console.log("timeline event:"); 
    139         console.log(timelineEvent); 
     104        this.log("timeline event:"); 
     105        this.log(timelineEvent); 
    140106        return timelineEvent; 
    141107    }, 
    142108 
    143109    scrollEarliestLeft: function() { 
    144         var d = this.eventSource.getEarliestDate(); 
    145         console.warn("Earliest date:"); 
    146         console.warn(d); 
    147         this.band.setMinVisibleDate(d); 
     110        var startDate = this.eventSource.getEarliestDate(); 
     111        this.log("Scrolling earliest left"); 
     112        this.log("date:"); 
     113        this.log(startDate); 
     114        if (startDate) { 
     115            this.band.setMinVisibleDate(startDate); 
     116        } 
    148117    }, 
    149118 
    150119    scrollSelectedEvent: function() { 
    151         console.log("Scrolling event left:"); 
    152         var start = this.selectedEvent.getStart(); 
    153         console.log("start:"); 
    154         console.log(start); 
    155         this.band.setCenterVisibleDate(start); 
     120        this.log("Scrolling event centre:"); 
     121        var startDate = this.selectedEvent.getStart(); 
     122        this.log("date:"); 
     123        this.log(startDate); 
     124        if (startDate) { 
     125            this.band.setCenterVisibleDate(startDate); 
     126        } 
    156127    }, 
    157128 
  • trunk/microfacts/public/behaviour/lib/domainobject.js

    r163 r179  
    11var DomainObject = new Class({ 
    2     Implements: [Events, Options]
     2    Extends: BaseModel
    33     
    44    options: { 
     
    5959 
    6060    requestFailure: function (json) { 
    61         console.error("request failed!"); 
    62         console.error(arguments);    
     61        this.error("request failed!"); 
     62        this.error(arguments);    
    6363    } 
    6464}); 
     65 
     66// TODO: Move below functionality to Model. 
    6567 
    6668DomainObject.Register = { 'Thread': {}, 'Factlet': {} }; 
  • trunk/microfacts/public/behaviour/load.js

    r173 r179  
    3636}); 
    3737 
     38loader.addModule({ 
     39    name: "simile", 
     40    type: "js", 
     41    path: "vendor/simile/timeline/timeline-api.js", 
     42    varName: "Timeline" 
     43}); 
     44 
    3845// ==================================================== 
    3946// = Base classes, DomainObject, View, Controller, Delegator = 
     
    4148 
    4249loader.addModule({ 
     50    name: "moovc", 
     51    type: "js", 
     52    path: "lib/moovc.js?" + Math.random(), 
     53    requires: ['mootools'], 
     54    varName: "LayerBase" 
     55}); 
     56 
     57loader.addModule({ 
    4358    name: "model", 
    4459    type: "js", 
    4560    path: "app/models/model.js?" + Math.random(), 
    46     requires: ['mootools'], 
     61    requires: ['moovc'], 
    4762    varName: "Model" 
    4863}); 
     
    5267    type: "js", 
    5368    path: "lib/domainobject.js?" + Math.random(), 
    54     requires: ['mootools'], 
     69    requires: ['moovc'], 
    5570    varName: "DomainObject" 
    5671}); 
     
    6075    type: "js", 
    6176    path: "lib/view.js?" + Math.random(), 
    62     requires: ['mootools'], 
     77    requires: ['moovc'], 
    6378    varName: "View" 
    6479}); 
     
    121136}); 
    122137 
     138loader.addModule({ 
     139    name: "mapview", 
     140    type: "js", 
     141    path: "app/views/mapview.js?" + Math.random(), 
     142    requires: ['moovc', 'openlayers'], 
     143    varName: "MapView" 
     144}); 
     145 
     146loader.addModule({ 
     147    name: "timelineview", 
     148    type: "js", 
     149    path: "app/views/timelineview.js?" + Math.random(), 
     150    requires: ['moovc', 'simile'], 
     151    varName: "TimelineView" 
     152}); 
     153 
    123154// =============== 
    124155// = Controllers = 
     
    163194 
    164195loader.addModule({ 
    165     name: "simile", 
    166     type: "js", 
    167     path: "vendor/simile/timeline/timeline-api.js", 
    168     varName: "Timeline" 
    169 }); 
    170  
    171 loader.addModule({ 
    172     name: "mapcontroller", 
    173     type: "js", 
    174     path: "lib/mapcontroller.js?" + Math.random(), 
    175     requires: ['controller', 'openlayers'], 
    176     varName: "MapController" 
    177 }); 
    178  
    179 loader.addModule({ 
    180     name: "timelinecontroller", 
    181     type: "js", 
    182     path: "lib/timelinecontroller.js?" + Math.random(), 
    183     requires: ['mootools', 'simile'], 
    184     varName: "TimelineController" 
    185 }); 
    186  
    187 loader.addModule({ 
    188196    name: "microfacts", 
    189197    type: "js", 
    190198    path: "app/microfacts.js?" + Math.random(), 
    191     requires: ['domainobject', 'view', 'controller', 'microfactscontroller', 'factletcontroller', 'threadfactletscontroller', 'mapcontroller', 'timelinecontroller'], 
     199    requires: ['domainobject', 'view', 'controller', 'microfactscontroller', 'factletcontroller', 'threadfactletscontroller', 'mapview', 'timelineview', 'geochronopagecontroller'], 
    192200    varName: "Microfacts" 
    193201}); 
     
    205213    type: "js", 
    206214    path: "app/controllers/geochronopage_controller.js?" + Math.random(), 
    207     requires: ['model', 'domainobject', 'view', 'controller', 'thread', 'factlet', 'mapcontroller', 'timelinecontroller'], 
     215    requires: ['moovc', 'model', 'domainobject', 'view', 'controller', 'thread', 'factlet', 'mapview', 'timelineview'], 
    208216    varName: "GeochronoPageController" 
    209217}); 
  • trunk/microfacts/public/test/index.html

    r176 r179  
    3030      position: absolute; 
    3131      bottom: 0; 
     32      visibility: hidden; 
    3233    } 
    3334  </style> 
     
    4950   </script> 
    5051 
     52  <script type="text/javascript" src="spec/domain_data.js?123"></script> 
    5153  <script type="text/javascript" src="spec/model_spec.js?123"></script> 
    5254  <script type="text/javascript" src="spec/controller_spec.js?123"></script> 
    5355  <script type="text/javascript" src="spec/view_spec.js?123"></script> 
     56  <script type="text/javascript" src="spec/mapview_spec.js?123"></script> 
     57  <script type="text/javascript" src="spec/timelineview_spec.js?123"></script> 
     58  <script type="text/javascript" src="spec/geochronopage_controller_spec.js?123"></script> 
     59  <!-- 
    5460  <script type="text/javascript" src="spec/threadfactletscontroller_spec.js?123"></script> 
    55   <!-- 
    56   <script type="text/javascript" src="spec/mapcontroller_spec.js?123"></script> 
    57   <script type="text/javascript" src="spec/timelinecontroller_spec.js?123"></script> 
    5861  --> 
    5962 
     
    98101    </div> 
    99102  </div> 
    100    
     103  
     104      <script type="text/javascript" charset="utf-8"> 
     105          var payloadThread = {"factlets": [1030, 1031, 1032], "id": 364, "title": "The Bloomsbury Group"}; 
     106          var payloadThreadFactlets = [{"end": "1941-03-28 00:00:00", "description": "(Adeline) Virginia Woolf (n\u00e9e Stephen; 25 January 1882 \u2013 28 March 1941) was an English novelist and essayist regarded as one of the foremost modernist literary figures of the twentieth century.\n\nDuring the interwar period, Woolf was a significant figure in London literary society and a member of the Bloomsbury Group. Her most famous works include the novels Mrs Dalloway (1925), To the Lighthouse (1927), and Orlando (1928), and the book-length essay A Room of One's Own (1929) with its famous dictum, 'a woman must have money and a room of her own if she is to write fiction.'", "title": "Virginia Woolf", "start": "1882-01-25 00:00:00", "location": {"type": "Point", "coordinates": [-0.12553, 51.50842]}, "id": 1030}, {"end": "1932-01-21 00:00:00", "description": "British writer and critic. He is best known for establishing a new form of biography in which psychological insight and sympathy are combined with irreverence and wit. His 1921 biography Queen Victoria was awarded the James Tait Black Memorial Prize.", "title": "Lytton Strachey", "start": "1880-03-01 00:00:00", "location": null, "id": 1031}, {"end": "1946-04-21 00:00:00", "description": "John Maynard Keynes, 1st Baron Keynes (Styled: The Rt. Hon. The Lord Keynes), CB (5 June 1883 \u2013 21 April 1946) was a British economist whose ideas, called Keynesian economics, had a major impact on modern economic and political theory as well as on many governments' fiscal policies. He advocated interventionist government policy, by which the government would use fiscal and monetary measures to mitigate the adverse effects of economic recessions, depressions and booms. He is one of the fathers of modern theoretical macroeconomics.", "title": "John Maynard Keynes", "start": "1883-06-05 00:00:00", "location": null, "id": 1032}]; 
     107      </script> 
     108 
    101109</body> 
    102110</html> 
  • trunk/microfacts/public/test/spec/mapview_spec.js

    r154 r179  
    1 var factlets = [ 
    2     { 
    3         'id': 101, 
    4         'title': 'My Factlet', 
    5         'location' : { 
    6             "type": "Point", 
    7             "coordinates": [51.50842, -0.12553] 
    8         } 
    9     }, 
    10     { 
    11         'id': 102, 
    12         'title': 'Your Factlet', 
    13         'location' : { 
    14             "type": "Point",  
    15             "coordinates": [0, 0] 
    16         } 
    17     } 
    18 ]; 
    19  
    20 describe('MapController', { 
     1describe('MapView', { 
    212 
    223// 0. Instantiate javascript object. 
     
    3112    before_each: function () { 
    3213        var elem = $('map'); 
    33         m = new MapController(elem); 
     14        m = new MapView(elem); 
    3415    }, 
    3516 
     
    4324 
    4425    'should convert factlets to GeoJSON': function () { 
    45         var geojson = m.factletsToGeoJson(factlets); 
     26        var geojson = m.factletsToGeoJson(factletsData); 
    4627        expect(geojson.type).should_be("FeatureCollection"); 
    4728        expect(geojson.features[0].type).should_be("Feature"); 
     
    8061    }, 
    8162 
    82     'should draw factlet on map': function () { 
    83         expect($chk(m.drawFactlets(factlets))).should_be(false); 
     63    'should draw factlets on map': function () { 
     64        expect($chk(m.drawFactlets(factletsData))).should_be(false); 
    8465    }, 
    8566 
     
    8970            returns.push('factletSelect event fired!'); 
    9071        }); 
    91         m.drawFactlets(factlets); 
     72        m.onThreadStart(threadObject, factletObjects); 
    9273        m.onFeatureSelect(m.markerLayer.features[0]); 
    9374        expect(returns).should_be(['factletSelect event fired!']); 
     
    9980            returns.push('factletSelect event fired!'); 
    10081        }); 
    101         m.drawFactlets(factlets); 
    102         m.onFactletSelect(factlets[0]); 
     82        m.onThreadStart(threadObject, factletObjects); 
     83        m.onFactletSelect(factletObjects[0]); 
    10384        expect(returns).should_be([]); 
    10485    }, 
     
    11091            returns.push('factletSelect event fired!'); 
    11192        }); 
    112         m.drawFactlets(factlets); 
     93        m.onThreadStart(threadObject, factletObjects); 
    11394        m.onFeatureSelect(m.markerLayer.features[0]); 
    11495        expect(returns).should_be(['factletSelect event fired!']); 
  • trunk/microfacts/public/test/spec/timelineview_spec.js

    r154 r179  
    1 var factlets = [ 
    2     { 
    3         'id': 101, 
    4         'title': 'My Factlet', 
    5         'location' : { 
    6             "type": "Point", 
    7             "coordinates": [51.50842, -0.12553] 
    8         }, 
    9         'start': '1920', 
    10         'end': '1921' 
    11     }, 
    12     { 
    13         'id': 102, 
    14         'title': 'Your Factlet', 
    15         'location' : { 
    16             "type": "Point",  
    17             "coordinates": [0, 0] 
    18         }, 
    19         'start': '1925' 
    20     } 
    21 ]; 
    22  
    23 describe('TimelineController', { 
     1describe('TimelineView', { 
    242 
    253// 0. Instantiate javascript object. 
     
    3412    before_each: function () { 
    3513        var elem = $('timeline'); 
    36         t = new TimelineController(elem); 
     14        t = new TimelineView(elem); 
    3715    }, 
    3816 
     
    4624 
    4725    'should draw factlet on timeline': function () { 
    48         expect(t.drawFactlets(factlets)).should_be(undefined); 
     26        expect(t.onThreadStart(threadObject, factletObjects)).should_be(undefined); 
    4927    }, 
    5028 
     
    5432            returns.push('factletSelect event fired!'); 
    5533        }); 
    56         t.drawFactlets(factlets); 
    57         var event = t.simile.getBand(0).getEventSource()._events.getAllIterator().next(); 
    58         t.onEventSelect(0, 0 , event); 
     34        t.onThreadStart(threadObject, factletObjects); 
     35        var timelineEvent = t.getEventsIterator().next(); 
     36        expect($chk(timelineEvent)).should_be(true); 
     37        t.onEventSelect(0, 0 , timelineEvent); 
    5938        expect(returns).should_be(['factletSelect event fired!']); 
    6039    }, 
     
    6544            returns.push('factletSelect event fired!'); 
    6645        }); 
    67         t.drawFactlets(factlets); 
    68         t.onFactletSelect(factlets[0]); 
     46        t.onThreadStart(threadObject, factletObjects); 
     47        t.onFactletSelect(factletObjects[0]); 
    6948        expect(returns).should_be([]); 
    7049    }, 
     
    7756            returns.push('factletSelect event fired!'); 
    7857        }); 
    79         t.drawFactlets(factlets); 
    80         var event = t.simile.getBand(0).getEventSource()._events.getAllIterator().next(); 
    81         t.onEventSelect(0, 0 , event); 
     58        t.onThreadStart(threadObject, factletObjects); 
     59        var timelineEvent = t.simile.getBand(0).getEventSource()._events.getAllIterator().next(); 
     60        t.onEventSelect(0, 0 , timelineEvent); 
    8261        expect(returns).should_be(['factletSelect event fired!']); 
    8362    }