1 // ==========================================================================
  2 // Project:   SproutCore - JavaScript Application Framework
  3 // Copyright: ©2006-2011 Apple Inc. and contributors.
  4 // License:   Licensed under MIT license (see license.js)
  5 // ==========================================================================
  6 
  7 /*global module test equals context ok same Q$ htmlbody */
  8 
  9 var pane, textfield_view1, textfield_view2, textfield_view3, view1, view2, view3, view4, view5;
 10 
 11 var OLD;
 12     
 13 module("SC.View#nextValidKeyView", {
 14   setup: function() {
 15     SC.RunLoop.begin();
 16     
 17     pane = SC.Pane.design()
 18     .layout({ top: 0, left: 0, bottom:0, right: 0 })
 19     .childView(SC.TextFieldView.design())
 20     .childView(SC.View.design())
 21     .childView(SC.View.design()
 22       .childView(SC.View.design()
 23         .childView(SC.View.design()
 24           .childView(SC.View.design()
 25             .childView(SC.TextFieldView.design())
 26           )
 27         )
 28       )
 29     )
 30     .childView(SC.View.design())
 31     .childView(SC.View.design())
 32     .childView(SC.View.design())
 33     .childView(SC.View.design()
 34       .childView(SC.TextFieldView.design())
 35     )
 36     .childView(SC.View.design())
 37     .create();
 38     pane.append();
 39     SC.RunLoop.end();
 40     
 41     textfield_view1 = pane.childViews[0];
 42     textfield_view2 = pane.childViews[2].childViews[0].childViews[0].childViews[0].childViews[0];
 43     textfield_view3 = pane.childViews[6].childViews[0];
 44     view1 = pane.childViews[1];
 45     view2 = pane.childViews[3]; 
 46     view3 = pane.childViews[4];
 47     view4 = pane.childViews[5];
 48     view5 = pane.childViews[7];
 49     
 50     OLD = {
 51       FOCUS_ALL_CONTROLS: SC.FOCUS_ALL_CONTROLS,
 52       TABBING_ONLY_INSIDE_DOCUMENT: SC.TABBING_ONLY_INSIDE_DOCUMENT
 53     };
 54 
 55     SC.FOCUS_ALL_CONTROLS = SC.FOCUS_ALL_CONTROLS;
 56     SC.TABBING_ONLY_INSIDE_DOCUMENT = NO;
 57     
 58   },
 59   
 60 
 61   teardown: function() { 
 62     
 63     // restore old settings
 64     SC.FOCUS_ALL_CONTROLS = OLD.FOCUS_ALL_CONTROLS;
 65     SC.TABBING_ONLY_INSIDE_DOCUMENT = OLD.TABBING_ONLY_INSIDE_DOCUMENT;
 66 
 67     SC.RunLoop.begin();
 68     pane.remove();
 69     pane = textfield_view1 = textfield_view2 = textfield_view3 = view1 = view2 = view3 = null;
 70     SC.RunLoop.end();
 71   }
 72 });
 73 
 74 test("Navigate between textfields- going forward", function() {
 75   SC.FOCUS_ALL_CONTROLS = YES;
 76   SC.TABBING_ONLY_INSIDE_DOCUMENT = NO;
 77   
 78   var v = view2.nextValidKeyView();
 79   same(v, textfield_view3, "The next view should be " + textfield_view3.toString());
 80   
 81   v = textfield_view3.nextValidKeyView();
 82   same(v, null, "The next view should be null");
 83 });
 84 
 85 test("Navigate between textfields- going backwards", function() {
 86   SC.FOCUS_ALL_CONTROLS = YES;
 87   var v = view2.previousValidKeyView();
 88   same(v, textfield_view2, "The previous key view should be " + textfield_view2.toString());
 89 
 90 });
 91 
 92 
 93 test("Navigate forward with view that have a nextKeyView set", function() {
 94   SC.FOCUS_ALL_CONTROLS = YES;
 95   var v = view2.nextValidKeyView();
 96   same(v, textfield_view3, "The next view should be " + textfield_view3.toString());
 97   view3.set('nextKeyView', textfield_view1);
 98   v = view2.nextValidKeyView();
 99   same(v, textfield_view1, "The next view should be " + textfield_view1.toString());
100 });
101 
102 
103 test("Navigate backwards with view that have a previousKeyView set", function() {
104   SC.FOCUS_ALL_CONTROLS = YES;
105   var v = view2.previousValidKeyView();
106   same(v, textfield_view2, "The next view should be " + textfield_view2.toString());
107   view4.set('previousKeyView', textfield_view1);
108   v = textfield_view3.previousValidKeyView();
109   same(v, textfield_view1, "The next view should be " + textfield_view1.toString());
110 });
111