@@ -85,3 +85,77 @@ describe('tabs', function() {
8585 expect ( contents . eq ( 1 ) ) . toHaveClass ( 'active' ) ;
8686 } ) ;
8787} ) ;
88+
89+
90+ describe ( 'tabs controller' , function ( ) {
91+ var scope , ctrl ;
92+
93+ beforeEach ( inject ( function ( $controller , $rootScope ) {
94+ scope = $rootScope ;
95+
96+ // instantiate the controller stand-alone, without the directive
97+ ctrl = $controller ( TabsController , { $scope : scope , $element : null } ) ;
98+ } ) ) ;
99+
100+
101+ describe ( 'select' , function ( ) {
102+
103+ it ( 'should mark given pane selected' , function ( ) {
104+ var pane = { } ;
105+
106+ scope . select ( pane ) ;
107+ expect ( pane . selected ) . toBe ( true ) ;
108+ } ) ;
109+
110+
111+ it ( 'should deselect other panes' , function ( ) {
112+ var pane1 = { } , pane2 = { } , pane3 = { } ;
113+
114+ ctrl . addPane ( pane1 ) ;
115+ ctrl . addPane ( pane2 ) ;
116+ ctrl . addPane ( pane3 ) ;
117+
118+ scope . select ( pane1 ) ;
119+ expect ( pane1 . selected ) . toBe ( true ) ;
120+ expect ( pane2 . selected ) . toBe ( false ) ;
121+ expect ( pane3 . selected ) . toBe ( false ) ;
122+
123+ scope . select ( pane2 ) ;
124+ expect ( pane1 . selected ) . toBe ( false ) ;
125+ expect ( pane2 . selected ) . toBe ( true ) ;
126+ expect ( pane3 . selected ) . toBe ( false ) ;
127+
128+ scope . select ( pane3 ) ;
129+ expect ( pane1 . selected ) . toBe ( false ) ;
130+ expect ( pane2 . selected ) . toBe ( false ) ;
131+ expect ( pane3 . selected ) . toBe ( true ) ;
132+ } ) ;
133+ } ) ;
134+
135+
136+ describe ( 'addPane' , function ( ) {
137+
138+ it ( 'should append pane' , function ( ) {
139+ var pane1 = { } , pane2 = { } ;
140+
141+ expect ( scope . panes ) . toEqual ( [ ] ) ;
142+
143+ ctrl . addPane ( pane1 ) ;
144+ expect ( scope . panes ) . toEqual ( [ pane1 ] ) ;
145+
146+ ctrl . addPane ( pane2 ) ;
147+ expect ( scope . panes ) . toEqual ( [ pane1 , pane2 ] ) ;
148+ } ) ;
149+
150+
151+ it ( 'should select the first one' , function ( ) {
152+ var pane1 = { } , pane2 = { } ;
153+
154+ ctrl . addPane ( pane1 ) ;
155+ expect ( pane1 . selected ) . toBe ( true ) ;
156+
157+ ctrl . addPane ( pane2 ) ;
158+ expect ( pane1 . selected ) . toBe ( true ) ;
159+ } ) ;
160+ } ) ;
161+ } ) ;
0 commit comments