fix(router): router link should navigate to non-base Url.
While still displaying full base + custom part of url in the href.
This commit is contained in:
+60
-20
@@ -135,6 +135,9 @@ export function main() {
|
||||
});
|
||||
}));
|
||||
|
||||
function getHref(view) {
|
||||
return DOM.getAttribute(view.rootNodes[0].childNodes[0], 'href');
|
||||
}
|
||||
|
||||
it('should generate absolute hrefs that include the base href', inject([AsyncTestCompleter], (async) => {
|
||||
location.setBaseHref('/my/base');
|
||||
@@ -143,7 +146,7 @@ export function main() {
|
||||
.then((_) => rtr.navigate('/a/b'))
|
||||
.then((_) => {
|
||||
view.detectChanges();
|
||||
expect(DOM.getAttribute(view.rootNodes[0].childNodes[0], 'href')).toEqual('/my/base/user');
|
||||
expect(getHref(view)).toEqual('/my/base/user');
|
||||
async.done();
|
||||
});
|
||||
}));
|
||||
@@ -155,13 +158,13 @@ export function main() {
|
||||
.then((_) => rtr.navigate('/a/b'))
|
||||
.then((_) => {
|
||||
view.detectChanges();
|
||||
expect(DOM.getAttribute(view.rootNodes[0].childNodes[0], 'href')).toEqual('/user');
|
||||
expect(getHref(view)).toEqual('/user');
|
||||
async.done();
|
||||
});
|
||||
}));
|
||||
|
||||
|
||||
it('should reuse common parent components', inject([AsyncTestCompleter, Location], (async, location) => {
|
||||
it('should reuse common parent components', inject([AsyncTestCompleter], (async) => {
|
||||
compile()
|
||||
.then((_) => rtr.config({'path': '/team/:id', 'component': TeamCmp }))
|
||||
.then((_) => rtr.navigate('/team/angular/user/rado'))
|
||||
@@ -193,27 +196,64 @@ export function main() {
|
||||
});
|
||||
}));
|
||||
|
||||
describe('when clicked', () => {
|
||||
|
||||
it('should generate link hrefs without params', inject([AsyncTestCompleter], (async) => {
|
||||
compile('<a href="hello" router-link="user"></a>')
|
||||
.then((_) => rtr.config({'path': '/user', 'component': UserCmp, 'as': 'user'}))
|
||||
.then((_) => rtr.navigate('/a/b'))
|
||||
.then((_) => {
|
||||
view.detectChanges();
|
||||
var anchorEl = view.rootNodes[0].childNodes[0];
|
||||
expect(DOM.getAttribute(anchorEl, 'href')).toEqual('/user');
|
||||
var clickOnElement = function(view) {
|
||||
var anchorEl = view.rootNodes[0].childNodes[0];
|
||||
var dispatchedEvent = DOM.createMouseEvent('click');
|
||||
DOM.dispatchEvent(anchorEl, dispatchedEvent);
|
||||
return dispatchedEvent;
|
||||
};
|
||||
|
||||
var dispatchedEvent = DOM.createMouseEvent('click');
|
||||
DOM.dispatchEvent(anchorEl, dispatchedEvent);
|
||||
expect(dispatchedEvent.defaultPrevented).toBe(true);
|
||||
it('test', inject([AsyncTestCompleter], (async) => {
|
||||
async.done();
|
||||
}));
|
||||
|
||||
// router navigation is async.
|
||||
rtr.subscribe((_) => {
|
||||
expect(location.urlChanges).toEqual(['/user']);
|
||||
async.done();
|
||||
it('should navigate to link hrefs without params', inject([AsyncTestCompleter], (async) => {
|
||||
compile('<a href="hello" router-link="user"></a>')
|
||||
.then((_) => rtr.config({
|
||||
'path': '/user',
|
||||
'component': UserCmp,
|
||||
'as': 'user'
|
||||
}))
|
||||
.then((_) => rtr.navigate('/a/b'))
|
||||
.then((_) => {
|
||||
view.detectChanges();
|
||||
|
||||
var dispatchedEvent = clickOnElement(view);
|
||||
expect(dispatchedEvent.defaultPrevented).toBe(true);
|
||||
|
||||
// router navigation is async.
|
||||
rtr.subscribe((_) => {
|
||||
expect(location.urlChanges).toEqual(['/user']);
|
||||
async.done();
|
||||
});
|
||||
});
|
||||
});
|
||||
}));
|
||||
}));
|
||||
|
||||
it('should navigate to link hrefs in presence of base href', inject([AsyncTestCompleter], (async) => {
|
||||
location.setBaseHref('/base');
|
||||
compile('<a href="hello" router-link="user"></a>')
|
||||
.then((_) => rtr.config({
|
||||
'path': '/user',
|
||||
'component': UserCmp,
|
||||
'as': 'user'
|
||||
}))
|
||||
.then((_) => rtr.navigate('/a/b'))
|
||||
.then((_) => {
|
||||
view.detectChanges();
|
||||
|
||||
var dispatchedEvent = clickOnElement(view);
|
||||
expect(dispatchedEvent.defaultPrevented).toBe(true);
|
||||
|
||||
// router navigation is async.
|
||||
rtr.subscribe((_) => {
|
||||
expect(location.urlChanges).toEqual(['/base/user']);
|
||||
async.done();
|
||||
});
|
||||
});
|
||||
}));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user