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!');
          }
      };
  });
  