11var $controller ,
22 $rootScope ,
3+ $timeout ,
34 $scope ;
5+ var keypather ;
6+ var apiMocks = require ( '../apiMocks/index' ) ;
47
58describe ( 'controllerApp' . bold . underline . blue , function ( ) {
6- beforeEach ( angular . mock . module ( 'app' ) ) ;
7-
8- beforeEach ( function ( ) {
9+ var ctx = { } ;
10+ function setup ( stateParams ) {
11+ angular . mock . module ( 'app' ) ;
12+ ctx . fakeuser = {
13+ attrs : angular . copy ( apiMocks . user ) ,
14+ oauthName : function ( ) {
15+ return 'user' ;
16+ }
17+ } ;
18+ ctx . fakeOrg1 = {
19+ attrs : angular . copy ( apiMocks . user ) ,
20+ oauthName : function ( ) {
21+ return 'org1' ;
22+ }
23+ } ;
24+ ctx . fakeOrg2 = {
25+ attrs : angular . copy ( apiMocks . user ) ,
26+ oauthName : function ( ) {
27+ return 'org2' ;
28+ }
29+ } ;
30+ var fetchUserMock = function ( cb ) {
31+ cb ( null , ctx . fakeuser ) ;
32+ } ;
33+ var fetchOrgsMock = function ( cb ) {
34+ cb ( null , { models : [ ctx . fakeOrg1 , ctx . fakeOrg2 ] } ) ;
35+ } ;
36+ ctx . stateParams = stateParams || {
37+ userName : 'username' ,
38+ instanceName : 'instancename'
39+ } ;
40+ angular . mock . module ( 'app' , function ( $provide ) {
41+ $provide . value ( 'fetchUser' , fetchUserMock ) ;
42+ $provide . value ( 'fetchOrgs' , fetchOrgsMock ) ;
43+ $provide . value ( '$stateParams' , ctx . stateParams ) ;
44+ } ) ;
945 angular . mock . inject ( function (
1046 _$controller_ ,
11- _$rootScope_
47+ _$rootScope_ ,
48+ _$timeout_ ,
49+ _keypather_
1250 ) {
1351 $controller = _$controller_ ;
1452 $rootScope = _$rootScope_ ;
1553 $scope = $rootScope . $new ( ) ;
16- } ) ;
17- } ) ;
54+ $timeout = _$timeout_ ;
55+ keypather = _keypather_ ;
1856
19- it ( 'initalizes $scope.dataApp properly' , function ( ) {
57+ $rootScope . safeApply = function ( cb ) {
58+ $timeout ( function ( ) {
59+ $scope . $digest ( ) ;
60+ } ) ;
61+ } ;
62+ } ) ;
2063 var ca = $controller ( 'ControllerApp' , {
2164 '$scope' : $scope
2265 } ) ;
66+ }
67+ describe ( 'basics' . blue , function ( ) {
68+ beforeEach ( function ( ) {
69+ setup ( ) ;
70+ } ) ;
71+ it ( 'initalizes $scope.dataApp properly' , function ( ) {
2372
24- expect ( $scope . dataApp ) . to . be . an . Object ;
25- $rootScope . $digest ( ) ;
26- } ) ;
27-
28- it ( 'creates a click handler that broadcasts' , function ( ) {
29- var clicked ;
30- var ca = $controller ( 'ControllerApp' , {
31- '$scope' : $scope
73+ expect ( $scope . dataApp ) . to . be . an . Object ;
74+ $rootScope . $digest ( ) ;
3275 } ) ;
3376
34- $rootScope . $digest ( ) ;
77+ it ( 'creates a click handler that broadcasts' , function ( ) {
78+ var clicked ;
79+ $rootScope . $digest ( ) ;
3580
36- $scope . $on ( 'app-document-click' , function ( ) {
37- clicked = true ;
38- } ) ;
81+ $scope . $on ( 'app-document-click' , function ( ) {
82+ clicked = true ;
83+ } ) ;
3984
40- $scope . dataApp . documentClickEventHandler ( ) ;
85+ $scope . dataApp . documentClickEventHandler ( ) ;
86+
87+ expect ( clicked ) . to . be . true ;
88+ } ) ;
89+ } ) ;
4190
42- expect ( clicked ) . to . be . true ;
91+ describe ( 'account stuff' . blue , function ( ) {
92+ describe ( 'No account already chosen' . blue , function ( ) {
93+ it ( 'should select user if nothing matches name in url ' , function ( done ) {
94+ setup ( { } ) ;
95+ var listFetchSpy = sinon . spy ( function ( event , name ) {
96+ expect ( name ) . to . equal ( ctx . fakeuser . oauthName ( ) ) ;
97+ expect ( $scope . dataApp . data . activeAccount ) . to . be . an . Object ;
98+ expect ( $scope . dataApp . data . activeAccount ) . to . equal ( ctx . fakeuser ) ;
99+ done ( ) ;
100+ } ) ;
101+ $scope . $on ( 'INSTANCE_LIST_FETCH' , listFetchSpy ) ;
102+ $rootScope . $digest ( ) ;
103+ $rootScope . $broadcast ( '$stateChangeStart' , null , {
104+ userName : 'username'
105+ } ) ;
106+ $rootScope . $digest ( ) ;
107+ } ) ;
108+ it ( 'should select user, matching it from the stateParams ' , function ( done ) {
109+ setup ( { } ) ;
110+ var listFetchSpy = sinon . spy ( function ( event , name ) {
111+ expect ( name ) . to . equal ( ctx . fakeuser . oauthName ( ) ) ;
112+ expect ( $scope . dataApp . data . activeAccount ) . to . be . an . Object ;
113+ expect ( $scope . dataApp . data . activeAccount ) . to . equal ( ctx . fakeuser ) ;
114+ done ( ) ;
115+ } ) ;
116+ $scope . $on ( 'INSTANCE_LIST_FETCH' , listFetchSpy ) ;
117+ $rootScope . $digest ( ) ;
118+ $rootScope . $broadcast ( '$stateChangeStart' , null , {
119+ userName : ctx . fakeuser . oauthName ( )
120+ } ) ;
121+ $rootScope . $digest ( ) ;
122+ } ) ;
123+ it ( 'should select org1, matching it from the stateParams ' , function ( done ) {
124+ setup ( { } ) ;
125+ var listFetchSpy = sinon . spy ( function ( event , name ) {
126+ expect ( name ) . to . equal ( ctx . fakeOrg1 . oauthName ( ) ) ;
127+ expect ( $scope . dataApp . data . activeAccount ) . to . be . an . Object ;
128+ expect ( $scope . dataApp . data . activeAccount ) . to . equal ( ctx . fakeOrg1 ) ;
129+ done ( ) ;
130+ } ) ;
131+ $scope . $on ( 'INSTANCE_LIST_FETCH' , listFetchSpy ) ;
132+ $rootScope . $digest ( ) ;
133+ $rootScope . $broadcast ( '$stateChangeStart' , null , {
134+ userName : ctx . fakeOrg1 . oauthName ( )
135+ } ) ;
136+ $rootScope . $digest ( ) ;
137+ } ) ;
138+ } ) ;
139+ it ( 'should not switch accounts if active account matches' , function ( ) {
140+ setup ( { } ) ;
141+ var listFetchSpy = sinon . spy ( ) ;
142+ keypather . set ( $scope , 'dataApp.data.activeAccount' , ctx . fakeOrg1 ) ;
143+ $scope . $on ( 'INSTANCE_LIST_FETCH' , listFetchSpy ) ;
144+ $rootScope . $digest ( ) ;
145+ $rootScope . $broadcast ( '$stateChangeStart' , null , {
146+ userName : ctx . fakeOrg1 . oauthName ( )
147+ } ) ;
148+ $rootScope . $digest ( ) ;
149+ expect ( $scope . dataApp . data . activeAccount ) . to . be . an . Object ;
150+ expect ( $scope . dataApp . data . activeAccount ) . to . equal ( ctx . fakeOrg1 ) ;
151+ sinon . assert . notCalled ( listFetchSpy ) ;
152+ } ) ;
153+ it ( 'should switch accounts if active account does not match url' , function ( done ) {
154+ setup ( { } ) ;
155+ var listFetchSpy = sinon . spy ( function ( event , name ) {
156+ expect ( name ) . to . equal ( ctx . fakeOrg2 . oauthName ( ) ) ;
157+ expect ( $scope . dataApp . data . activeAccount ) . to . be . an . Object ;
158+ expect ( $scope . dataApp . data . activeAccount ) . to . equal ( ctx . fakeOrg2 ) ;
159+ done ( ) ;
160+ } ) ;
161+ keypather . set ( $scope , 'dataApp.data.activeAccount' , ctx . fakeOrg1 ) ;
162+ $scope . $on ( 'INSTANCE_LIST_FETCH' , listFetchSpy ) ;
163+ $rootScope . $digest ( ) ;
164+ $rootScope . $broadcast ( '$stateChangeStart' , null , {
165+ userName : ctx . fakeOrg2 . oauthName ( )
166+ } ) ;
167+ $rootScope . $digest ( ) ;
168+ } ) ;
43169 } ) ;
44170} ) ;
0 commit comments