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]);
```
```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
### Error Content Component
| Name | Type | Description |
| ---- | ---- | ----------- |
| errorCode | string | Error code |
| returnButtonUrl | string | URL for the return button |
| secondaryButtonText | string | (Optional) Text that will be displayed inside the secondary button |
| secondaryButtonUrl | string | (Optional) URL for the secondary button |
| Name | Type | Default | Description |
| ---- | ---- |---- | ----------- |
| errorCode | string | |Error code |
| returnButtonUrl | string | "/" |URL for the return button |
| secondaryButtonUrl | string | "report-issue" |(Optional) URL for the secondary button |
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.",
"DESCRIPTION": "We couldnt find the page you were looking for.",
"SECONDARY_BUTTON": {
"TEXT": "",
"URL": ""
"TEXT": ""
},
"RETURN_BUTTON": {
"TEXT": "Back to home",
"ROUTE": "home"
"TEXT": "Back to home"
}
}
}
@@ -78,4 +50,4 @@ You can customize your error messages by adding them to the translate files insi
## See also
- [Empty Content component](empty-content.component.md)
- [Empty Content component](empty-content.component.md)

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');
expect(errorPage.getErrorCode()).toBe('403');
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.');
});
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.
*/
import { protractor } from 'protractor';
import AdfSettingsPage = require('../pages/adf/settingsPage');
import LoginPage = require('../pages/adf/loginPage');
import UserInfoDialog = require('../pages/adf/dialog/userInfoDialog');

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -24,6 +24,7 @@ var ErrorPage = function(){
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 backButton = element(by.id("adf-return-button"));
var secondButton = element(by.id("adf-secondary-button"));
this.checkErrorPage = function(){
Util.waitUntilElementIsVisible(errorPage);
@@ -34,6 +35,11 @@ var ErrorPage = function(){
backButton.click();
};
this.clickSecondButton = function(){
Util.waitUntilElementIsVisible(secondButton);
secondButton.click();
};
this.checkErrorTitle = function(){
Util.waitUntilElementIsVisible(errorPageTitle);
};

View File

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

View File

@@ -241,7 +241,7 @@ var MetadataViewPage = function () {
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 + '"]'));
return editPropertyIcon.getAttribute('title');
};

View File

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

View File

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

View File

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

View File

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

View File

@@ -38,12 +38,12 @@ export class VersionManagePage {
return this;
}
uploadNewVersionFile = function (fileLocation) {
uploadNewVersionFile(fileLocation) {
Util.waitUntilElementIsVisible(this.uploadNewVersionButton);
this.uploadNewVersionButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation)));
Util.waitUntilElementIsVisible(this.showNewVersionButton);
return this;
};
}
getFileVersionName(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 resources = require('../util/resources');
import Util = require('../util/util.js');
import AlfrescoApi = require('alfresco-js-api-node');
import { UsersActions } from '../actions/users.actions';

View File

@@ -435,7 +435,7 @@ exports.waitUntilElementIsNotOnPage = 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);
};

View File

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

View File

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

View File

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

View File

@@ -294,37 +294,31 @@
"TITLE": "Une erreur est survenue.",
"DESCRIPTION": "Il semble qu'une erreur soit survenue.",
"SECONDARY_BUTTON": {
"TEXT": "",
"URL": ""
"TEXT": ""
},
"RETURN_BUTTON": {
"TEXT": "Retour à l'accueil",
"ROUTE": "Accueil"
"TEXT": "Retour à l'accueil"
}
},
"403": {
"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.",
"SECONDARY_BUTTON": {
"TEXT": "Signaler le problème",
"URL": "signaler-problème"
"TEXT": "Signaler le problème"
},
"RETURN_BUTTON": {
"TEXT": "Retour à l'accueil",
"ROUTE": "Accueil"
"TEXT": "Retour à l'accueil"
}
},
"404": {
"TITLE": "Une erreur est survenue.",
"DESCRIPTION": "Impossible de trouver la page recherchée.",
"SECONDARY_BUTTON": {
"TEXT": "",
"URL": ""
"TEXT": ""
},
"RETURN_BUTTON": {
"TEXT": "Retour à l'accueil",
"ROUTE": "Accueil"
"TEXT": "Retour à l'accueil"
}
}
}
}
}

View File

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

View File

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

View File

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

View File

@@ -294,37 +294,31 @@
"TITLE": "Er is een fout opgetreden.",
"DESCRIPTION": "Er is waarschijnlijk iets fout gegaan.",
"SECONDARY_BUTTON": {
"TEXT": "",
"URL": ""
"TEXT": ""
},
"RETURN_BUTTON": {
"TEXT": "Terug naar Home",
"ROUTE": "Home"
"TEXT": "Terug naar Home"
}
},
"403": {
"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.",
"SECONDARY_BUTTON": {
"TEXT": "Probleem melden",
"URL": "report-issue"
"TEXT": "Probleem melden"
},
"RETURN_BUTTON": {
"TEXT": "Terug naar Home",
"ROUTE": "Home"
"TEXT": "Terug naar Home"
}
},
"404": {
"TITLE": "Er is een fout opgetreden.",
"DESCRIPTION": "De pagina die u zoekt is niet gevonden.",
"SECONDARY_BUTTON": {
"TEXT": "",
"URL": ""
"TEXT": ""
},
"RETURN_BUTTON": {
"TEXT": "Terug naar Home",
"ROUTE": "Home"
"TEXT": "Terug naar Home"
}
}
}
}
}

View File

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

View File

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

View File

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

View File

@@ -11,7 +11,7 @@
</p>
<div class="adf-error-content-buttons">
<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">
{{ 'ERROR_CONTENT.' + errorCode + '.SECONDARY_BUTTON.TEXT' | translate | uppercase }}
</a>

View File

@@ -103,20 +103,18 @@ describe('ErrorContentComponent', () => {
});
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(errorContentComponent.secondaryButtonText).toBe('Secondary Button');
const errorContentElement = element.querySelector('.adf-error-content-description-link');
const errorContentElement = element.querySelector('#adf-secondary-button');
expect(errorContentElement).not.toBeNull();
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(() => {
spyOn(translateService, 'instant').and.callFake((inputString) => {
return 'Home';
});
it('shoul the default value of return burron be /', async(() => {
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(errorContentComponent.returnButtonUrl).toBe('Home');
expect(errorContentComponent.returnButtonUrl).toBe('/');
});
}));

View File

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