diff --git a/angular/test/test-app/angular.json b/angular/test/test-app/angular.json index 794e28a680..1a460837f5 100644 --- a/angular/test/test-app/angular.json +++ b/angular/test/test-app/angular.json @@ -20,7 +20,16 @@ "tsConfig": "src/tsconfig.app.json", "assets": [ "src/favicon.ico", - "src/assets" + { + "glob": "**/*", + "input": "src/assets", + "output": "assets" + }, + { + "glob": "**/*.svg", + "input": "node_modules/ionicons/dist/ionicons/svg", + "output": "./svg" + } ], "styles": [ "src/styles.css" diff --git a/angular/test/test-app/e2e/src/router-link.e2e-spec.ts b/angular/test/test-app/e2e/src/router-link.e2e-spec.ts index e1440319fb..8a7b725222 100644 --- a/angular/test/test-app/e2e/src/router-link.e2e-spec.ts +++ b/angular/test/test-app/e2e/src/router-link.e2e-spec.ts @@ -1,5 +1,49 @@ -import { browser, element, by } from 'protractor'; +import { browser, element, by, protractor } from 'protractor'; import { waitTime, testStack, testLifeCycle, handleErrorMessages } from './utils'; +import { HttpUrlEncodingCodec } from '@angular/common/http'; + +const EC = protractor.ExpectedConditions; + +describe('router-link params and fragments', () => { + const queryParam = 'A&=#Y'; + const fragment = 'myDiv1'; + const id = 'MyPageID=='; + + afterEach(() => { + handleErrorMessages(); + }); + + it('should go to a page with properly encoded values', async () => { + await browser.get('/router-link?ionic:_testing=true'); + await element(by.css('#queryParamsFragment')).click(); + + const expectedRoute = `${encodeURIComponent(id)}?token=${encodeURIComponent(queryParam)}#${encodeURIComponent(fragment)}`; + + browser.wait(EC.urlContains(expectedRoute), 5000); + }); + + it('should return to a page with preserved query param and fragment', async () => { + await browser.get('/router-link?ionic:_testing=true'); + await element(by.css('#queryParamsFragment')).click(); + await element(by.css('#goToPage3')).click(); + + browser.wait(EC.urlContains('router-link-page3'), 5000); + + await element(by.css('#goBackFromPage3')).click(); + + const expectedRoute = `${encodeURIComponent(id)}?token=${encodeURIComponent(queryParam)}#${encodeURIComponent(fragment)}`; + browser.wait(EC.urlContains(expectedRoute), 5000); + }); + + it('should preserve query param and fragment with defaultHref string', async () => { + await browser.get('/router-link-page3?ionic:_testing=true'); + + await element(by.css('#goBackFromPage3')).click(); + + const expectedRoute = '?token=ABC#fragment'; + browser.wait(EC.urlContains(expectedRoute), 5000); + }); +}); describe('router-link', () => { diff --git a/angular/test/test-app/src/app/app-routing.module.ts b/angular/test/test-app/src/app/app-routing.module.ts index d6ffbb92c9..3f5cc9def8 100644 --- a/angular/test/test-app/src/app/app-routing.module.ts +++ b/angular/test/test-app/src/app/app-routing.module.ts @@ -4,6 +4,8 @@ import { InputsComponent } from './inputs/inputs.component'; import { ModalComponent } from './modal/modal.component'; import { RouterLinkComponent } from './router-link/router-link.component'; import { RouterLinkPageComponent } from './router-link-page/router-link-page.component'; +import { RouterLinkPage2Component } from './router-link-page2/router-link-page2.component'; +import { RouterLinkPage3Component } from './router-link-page3/router-link-page3.component'; import { HomePageComponent } from './home-page/home-page.component'; import { TabsComponent } from './tabs/tabs.component'; import { TabsTab1Component } from './tabs-tab1/tabs-tab1.component'; @@ -31,6 +33,8 @@ const routes: Routes = [ { path: 'providers', component: ProvidersComponent }, { path: 'router-link', component: RouterLinkComponent }, { path: 'router-link-page', component: RouterLinkPageComponent }, + { path: 'router-link-page2/:id', component: RouterLinkPage2Component }, + { path: 'router-link-page3', component: RouterLinkPage3Component }, { path: 'slides', component: SlidesComponent }, { path: 'virtual-scroll', component: VirtualScrollComponent }, { path: 'virtual-scroll-detail/:itemId', component: VirtualScrollDetailComponent }, diff --git a/angular/test/test-app/src/app/app.module.ts b/angular/test/test-app/src/app/app.module.ts index efad253e37..c50d743d9a 100644 --- a/angular/test/test-app/src/app/app.module.ts +++ b/angular/test/test-app/src/app/app.module.ts @@ -11,6 +11,8 @@ import { ModalComponent } from './modal/modal.component'; import { ModalExampleComponent } from './modal-example/modal-example.component'; import { RouterLinkComponent } from './router-link/router-link.component'; import { RouterLinkPageComponent } from './router-link-page/router-link-page.component'; +import { RouterLinkPage2Component } from './router-link-page2/router-link-page2.component'; +import { RouterLinkPage3Component } from './router-link-page3/router-link-page3.component'; import { HomePageComponent } from './home-page/home-page.component'; import { TabsComponent } from './tabs/tabs.component'; import { TabsTab1Component } from './tabs-tab1/tabs-tab1.component'; @@ -39,6 +41,8 @@ import { NavigationPage3Component } from './navigation-page3/navigation-page3.co ModalExampleComponent, RouterLinkComponent, RouterLinkPageComponent, + RouterLinkPage2Component, + RouterLinkPage3Component, HomePageComponent, TabsComponent, TabsTab1Component, diff --git a/angular/test/test-app/src/app/router-link-page2/router-link-page2.component.html b/angular/test/test-app/src/app/router-link-page2/router-link-page2.component.html new file mode 100644 index 0000000000..33171c503c --- /dev/null +++ b/angular/test/test-app/src/app/router-link-page2/router-link-page2.component.html @@ -0,0 +1,12 @@ + + + + + + Router Page 2 + + + + + Go to Page 3 + \ No newline at end of file diff --git a/angular/test/test-app/src/app/router-link-page2/router-link-page2.component.ts b/angular/test/test-app/src/app/router-link-page2/router-link-page2.component.ts new file mode 100644 index 0000000000..8aaf70b8bd --- /dev/null +++ b/angular/test/test-app/src/app/router-link-page2/router-link-page2.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-router-link-page2', + templateUrl: './router-link-page2.component.html' +}) +export class RouterLinkPage2Component implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/angular/test/test-app/src/app/router-link-page3/router-link-page3.component.html b/angular/test/test-app/src/app/router-link-page3/router-link-page3.component.html new file mode 100644 index 0000000000..5c67ab2943 --- /dev/null +++ b/angular/test/test-app/src/app/router-link-page3/router-link-page3.component.html @@ -0,0 +1,12 @@ + + + + + + Router Page 3 + + + + + Page 3 + \ No newline at end of file diff --git a/angular/test/test-app/src/app/router-link-page3/router-link-page3.component.ts b/angular/test/test-app/src/app/router-link-page3/router-link-page3.component.ts new file mode 100644 index 0000000000..99909a4ec1 --- /dev/null +++ b/angular/test/test-app/src/app/router-link-page3/router-link-page3.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-router-link-page3', + templateUrl: './router-link-page3.component.html' +}) +export class RouterLinkPage3Component implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/angular/test/test-app/src/app/router-link/router-link.component.html b/angular/test/test-app/src/app/router-link/router-link.component.html index 829253e534..5ac6b632d3 100644 --- a/angular/test/test-app/src/app/router-link/router-link.component.html +++ b/angular/test/test-app/src/app/router-link/router-link.component.html @@ -26,5 +26,7 @@

- + +

+