fix($ionicHistory): pop duplicate view registers

This commit is contained in:
Adam Bradley
2014-11-16 00:25:25 -06:00
parent 21d4af8cf9
commit 4833467d86
5 changed files with 150 additions and 85 deletions

View File

@@ -1033,11 +1033,33 @@ describe('Ionic History', function() {
expect( ionicHistory.nextViewOptions({}) ).toEqual({});
}));
it('should be an abstract view', inject(function($document) {
var reg = ionicHistory.register({}, false);
expect(reg.action).not.toEqual('abstractView');
it('should should find ion-tabs as an abstract element', inject(function($ionicHistory, $document) {
var ele = angular.element('<ion-tabs>');
expect($ionicHistory.isAbstractEle(ele)).toBe(true);
reg = ionicHistory.register({}, true);
ele = angular.element('<ion-tab>');
expect($ionicHistory.isAbstractEle(ele)).toBe(false);
}));
it('should should find ion-side-menus as an abstract element', inject(function($ionicHistory, $document) {
var ele = angular.element('<ion-side-menus>');
expect($ionicHistory.isAbstractEle(ele)).toBe(true);
ele = angular.element('<ion-side-menu>');
expect($ionicHistory.isAbstractEle(ele)).toBe(false);
}));
it('should should find first child thats an ion-tabs as an abstract element', inject(function($ionicHistory, $document) {
var div = angular.element('<div>');
var ionTabs = angular.element('<ion-tabs>');
div.append(ionTabs);
expect($ionicHistory.isAbstractEle(div)).toBe(true);
}));
it('should be an abstract view', inject(function($document) {
var reg = ionicHistory.register({}, {
$template: '<ion-tabs></ion-tabs>'
});
expect(reg.action).toEqual('abstractView');
}));

View File

@@ -93,14 +93,14 @@ describe('Ionic View Switcher', function() {
it('should get an empty entering element with an empty navViewElement', inject(function($ionicViewSwitcher) {
var navViewElement = angular.element('<div class="view-container">');
var switcher = $ionicViewSwitcher.create(null, navViewElement, {}, {});
switcher.loadViewElements();
switcher.loadViewElements({});
expect(switcher.enteringEle().length).toBe(1);
}));
it('should not get a leaving element with an empty navViewElement', inject(function($ionicViewSwitcher) {
var navViewElement = angular.element('<div class="view-container">');
var switcher = $ionicViewSwitcher.create(null, navViewElement, {}, {});
switcher.loadViewElements();
switcher.loadViewElements({});
expect(switcher.leavingEle()).toBeUndefined();
}));
@@ -113,7 +113,7 @@ describe('Ionic View Switcher', function() {
stateId: 'STATE_ID'
};
var switcher = $ionicViewSwitcher.create(null, navViewElement, viewLocals, enteringView);
switcher.loadViewElements();
switcher.loadViewElements({});
expect(switcher.enteringEle().hasClass('locals-template')).toBe(true);
expect(switcher.enteringEle().data('$eleId')).toBe('STATE_ID');
}));
@@ -132,7 +132,7 @@ describe('Ionic View Switcher', function() {
stateId: 'STATE_ID'
};
var switcher = $ionicViewSwitcher.create($rootScope, navViewElement, viewLocals, enteringView);
switcher.loadViewElements();
switcher.loadViewElements({});
switcher.render({});
expect(switcher.enteringEle().data('$noCache')).toBe(true);
}));
@@ -146,7 +146,7 @@ describe('Ionic View Switcher', function() {
stateId: 'STATE_ID'
};
var switcher = $ionicViewSwitcher.create($rootScope, navViewElement, viewLocals, enteringView);
switcher.loadViewElements();
switcher.loadViewElements({});
switcher.render({});
expect(switcher.enteringEle().data('$noCache')).toBe(true);
}));
@@ -162,7 +162,7 @@ describe('Ionic View Switcher', function() {
viewId: 'VIEW_ID'
};
var switcher = $ionicViewSwitcher.create(null, navViewElement, {}, enteringView);
switcher.loadViewElements();
switcher.loadViewElements({});
expect(switcher.enteringEle().hasClass('existing')).toBe(true);
expect(switcher.enteringEle().data('$eleId')).toBe('STATE_ID');
}));
@@ -177,7 +177,7 @@ describe('Ionic View Switcher', function() {
viewId: 'VIEW_ID'
};
var switcher = $ionicViewSwitcher.create(null, navViewElement, {}, enteringView);
switcher.loadViewElements();
switcher.loadViewElements({});
expect(switcher.enteringEle().hasClass('existing')).toBe(true);
expect(switcher.enteringEle().data('$eleId')).toBe('VIEW_ID');
}));
@@ -201,7 +201,7 @@ describe('Ionic View Switcher', function() {
viewId: 'VIEW_ID'
};
var switcher = $ionicViewSwitcher.create(null, navViewElement, viewLocals, enteringView);
switcher.loadViewElements();
switcher.loadViewElements({});
expect(switcher.enteringEle().hasClass('existing')).toBe(true);
expect(switcher.enteringEle().data('$eleId')).toBe('ABSTRACT_STATE');
}));
@@ -210,7 +210,7 @@ describe('Ionic View Switcher', function() {
var navViewElement = angular.element('<div class="view-container">');
var switcher = $ionicViewSwitcher.create($rootScope, navViewElement, {});
switcher.loadViewElements();
switcher.loadViewElements({});
switcher.render(function(){});
expect(switcher.enteringEle().length).toBe(1);
expect(switcher.enteringEle().attr('nav-view')).toBe('stage');