e2e test error page and fix (#3672)

* fix wrong input parameter functionality

* not reload the page to go to the content service page

* navigate instead to reload to go to the process service page
This commit is contained in:
Eugenio Romano
2018-08-08 17:18:26 +01:00
committed by Eugenio Romano
parent 6cf6c9c0e4
commit 2e0945b0cc
32 changed files with 169 additions and 231 deletions

View File

@@ -16,41 +16,15 @@ Once you have caught the error in your server you will need to redirect to `/err
this.router.navigate(['/error', errorCode]); this.router.navigate(['/error', errorCode]);
``` ```
```html
<div class="adf-error-content">
<p class="adf-error-content-code">
{{ errorCode }}
</p>
<div class="adf-error-content-shadow"></div>
<p class="adf-error-content-title">
{{ 'ERROR_CONTENT.' + errorCode + '.TITLE' | translate }}
</p>
<p class="adf-error-content-description">
{{ 'ERROR_CONTENT.' + errorCode + '.DESCRIPTION' | translate }}
</p>
<div class="adf-error-content-buttons">
<a href="/" mat-raised-button color="primary"
*ngIf="secondaryButtonText" (click)="onSecondButton()"
class="adf-error-content-description-link">
{{ 'ERROR_CONTENT.' + errorCode + '.SECONDARY_BUTTON.TEXT' | translate | uppercase }}
</a>
<a href="/" mat-raised-button color="primary" (click)="onReturnButton()">
{{ 'ERROR_CONTENT.' + this.errorCode + '.RETURN_BUTTON.TEXT' | translate | uppercase }}
</a>
</div>
</div>
```
## Properties ## Properties
### Error Content Component ### Error Content Component
| Name | Type | Description | | Name | Type | Default | Description |
| ---- | ---- | ----------- | | ---- | ---- |---- | ----------- |
| errorCode | string | Error code | | errorCode | string | |Error code |
| returnButtonUrl | string | URL for the return button | | returnButtonUrl | string | "/" |URL for the return button |
| secondaryButtonText | string | (Optional) Text that will be displayed inside the secondary button | | secondaryButtonUrl | string | "report-issue" |(Optional) URL for the secondary button |
| secondaryButtonUrl | string | (Optional) URL for the secondary button |
Note that you will also have to provide values for the variables used in the view template. Note that you will also have to provide values for the variables used in the view template.
@@ -65,12 +39,10 @@ You can customize your error messages by adding them to the translate files insi
"TITLE": "An error occurred.", "TITLE": "An error occurred.",
"DESCRIPTION": "We couldnt find the page you were looking for.", "DESCRIPTION": "We couldnt find the page you were looking for.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Back to home", "TEXT": "Back to home"
"ROUTE": "home"
} }
} }
} }

View File

@@ -44,11 +44,34 @@ describe('Error Component', () => {
}); });
it('[C277302] Error message displayed without permissions', () => { it('[C277302] Should display the error 403 when access to unathorized page', () => {
browser.get(TestConfig.adf.url + '/error/403'); browser.get(TestConfig.adf.url + '/error/403');
expect(errorPage.getErrorCode()).toBe('403'); expect(errorPage.getErrorCode()).toBe('403');
expect(errorPage.getErrorTitle()).toBe('You don\'t have permission to access this server.'); expect(errorPage.getErrorTitle()).toBe('You don\'t have permission to access this server.');
expect(errorPage.getErrorDescription()).toBe('You\'re not allowed access to this resource on the server.'); expect(errorPage.getErrorDescription()).toBe('You\'re not allowed access to this resource on the server.');
}); });
it('[C280563] Should back home button navigate to the home page', () => {
browser.get(TestConfig.adf.url + '/error/404');
errorPage.clickBackButton();
expect(browser.getCurrentUrl()).toBe(TestConfig.adf.url + '/');
});
it('[C280564] Should secondary button by default redirect to report-issue URL', () => {
browser.get(TestConfig.adf.url + '/error/403');
errorPage.clickSecondButton();
expect(browser.getCurrentUrl()).toBe(TestConfig.adf.url + '/report-issue');
});
it('[C277304] We couldnt find the page you were looking for.\' to be \'You\'re not allowed access to this resource on the server.', () => {
browser.get(TestConfig.adf.url + '/error/404');
expect(errorPage.getErrorCode()).toBe('404');
expect(errorPage.getErrorTitle()).toBe('An error occurred.');
expect(errorPage.getErrorDescription()).toBe('We couldnt find the page you were looking for.');
});
}); });

View File

@@ -15,8 +15,6 @@
* limitations under the License. * limitations under the License.
*/ */
import { protractor } from 'protractor';
import AdfSettingsPage = require('../pages/adf/settingsPage'); import AdfSettingsPage = require('../pages/adf/settingsPage');
import LoginPage = require('../pages/adf/loginPage'); import LoginPage = require('../pages/adf/loginPage');
import UserInfoDialog = require('../pages/adf/dialog/userInfoDialog'); import UserInfoDialog = require('../pages/adf/dialog/userInfoDialog');

View File

@@ -68,7 +68,7 @@ var CardViewComponentPage = function () {
return saveIcon.click(); return saveIcon.click();
}; };
this.getTextFieldText = function (text) { this.getTextFieldText = function () {
var textField = element(by.css("span[data-automation-id='card-textitem-value-name']")); var textField = element(by.css("span[data-automation-id='card-textitem-value-name']"));
Util.waitUntilElementIsVisible(textField); Util.waitUntilElementIsVisible(textField);
return textField.getText(); return textField.getText();
@@ -108,13 +108,13 @@ var CardViewComponentPage = function () {
return this; return this;
}; };
this.getIntFieldText = function (text) { this.getIntFieldText = function () {
var textField = element(by.css('span[data-automation-id="card-textitem-value-int"]')); var textField = element(by.css('span[data-automation-id="card-textitem-value-int"]'));
Util.waitUntilElementIsVisible(textField); Util.waitUntilElementIsVisible(textField);
return textField.getText(); return textField.getText();
}; };
this.getErrorInt = function (text) { this.getErrorInt = function () {
let errorElement = element(by.css('mat-error[data-automation-id="card-textitem-error-int"]')); let errorElement = element(by.css('mat-error[data-automation-id="card-textitem-error-int"]'));
Util.waitUntilElementIsVisible(errorElement); Util.waitUntilElementIsVisible(errorElement);
return errorElement.getText(); return errorElement.getText();
@@ -147,13 +147,13 @@ var CardViewComponentPage = function () {
return this; return this;
}; };
this.getFloatFieldText = function (text) { this.getFloatFieldText = function () {
var textField = element(by.css('span[data-automation-id="card-textitem-value-float"]')); var textField = element(by.css('span[data-automation-id="card-textitem-value-float"]'));
Util.waitUntilElementIsVisible(textField); Util.waitUntilElementIsVisible(textField);
return textField.getText(); return textField.getText();
}; };
this.getErrorFloat = function (text) { this.getErrorFloat = function () {
let errorElement = element(by.css('mat-error[data-automation-id="card-textitem-error-float"]')); let errorElement = element(by.css('mat-error[data-automation-id="card-textitem-error-float"]'));
Util.waitUntilElementIsVisible(errorElement); Util.waitUntilElementIsVisible(errorElement);
return errorElement.getText(); return errorElement.getText();

View File

@@ -20,6 +20,7 @@ var ContentList = require('./dialog/contentList');
var CreateFolderDialog = require('./dialog/createFolderDialog'); var CreateFolderDialog = require('./dialog/createFolderDialog');
var path = require('path'); var path = require('path');
var TestConfig = require('../../test.config'); var TestConfig = require('../../test.config');
var NavigationBarPage = require('./navigationBarPage');
var ContentServicesPage = function () { var ContentServicesPage = function () {
@@ -116,7 +117,8 @@ var ContentServicesPage = function () {
}; };
this.navigateToDocumentList = function () { this.navigateToDocumentList = function () {
browser.driver.get(contentServicesURL); var navigationBarPage = new NavigationBarPage();
navigationBarPage.clickContentServicesButton();
this.checkAcsContainer(); this.checkAcsContainer();
}; };
@@ -261,7 +263,7 @@ var ContentServicesPage = function () {
}; };
this.checkContentsAreDisplayed = function (content) { this.checkContentsAreDisplayed = function (content) {
for (i = 0; i < content.length; i++) { for (var i = 0; i < content.length; i++) {
this.checkContentIsDisplayed(content[i]); this.checkContentIsDisplayed(content[i]);
} }
return this; return this;
@@ -273,7 +275,7 @@ var ContentServicesPage = function () {
}; };
this.checkContentsAreNotDisplayed = function (content) { this.checkContentsAreNotDisplayed = function (content) {
for (i = 0; i < content.length; i++) { for (var i = 0; i < content.length; i++) {
this.checkContentIsNotDisplayed(content[i]); this.checkContentIsNotDisplayed(content[i]);
} }
return this; return this;
@@ -327,7 +329,6 @@ var ContentServicesPage = function () {
for (var i = 1; i < files.length; i++) { for (var i = 1; i < files.length; i++) {
allFiles = allFiles + "\n" + path.resolve(path.join(TestConfig.main.rootPath, files[i])); allFiles = allFiles + "\n" + path.resolve(path.join(TestConfig.main.rootPath, files[i]));
} }
;
uploadMultipleFileButton.sendKeys(allFiles); uploadMultipleFileButton.sendKeys(allFiles);
Util.waitUntilElementIsVisible(uploadMultipleFileButton); Util.waitUntilElementIsVisible(uploadMultipleFileButton);
return this; return this;
@@ -371,11 +372,11 @@ var ContentServicesPage = function () {
}; };
this.deleteContents = function (content) { this.deleteContents = function (content) {
for (i = 0; i < content.length; i++) { for (var i = 0; i < content.length; i++) {
this.deleteContent(content[i]); this.deleteContent(content[i]);
this.checkContentIsNotDisplayed(content[i]); this.checkContentIsNotDisplayed(content[i]);
browser.driver.sleep(1000); browser.driver.sleep(1000);
}; }
return this; return this;
}; };

View File

@@ -68,7 +68,6 @@ var ContentList = function () {
if (text !== '') { if (text !== '') {
initialList.push(text); initialList.push(text);
} }
;
}); });
}).then(function () { }).then(function () {
deferred.fulfill(initialList); deferred.fulfill(initialList);

View File

@@ -123,7 +123,7 @@ var SearchDialog = function () {
this.clearText = function () { this.clearText = function () {
Util.waitUntilElementIsVisible(searchBar); Util.waitUntilElementIsVisible(searchBar);
var deferred = protractor.promise.defer(); var deferred = protractor.promise.defer();
searchBar.clear().then(function (value) { searchBar.clear().then(function () {
searchBar.sendKeys(protractor.Key.ESCAPE); searchBar.sendKeys(protractor.Key.ESCAPE);
}); });
return deferred.promise; return deferred.promise;

View File

@@ -85,7 +85,7 @@ var UploadDialog = function () {
}; };
this.filesAreUploaded = function (content) { this.filesAreUploaded = function (content) {
for (i=0; i<content.length; i++) { for (var i=0; i<content.length; i++) {
this.fileIsUploaded(content[i]); this.fileIsUploaded(content[i]);
} }
return this; return this;
@@ -96,7 +96,7 @@ var UploadDialog = function () {
return this; return this;
}; };
this.cancelUploads = function (content) { this.cancelUploads = function () {
Util.waitUntilElementIsVisible(cancelUploads); Util.waitUntilElementIsVisible(cancelUploads);
cancelUploads.click(); cancelUploads.click();
return this; return this;

View File

@@ -24,6 +24,7 @@ var ErrorPage = function(){
var errorPageTitle = element(by.css("adf-error-content .adf-error-content-title")); var errorPageTitle = element(by.css("adf-error-content .adf-error-content-title"));
var errorPageDescription = element(by.css("adf-error-content .adf-error-content-description")); var errorPageDescription = element(by.css("adf-error-content .adf-error-content-description"));
var backButton = element(by.id("adf-return-button")); var backButton = element(by.id("adf-return-button"));
var secondButton = element(by.id("adf-secondary-button"));
this.checkErrorPage = function(){ this.checkErrorPage = function(){
Util.waitUntilElementIsVisible(errorPage); Util.waitUntilElementIsVisible(errorPage);
@@ -34,6 +35,11 @@ var ErrorPage = function(){
backButton.click(); backButton.click();
}; };
this.clickSecondButton = function(){
Util.waitUntilElementIsVisible(secondButton);
secondButton.click();
};
this.checkErrorTitle = function(){ this.checkErrorTitle = function(){
Util.waitUntilElementIsVisible(errorPageTitle); Util.waitUntilElementIsVisible(errorPageTitle);
}; };

View File

@@ -120,7 +120,7 @@ var LoginPage = function () {
* @method checkUsernameTooltip * @method checkUsernameTooltip
* @param {String} message * @param {String} message
*/ */
this.checkUsernameTooltip = function (message) { this.checkUsernameTooltip = function () {
Util.waitUntilElementIsVisible(usernameTooltip); Util.waitUntilElementIsVisible(usernameTooltip);
}; };
@@ -129,7 +129,7 @@ var LoginPage = function () {
* @method checkPasswordTooltip * @method checkPasswordTooltip
* @param {String} message * @param {String} message
*/ */
this.checkPasswordTooltip = function (message) { this.checkPasswordTooltip = function () {
Util.waitUntilElementIsVisible(passwordTooltip); Util.waitUntilElementIsVisible(passwordTooltip);
}; };

View File

@@ -241,7 +241,7 @@ var MetadataViewPage = function () {
editPropertyIcon.click(); editPropertyIcon.click();
}; };
this.getPropertyIconTooltip = function (propertyName, icon) { this.getPropertyIconTooltip = function (propertyName) {
var editPropertyIcon = element(by.css('mat-icon[data-automation-id="card-textitem-edit-icon-' + propertyName + '"]')); var editPropertyIcon = element(by.css('mat-icon[data-automation-id="card-textitem-edit-icon-' + propertyName + '"]'));
return editPropertyIcon.getAttribute('title'); return editPropertyIcon.getAttribute('title');
}; };

View File

@@ -106,7 +106,7 @@ var PaginationPage = function () {
element.getText().then(function(text) { element.getText().then(function(text) {
if(text !== '') { if(text !== '') {
initialList.push(text); initialList.push(text);
}; }
}); });
}).then(function () { }).then(function () {
deferred.fulfill(initialList); deferred.fulfill(initialList);

View File

@@ -16,7 +16,6 @@
*/ */
import Util = require('../../../util/util'); import Util = require('../../../util/util');
import TestConfig = require('../../../test.config');
export class AttachFormPage { export class AttachFormPage {

View File

@@ -17,6 +17,7 @@
var Util = require('../../../util/util'); var Util = require('../../../util/util');
var TestConfig = require('../../../test.config'); var TestConfig = require('../../../test.config');
var NavigationBarPage = require('../navigationBarPage');
var ProcessListPage = function () { var ProcessListPage = function () {
@@ -30,7 +31,8 @@ var ProcessListPage = function () {
var startProcessButton = element(by.css('button[data-automation-id="btn-start"]')); var startProcessButton = element(by.css('button[data-automation-id="btn-start"]'));
this.goToProcessList = function () { this.goToProcessList = function () {
browser.driver.get(processListURL); var navigationBarPage = new NavigationBarPage();
navigationBarPage.clickProcessServicesButton();
Util.waitUntilElementIsVisible(pageLoaded); Util.waitUntilElementIsVisible(pageLoaded);
}; };

View File

@@ -115,12 +115,12 @@ var SearchResultsPage = function () {
if(sortOrder===true) { if(sortOrder===true) {
if(result !== 'arrow_upward') { if(result !== 'arrow_upward') {
element(sortArrowLocator).click(); element(sortArrowLocator).click();
}; }
} }
else { else {
if(result === 'arrow_upward') { if(result === 'arrow_upward') {
element(sortArrowLocator).click(); element(sortArrowLocator).click();
}; }
} }
return Promise.resolve(); return Promise.resolve();

View File

@@ -38,12 +38,12 @@ export class VersionManagePage {
return this; return this;
} }
uploadNewVersionFile = function (fileLocation) { uploadNewVersionFile(fileLocation) {
Util.waitUntilElementIsVisible(this.uploadNewVersionButton); Util.waitUntilElementIsVisible(this.uploadNewVersionButton);
this.uploadNewVersionButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation))); this.uploadNewVersionButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation)));
Util.waitUntilElementIsVisible(this.showNewVersionButton); Util.waitUntilElementIsVisible(this.showNewVersionButton);
return this; return this;
}; }
getFileVersionName(version) { getFileVersionName(version) {
let fileElement = element(by.css(`[id="adf-version-list-item-name-${version}"]`)); let fileElement = element(by.css(`[id="adf-version-list-item-name-${version}"]`));

View File

@@ -25,7 +25,6 @@ import CONSTANTS = require('../util/constants');
import TestConfig = require('../test.config'); import TestConfig = require('../test.config');
import resources = require('../util/resources'); import resources = require('../util/resources');
import Util = require('../util/util.js');
import AlfrescoApi = require('alfresco-js-api-node'); import AlfrescoApi = require('alfresco-js-api-node');
import { UsersActions } from '../actions/users.actions'; import { UsersActions } from '../actions/users.actions';

View File

@@ -435,7 +435,7 @@ exports.waitUntilElementIsNotOnPage = function (elementToCheck, timeout) {
}; };
exports.waitUntilElementIsOnPage = function (elementToCheck, timeout) { exports.waitUntilElementIsOnPage = function (elementToCheck, timeout) {
waitTimeout = timeout || DEFAULT_TIMEOUT; var waitTimeout = timeout || DEFAULT_TIMEOUT;
return browser.wait(browser.wait(until.visibilityOf(elementToCheck)), timeout); return browser.wait(browser.wait(until.visibilityOf(elementToCheck)), timeout);
}; };

View File

@@ -306,24 +306,20 @@
"TITLE": "Sie sind nicht zum Zugriff auf diesen Server berechtigt.", "TITLE": "Sie sind nicht zum Zugriff auf diesen Server berechtigt.",
"DESCRIPTION": "Sie sind nicht zum Zugriff auf diese Ressource auf dem Server berechtigt.", "DESCRIPTION": "Sie sind nicht zum Zugriff auf diese Ressource auf dem Server berechtigt.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "Problem melden", "TEXT": "Problem melden"
"URL": "report-issue"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Zurück zur Startseite", "TEXT": "Zurück zur Startseite"
"ROUTE": "Startseite"
} }
}, },
"404": { "404": {
"TITLE": "Es ist ein Fehler aufgetreten.", "TITLE": "Es ist ein Fehler aufgetreten.",
"DESCRIPTION": "Die Seite, nach der Sie suchen, wurde nicht gefunden.", "DESCRIPTION": "Die Seite, nach der Sie suchen, wurde nicht gefunden.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Zurück zur Startseite", "TEXT": "Zurück zur Startseite"
"ROUTE": "Startseite"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "We hit a problem.", "TITLE": "We hit a problem.",
"DESCRIPTION": "Looks like something went wrong.", "DESCRIPTION": "Looks like something went wrong.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Back to home", "TEXT": "Back to home"
"ROUTE": "Home"
} }
}, },
"403": { "403": {
"TITLE": "You don't have permission to access this server.", "TITLE": "You don't have permission to access this server.",
"DESCRIPTION": "You're not allowed access to this resource on the server.", "DESCRIPTION": "You're not allowed access to this resource on the server.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "Report issue", "TEXT": "Report issue"
"URL": "report-issue"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Back to home", "TEXT": "Back to home"
"ROUTE": "Home"
} }
}, },
"404": { "404": {
"TITLE": "An error occurred.", "TITLE": "An error occurred.",
"DESCRIPTION": "We couldnt find the page you were looking for.", "DESCRIPTION": "We couldnt find the page you were looking for.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Back to home", "TEXT": "Back to home"
"ROUTE": "Home"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "Se ha producido un error.", "TITLE": "Se ha producido un error.",
"DESCRIPTION": "Parece que algo ha ido mal.", "DESCRIPTION": "Parece que algo ha ido mal.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Volver al inicio", "TEXT": "Volver al inicio"
"ROUTE": "Inicio"
} }
}, },
"403": { "403": {
"TITLE": "No tiene permiso para acceder a este servidor.", "TITLE": "No tiene permiso para acceder a este servidor.",
"DESCRIPTION": "No tiene permitido acceder a este recurso en el servidor.", "DESCRIPTION": "No tiene permitido acceder a este recurso en el servidor.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "Notificar problema", "TEXT": "Notificar problema"
"URL": "notificar-problema"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Volver al inicio", "TEXT": "Volver al inicio"
"ROUTE": "Inicio"
} }
}, },
"404": { "404": {
"TITLE": "Se ha producido un error.", "TITLE": "Se ha producido un error.",
"DESCRIPTION": "No hemos podido encontrar la página que busca.", "DESCRIPTION": "No hemos podido encontrar la página que busca.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Volver al inicio", "TEXT": "Volver al inicio"
"ROUTE": "Inicio"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "Une erreur est survenue.", "TITLE": "Une erreur est survenue.",
"DESCRIPTION": "Il semble qu'une erreur soit survenue.", "DESCRIPTION": "Il semble qu'une erreur soit survenue.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Retour à l'accueil", "TEXT": "Retour à l'accueil"
"ROUTE": "Accueil"
} }
}, },
"403": { "403": {
"TITLE": "Vous n'avez pas les droits d'accès à ce serveur.", "TITLE": "Vous n'avez pas les droits d'accès à ce serveur.",
"DESCRIPTION": "Vous n'êtes pas autorisé à accéder à cette ressource sur le serveur.", "DESCRIPTION": "Vous n'êtes pas autorisé à accéder à cette ressource sur le serveur.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "Signaler le problème", "TEXT": "Signaler le problème"
"URL": "signaler-problème"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Retour à l'accueil", "TEXT": "Retour à l'accueil"
"ROUTE": "Accueil"
} }
}, },
"404": { "404": {
"TITLE": "Une erreur est survenue.", "TITLE": "Une erreur est survenue.",
"DESCRIPTION": "Impossible de trouver la page recherchée.", "DESCRIPTION": "Impossible de trouver la page recherchée.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Retour à l'accueil", "TEXT": "Retour à l'accueil"
"ROUTE": "Accueil"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "Si è verificato un errore.", "TITLE": "Si è verificato un errore.",
"DESCRIPTION": "Si è verificato un errore.", "DESCRIPTION": "Si è verificato un errore.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Torna alla home", "TEXT": "Torna alla home"
"ROUTE": "Home"
} }
}, },
"403": { "403": {
"TITLE": "Non si dispone delle autorizzazioni per accedere al server.", "TITLE": "Non si dispone delle autorizzazioni per accedere al server.",
"DESCRIPTION": "Accesso alla risorsa sul server non consentito.", "DESCRIPTION": "Accesso alla risorsa sul server non consentito.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "Segnala errore", "TEXT": "Segnala errore"
"URL": "segnala problema"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Torna alla home", "TEXT": "Torna alla home"
"ROUTE": "Home"
} }
}, },
"404": { "404": {
"TITLE": "Si è verificato un errore.", "TITLE": "Si è verificato un errore.",
"DESCRIPTION": "Impossibile trovare la pagina.", "DESCRIPTION": "Impossibile trovare la pagina.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Torna alla home", "TEXT": "Torna alla home"
"ROUTE": "Home"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "エラーが発生しました。", "TITLE": "エラーが発生しました。",
"DESCRIPTION": "何らかの問題がある可能性があります。", "DESCRIPTION": "何らかの問題がある可能性があります。",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "ホームへ戻る", "TEXT": "ホームへ戻る"
"ROUTE": "ホーム"
} }
}, },
"403": { "403": {
"TITLE": "このサーバーにアクセスする権限がありません。", "TITLE": "このサーバーにアクセスする権限がありません。",
"DESCRIPTION": "サーバー上のこのリソースにはアクセスできません。", "DESCRIPTION": "サーバー上のこのリソースにはアクセスできません。",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "問題の報告", "TEXT": "問題の報告"
"URL": "report-issue"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "ホームへ戻る", "TEXT": "ホームへ戻る"
"ROUTE": "ホーム"
} }
}, },
"404": { "404": {
"TITLE": "エラーが発生しました。", "TITLE": "エラーが発生しました。",
"DESCRIPTION": "お探しのページが見つかりませんでした。", "DESCRIPTION": "お探しのページが見つかりませんでした。",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "ホームへ戻る", "TEXT": "ホームへ戻る"
"ROUTE": "ホーム"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "Det oppstod en feil", "TITLE": "Det oppstod en feil",
"DESCRIPTION": "Noe gikk galt.", "DESCRIPTION": "Noe gikk galt.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Tilbake til startsiden", "TEXT": "Tilbake til startsiden"
"ROUTE": "Hjem"
} }
}, },
"403": { "403": {
"TITLE": "Du har ikke tillatelse for tilgang til denne serveren.", "TITLE": "Du har ikke tillatelse for tilgang til denne serveren.",
"DESCRIPTION": "Du har ikke lov til å få tilgang til denne ressursen på serveren.", "DESCRIPTION": "Du har ikke lov til å få tilgang til denne ressursen på serveren.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "Rapporter problem", "TEXT": "Rapporter problem"
"URL": "rapporter-problem"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Tilbake til startsiden", "TEXT": "Tilbake til startsiden"
"ROUTE": "Hjem"
} }
}, },
"404": { "404": {
"TITLE": "Det oppstod en feil.", "TITLE": "Det oppstod en feil.",
"DESCRIPTION": "Vi kunne ikke finne siden du så etter.", "DESCRIPTION": "Vi kunne ikke finne siden du så etter.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Tilbake til startsiden", "TEXT": "Tilbake til startsiden"
"ROUTE": "Hjem"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "Er is een fout opgetreden.", "TITLE": "Er is een fout opgetreden.",
"DESCRIPTION": "Er is waarschijnlijk iets fout gegaan.", "DESCRIPTION": "Er is waarschijnlijk iets fout gegaan.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Terug naar Home", "TEXT": "Terug naar Home"
"ROUTE": "Home"
} }
}, },
"403": { "403": {
"TITLE": "U hebt geen machtiging voor toegang tot deze server.", "TITLE": "U hebt geen machtiging voor toegang tot deze server.",
"DESCRIPTION": "Het is u niet toegestaan toegang te krijgen tot deze resource op de server.", "DESCRIPTION": "Het is u niet toegestaan toegang te krijgen tot deze resource op de server.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "Probleem melden", "TEXT": "Probleem melden"
"URL": "report-issue"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Terug naar Home", "TEXT": "Terug naar Home"
"ROUTE": "Home"
} }
}, },
"404": { "404": {
"TITLE": "Er is een fout opgetreden.", "TITLE": "Er is een fout opgetreden.",
"DESCRIPTION": "De pagina die u zoekt is niet gevonden.", "DESCRIPTION": "De pagina die u zoekt is niet gevonden.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Terug naar Home", "TEXT": "Terug naar Home"
"ROUTE": "Home"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "Ocorreu um erro.", "TITLE": "Ocorreu um erro.",
"DESCRIPTION": "Parece que ocorreu um erro.", "DESCRIPTION": "Parece que ocorreu um erro.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Voltar para a página inicial", "TEXT": "Voltar para a página inicial"
"ROUTE": "Página Inicial"
} }
}, },
"403": { "403": {
"TITLE": "Você não tem permissão para acessar este servidor.", "TITLE": "Você não tem permissão para acessar este servidor.",
"DESCRIPTION": "Você não tem permissão para acessar este recurso no servidor.", "DESCRIPTION": "Você não tem permissão para acessar este recurso no servidor.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "Relatar problema", "TEXT": "Relatar problema""
"URL": "relatar-problema"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Voltar para a página inicial", "TEXT": "Voltar para a página inicial"
"ROUTE": "Página Inicial"
} }
}, },
"404": { "404": {
"TITLE": "Ocorreu um erro.", "TITLE": "Ocorreu um erro.",
"DESCRIPTION": "Não foi possível encontrar a página que você está procurando.", "DESCRIPTION": "Não foi possível encontrar a página que você está procurando.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Voltar para a página inicial", "TEXT": "Voltar para a página inicial"
"ROUTE": "Página Inicial"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "Произошла ошибка.", "TITLE": "Произошла ошибка.",
"DESCRIPTION": "Кажется, что-то пошло не так.", "DESCRIPTION": "Кажется, что-то пошло не так.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Назад на главную", "TEXT": "Назад на главную"
"ROUTE": "Домашняя"
} }
}, },
"403": { "403": {
"TITLE": "У вас нет разрешения для доступа к этому серверу.", "TITLE": "У вас нет разрешения для доступа к этому серверу.",
"DESCRIPTION": "У вас нет разрешения для доступа к этому ресурсу на сервере.", "DESCRIPTION": "У вас нет разрешения для доступа к этому ресурсу на сервере.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "Сообщить о проблеме", "TEXT": "Сообщить о проблеме"
"URL": "сообщить-о-проблеме"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Назад на главную", "TEXT": "Назад на главную"
"ROUTE": "Домашняя"
} }
}, },
"404": { "404": {
"TITLE": "Произошла ошибка.", "TITLE": "Произошла ошибка.",
"DESCRIPTION": "Нам не удалось найти страницу, которую вы искали.", "DESCRIPTION": "Нам не удалось найти страницу, которую вы искали.",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "Назад на главную", "TEXT": "Назад на главную"
"ROUTE": "Домашняя"
} }
} }
} }

View File

@@ -294,36 +294,30 @@
"TITLE": "出现错误。", "TITLE": "出现错误。",
"DESCRIPTION": "看似发生错误。", "DESCRIPTION": "看似发生错误。",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "返回到主页", "TEXT": "返回到主页"
"ROUTE": "主页"
} }
}, },
"403": { "403": {
"TITLE": "您没有访问此服务器的权限。", "TITLE": "您没有访问此服务器的权限。",
"DESCRIPTION": "不允许您访问服务器上的此资源。", "DESCRIPTION": "不允许您访问服务器上的此资源。",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "报告问题", "TEXT": "报告问题"
"URL": "report-issue"
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "返回到主页", "TEXT": "返回到主页"
"ROUTE": "主页"
} }
}, },
"404": { "404": {
"TITLE": "出现错误。", "TITLE": "出现错误。",
"DESCRIPTION": "我们无法找到您正在查找的页面。", "DESCRIPTION": "我们无法找到您正在查找的页面。",
"SECONDARY_BUTTON": { "SECONDARY_BUTTON": {
"TEXT": "", "TEXT": ""
"URL": ""
}, },
"RETURN_BUTTON": { "RETURN_BUTTON": {
"TEXT": "返回到主页", "TEXT": "返回到主页"
"ROUTE": "主页"
} }
} }
} }

View File

@@ -11,7 +11,7 @@
</p> </p>
<div class="adf-error-content-buttons"> <div class="adf-error-content-buttons">
<a a id="adf-secondary-button" mat-raised-button color="primary" <a a id="adf-secondary-button" mat-raised-button color="primary"
*ngIf="secondaryButtonText" (click)="onSecondButton()" *ngIf="hasSecondButton" (click)="onSecondButton()"
class="adf-error-content-description-link"> class="adf-error-content-description-link">
{{ 'ERROR_CONTENT.' + errorCode + '.SECONDARY_BUTTON.TEXT' | translate | uppercase }} {{ 'ERROR_CONTENT.' + errorCode + '.SECONDARY_BUTTON.TEXT' | translate | uppercase }}
</a> </a>

View File

@@ -103,20 +103,18 @@ describe('ErrorContentComponent', () => {
}); });
fixture.detectChanges(); fixture.detectChanges();
fixture.whenStable().then(() => { fixture.whenStable().then(() => {
expect(errorContentComponent.secondaryButtonText).toBe('Secondary Button'); const errorContentElement = element.querySelector('#adf-secondary-button');
const errorContentElement = element.querySelector('.adf-error-content-description-link');
expect(errorContentElement).not.toBeNull(); expect(errorContentElement).not.toBeNull();
expect(errorContentElement).toBeDefined(); expect(errorContentElement).toBeDefined();
expect(errorContentElement.textContent).toContain('ERROR_CONTENT.UNKNOWN.SECONDARY_BUTTON.TEXT');
}); });
})); }));
it('should render return button with its value from the translate file', async(() => { it('shoul the default value of return burron be /', async(() => {
spyOn(translateService, 'instant').and.callFake((inputString) => {
return 'Home';
});
fixture.detectChanges(); fixture.detectChanges();
fixture.whenStable().then(() => { fixture.whenStable().then(() => {
expect(errorContentComponent.returnButtonUrl).toBe('Home'); expect(errorContentComponent.returnButtonUrl).toBe('/');
}); });
})); }));

View File

@@ -15,7 +15,14 @@
* limitations under the License. * limitations under the License.
*/ */
import { Component, ChangeDetectionStrategy, ViewEncapsulation, OnInit, AfterContentChecked } from '@angular/core'; import {
Component,
ChangeDetectionStrategy,
Input,
ViewEncapsulation,
OnInit,
AfterContentChecked
} from '@angular/core';
import { Params, ActivatedRoute, Router } from '@angular/router'; import { Params, ActivatedRoute, Router } from '@angular/router';
import { TranslationService } from '../../services/translation.service'; import { TranslationService } from '../../services/translation.service';
@@ -29,10 +36,16 @@ import { TranslationService } from '../../services/translation.service';
}) })
export class ErrorContentComponent implements OnInit, AfterContentChecked { export class ErrorContentComponent implements OnInit, AfterContentChecked {
@Input()
secondaryButtonUrl: string = 'report-issue';
@Input()
returnButtonUrl: string = '/';
@Input()
errorCode: string; errorCode: string;
secondaryButtonText: string;
secondaryButtonUrl: string; hasSecondButton: boolean;
returnButtonUrl: string;
constructor(private route: ActivatedRoute, constructor(private route: ActivatedRoute,
private router: Router, private router: Router,
@@ -42,7 +55,7 @@ export class ErrorContentComponent implements OnInit, AfterContentChecked {
ngOnInit() { ngOnInit() {
if (this.route) { if (this.route) {
this.route.params.forEach((params: Params) => { this.route.params.forEach((params: Params) => {
if (params['id']) { if (params['id'] && !this.errorCode) {
this.errorCode = params['id']; this.errorCode = params['id'];
let unknown = ''; let unknown = '';
this.translateService.get('ERROR_CONTENT.' + this.errorCode + '.TITLE').subscribe((errorTranslation: string) => { this.translateService.get('ERROR_CONTENT.' + this.errorCode + '.TITLE').subscribe((errorTranslation: string) => {
@@ -56,21 +69,13 @@ export class ErrorContentComponent implements OnInit, AfterContentChecked {
} }
} }
ngAfterContentChecked() { getTranslations() {
this.getTranslations(); this.hasSecondButton = this.translateService.instant(
'ERROR_CONTENT.' + this.errorCode + '.SECONDARY_BUTTON.TEXT') ? true : false;
} }
getTranslations() { ngAfterContentChecked() {
this.returnButtonUrl = this.translateService.instant( this.getTranslations();
'ERROR_CONTENT.' + this.errorCode + '.RETURN_BUTTON.ROUTE');
this.secondaryButtonText = this.translateService.instant(
'ERROR_CONTENT.' + this.errorCode + '.SECONDARY_BUTTON.TEXT');
if (this.secondaryButtonText) {
this.secondaryButtonUrl = this.translateService.instant(
'ERROR_CONTENT.' + this.errorCode + '.SECONDARY_BUTTON.URL');
}
} }
onSecondButton() { onSecondButton() {