--- /dev/null
+'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!');
+ }
+ };
+});