text: 'use strict';
  
  angular.module('stateMock',[]);
  angular.module('stateMock').service('$state', function($q){
      this.expectedTransitions = [];
      this.transitionTo = function(stateName){
          if(this.expectedTransitions.length > 0){
              var expectedState = this.expectedTransitions.shift();
              if(expectedState !== stateName){
                  throw Error('Expected transition to state: ' + expectedState + ' but transitioned to ' + stateName );
              }
          }else{
              throw Error('No more transitions were expected! Tried to transition to '+ stateName );
          }
          console.log('Mock transition to: ' + stateName);
          var deferred = $q.defer();
          var promise = deferred.promise;
          deferred.resolve();
          return promise;
      };
  
      this.go = this.transitionTo;
      this.expectTransitionTo = function(stateName){
          this.expectedTransitions.push(stateName);
      };
  
      this.ensureAllTransitionsHappened = function(){
          if(this.expectedTransitions.length > 0){
              throw Error('Not all transitions happened!');
          }
      };
  });