mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-06-30 18:15:11 +00:00
[ADF-2159] Update angular-cli to latest version (#2874)
* Update angular cli version 1.6.5 * fix tslint problems and update devdependencies using the angularcli 1.6.4 * test fixing * [ADF-2159] start fixing userinfo test * [ADF-2159] fixed userinfo tests * [ADF-2159] added async to accordion component test * [ADF-2159] testing probable failed test on CI * [ADF-2159] check removing fake destroyed view test * [ADF-2159] check viewer tests * [ADF-2159] attempt on test fix * [ADF-2159] test fix * [ADF-2159] fix test * [ADF-2159] fix test * [ADF-2159] rebased * [ADF-2159] check test * [ADF-2159] fixing test * [ADF-2159] Fix#1 * [ADF-2159] Fix#2 * [ADF-2159] Fix#3 * [ADF-2159] Fix #4 * [ADF-2159] Fix #5 * [ADF-2159] Fix #6 * [ADF-2159] fixed viewer test * [ADF-2159] fixed cast element
This commit is contained in:
parent
dd7afc65db
commit
9e4b2e74e9
1
.gitignore
vendored
1
.gitignore
vendored
@ -20,3 +20,4 @@ src/environments/
|
|||||||
package-lock.*
|
package-lock.*
|
||||||
/ng2-components/ng2-alfresco-core/prebuilt-themes/
|
/ng2-components/ng2-alfresco-core/prebuilt-themes/
|
||||||
.ng_pkg_build/
|
.ng_pkg_build/
|
||||||
|
/demo-shell/dist-dev-temp/
|
||||||
|
@ -102,43 +102,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"glob": "**/*",
|
"glob": "**/*",
|
||||||
"input": "../../lib/core/prebuilt-themes",
|
"input": "../dist-dev-temp/",
|
||||||
"output": "./assets/prebuilt-themes"
|
"output": "./"
|
||||||
},
|
|
||||||
{
|
|
||||||
"glob": "**/*",
|
|
||||||
"input": "../../lib/core/assets",
|
|
||||||
"output": "./assets/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"glob": "**/*",
|
|
||||||
"input": "../../lib/process-services/assets",
|
|
||||||
"output": "./assets/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"glob": "**/*",
|
|
||||||
"input": "../../lib/content-services/assets",
|
|
||||||
"output": "./assets/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"glob": "**/*",
|
|
||||||
"input": "../../lib/core/i18n",
|
|
||||||
"output": "./assets/adf-core/i18n"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"glob": "**/*",
|
|
||||||
"input": "../../lib/process-services/i18n",
|
|
||||||
"output": "./assets/adf-process-services/i18n"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"glob": "**/*",
|
|
||||||
"input": "../../lib/content-services/i18n",
|
|
||||||
"output": "./assets/adf-content-services/i18n"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"glob": "**/*",
|
|
||||||
"input": "../../lib/insights/i18n",
|
|
||||||
"output": "./assets/adf-insights/i18n"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"glob": "pdf.worker.js",
|
"glob": "pdf.worker.js",
|
||||||
|
14
demo-shell/config/dev-copy-watch.js
Normal file
14
demo-shell/config/dev-copy-watch.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
const cpx = require('cpx');
|
||||||
|
|
||||||
|
//Workaround for https://github.com/angular/angular-cli/issues/8783
|
||||||
|
//we copy before the files in dist-dev-temp in the demo shell and after we let the angular cli watch over them..double wathh necessary for dev mode
|
||||||
|
|
||||||
|
cpx.watch('../lib/core/prebuilt-themes/**/*.*', './dist-dev-temp/assets/prebuilt-themes')
|
||||||
|
cpx.watch('../lib/core/assets/**/*.*', './dist-dev-temp/assets/' )
|
||||||
|
cpx.watch('../lib/process-services/assets/**/*.*', './dist-dev-temp/assets/' )
|
||||||
|
cpx.watch('../lib/content-services/assets/**/*.*', './dist-dev-temp/assets/' )
|
||||||
|
|
||||||
|
cpx.watch('../lib/core/i18n/**/*.*', './dist-dev-temp//assets/adf-core/i18n' )
|
||||||
|
cpx.watch('../lib/process-services/i18n/**/*.*', './dist-dev-temp/assets/adf-process-services/i18n' )
|
||||||
|
cpx.watch('../lib/content-services/i18n/**/*.*', './dist-dev-temp/assets/adf-content-services/i18n' )
|
||||||
|
cpx.watch('../lib/insights/i18n/**/*.*', './dist-dev-temp//assets/adf-insights/i18n' )
|
@ -7,12 +7,13 @@
|
|||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"prestart": "npm run validate-config",
|
"prestart": "npm run validate-config",
|
||||||
"start": "npm run server-versions && rimraf dist && ng serve --host 0.0.0.0 --app dist --open --aot=false",
|
"start": "npm run server-versions && rimraf dist && ng serve --host 0.0.0.0 --app dist --open --aot=false",
|
||||||
"start:dev": "npm run lint && npm run server-versions && rimraf dist && npm run clean-lib-angular && concurrently \"ng serve --host 0.0.0.0 --disable-host-check --app dev pp-dev --proxy-config proxy.conf.js --open\" \"npm run style:dev -- --watch\" ",
|
"start:dev": " npm run lint && npm run server-versions && rimraf dist && npm run clean-lib-angular && concurrently \"ng serve --host 0.0.0.0 --disable-host-check --app dev pp-dev --proxy-config proxy.conf.js --open\" \"npm run style:dev --watch\" \"npm run copy:dev\" ",
|
||||||
"start:dist": "npm run server-versions && rimraf dist && node --max_old_space_size=30000 node_modules/.bin/ng serve --prod --build-optimizer=false --aot=false --host 0.0.0.0 --disable-host-check --app dist",
|
"start:dist": "npm run server-versions && rimraf dist && node --max_old_space_size=30000 node_modules/.bin/ng serve --prod --build-optimizer=false --aot=false --host 0.0.0.0 --disable-host-check --app dist",
|
||||||
"build": "npm run server-versions && rimraf dist && ng build --app dist",
|
"build": "npm run server-versions && rimraf dist && ng build --app dist",
|
||||||
"build:dev": "npm run lint && npm run style:dev && npm run server-versions && rimraf dist && ng build --app dev",
|
"build:dev": "npm run lint && npm run style:dev && npm run server-versions && rimraf dist && ng build --app dev",
|
||||||
"build:dist": "npm run style:dev && npm run server-versions && rimraf dist && node --max_old_space_size=30000 node_modules/.bin/ng build --prod --build-optimizer=false --aot=false --app dist",
|
"build:dist": "npm run style:dev && npm run server-versions && rimraf dist && node --max_old_space_size=30000 node_modules/.bin/ng build --prod --build-optimizer=false --aot=false --app dist",
|
||||||
"style:dev": "npm run webpack -- --config config/webpack.style.js --progress --profile --bail",
|
"style:dev": "npm run webpack -- --config config/webpack.style.js --progress --profile --bail",
|
||||||
|
"copy:dev": "node ./config/dev-copy-watch.js",
|
||||||
"test": "ng test",
|
"test": "ng test",
|
||||||
"lint": "ng lint",
|
"lint": "ng lint",
|
||||||
"e2e": "ng e2e",
|
"e2e": "ng e2e",
|
||||||
@ -92,7 +93,7 @@
|
|||||||
"moment": "2.18.1",
|
"moment": "2.18.1",
|
||||||
"moment-es6": "^1.0.0",
|
"moment-es6": "^1.0.0",
|
||||||
"ng2-charts": "1.6.0",
|
"ng2-charts": "1.6.0",
|
||||||
"pdfjs-dist": "1.5.404",
|
"pdfjs-dist": "2.0.265",
|
||||||
"raphael": "2.2.7",
|
"raphael": "2.2.7",
|
||||||
"reflect-metadata": "0.1.10",
|
"reflect-metadata": "0.1.10",
|
||||||
"rxjs": "5.5.2",
|
"rxjs": "5.5.2",
|
||||||
@ -101,27 +102,28 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/core": "0.0.28",
|
"@angular-devkit/core": "0.0.28",
|
||||||
"@angular/cli": "1.5.0",
|
"@angular/cli": "1.6.5",
|
||||||
"@angular/compiler-cli": "5.1.1",
|
"@angular/compiler-cli": "^5.2.0",
|
||||||
"@angular/language-service": "5.1.1",
|
"@angular/language-service": "^5.2.0",
|
||||||
"@types/jasmine": "~2.5.53",
|
"@types/jasmine": "~2.8.3",
|
||||||
"@types/jasminewd2": "~2.0.2",
|
"@types/jasminewd2": "~2.0.2",
|
||||||
"@types/node": "~6.0.60",
|
"@types/node": "~6.0.60",
|
||||||
"ajv-cli": "^3.0.0",
|
"ajv-cli": "^3.0.0",
|
||||||
"codelyzer": "4.0.0",
|
"codelyzer": "4.1.0",
|
||||||
"concurrently": "^3.5.1",
|
"concurrently": "^3.5.1",
|
||||||
"jasmine-core": "~2.6.2",
|
"cpx": "^1.5.0",
|
||||||
"jasmine-spec-reporter": "~4.1.0",
|
"jasmine-core": "~2.8.0",
|
||||||
"karma": "~1.7.0",
|
"jasmine-spec-reporter": "~4.2.1",
|
||||||
"karma-chrome-launcher": "~2.1.1",
|
"karma": "~2.0.0",
|
||||||
|
"karma-chrome-launcher": "~2.2.0",
|
||||||
"karma-cli": "~1.0.1",
|
"karma-cli": "~1.0.1",
|
||||||
"karma-coverage-istanbul-reporter": "^1.2.1",
|
"karma-coverage-istanbul-reporter": "^1.2.1",
|
||||||
"karma-jasmine": "~1.1.0",
|
"karma-jasmine": "~1.1.0",
|
||||||
"karma-jasmine-html-reporter": "^0.2.2",
|
"karma-jasmine-html-reporter": "^0.2.2",
|
||||||
"protractor": "~5.1.2",
|
"protractor": "~5.1.2",
|
||||||
"rimraf": "^2.6.2",
|
"rimraf": "^2.6.2",
|
||||||
"ts-node": "~3.2.0",
|
"ts-node": "~4.1.0",
|
||||||
"tslint": "^5.7.0",
|
"tslint": "~5.9.1",
|
||||||
"typescript": "2.6.2"
|
"typescript": "~2.5.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ import { DocumentListComponent, PermissionStyleModel, DownloadZipDialogComponent
|
|||||||
import { SelectAppsDialogComponent } from '@alfresco/adf-process-services';
|
import { SelectAppsDialogComponent } from '@alfresco/adf-process-services';
|
||||||
|
|
||||||
import { VersionManagerDialogAdapterComponent } from './version-manager-dialog-adapter.component';
|
import { VersionManagerDialogAdapterComponent } from './version-manager-dialog-adapter.component';
|
||||||
import { Subscription } from 'rxjs/Rx';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
|
|
||||||
const DEFAULT_FOLDER_TO_SHOW = '-my-';
|
const DEFAULT_FOLDER_TO_SHOW = '-my-';
|
||||||
|
|
||||||
@ -272,7 +272,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
message,
|
message,
|
||||||
4000
|
4000
|
||||||
);
|
);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
handleUploadError(event: any) {
|
handleUploadError(event: any) {
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
import { Component, OnDestroy, OnInit } from '@angular/core';
|
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { ActivatedRoute } from '@angular/router';
|
import { ActivatedRoute } from '@angular/router';
|
||||||
import { Subscription } from 'rxjs/Rx';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-form-node-viewer',
|
selector: 'app-form-node-viewer',
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
import { Component, OnDestroy, OnInit } from '@angular/core';
|
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { ActivatedRoute } from '@angular/router';
|
import { ActivatedRoute } from '@angular/router';
|
||||||
import { Subscription } from 'rxjs/Rx';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-form-viewer',
|
selector: 'app-form-viewer',
|
||||||
|
@ -58,7 +58,7 @@ import {
|
|||||||
ObjectDataRow,
|
ObjectDataRow,
|
||||||
ObjectDataTableAdapter
|
ObjectDataTableAdapter
|
||||||
} from '@alfresco/adf-core';
|
} from '@alfresco/adf-core';
|
||||||
import { Subscription } from 'rxjs/Rx';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
import { /*CustomEditorComponent*/ CustomStencil01 } from './custom-editor/custom-editor.component';
|
import { /*CustomEditorComponent*/ CustomStencil01 } from './custom-editor/custom-editor.component';
|
||||||
import { DemoFieldValidator } from './demo-field-validator';
|
import { DemoFieldValidator } from './demo-field-validator';
|
||||||
|
|
||||||
|
@ -28,6 +28,6 @@ export class SettingsComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onError(error: string) {
|
onError(error: string) {
|
||||||
this.logService.log(error)
|
this.logService.log(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import 'hammerjs';
|
|||||||
import 'chart.js';
|
import 'chart.js';
|
||||||
import 'ng2-charts';
|
import 'ng2-charts';
|
||||||
|
|
||||||
import pdfjsLib from 'pdfjs-dist';
|
import * as pdfjsLib from 'pdfjs-dist';
|
||||||
pdfjsLib.PDFJS.workerSrc = 'pdf.worker.js';
|
pdfjsLib.PDFJS.workerSrc = 'pdf.worker.js';
|
||||||
|
|
||||||
if (environment.production) {
|
if (environment.production) {
|
||||||
|
@ -65,5 +65,6 @@ import 'intl'; // Run `npm install --save intl`.
|
|||||||
* Support custom event in IE11
|
* Support custom event in IE11
|
||||||
*
|
*
|
||||||
* */
|
* */
|
||||||
import 'custom-event-polyfill/custom-event-polyfill' // Run `npm install --save custom-event-polyfill`.
|
|
||||||
|
import 'custom-event-polyfill/custom-event-polyfill'; // Run `npm install --save custom-event-polyfill`.
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"node_modules/codelyzer"
|
"node_modules/codelyzer"
|
||||||
],
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
|
"arrow-return-shorthand": true,
|
||||||
"callable-types": true,
|
"callable-types": true,
|
||||||
"class-name": true,
|
"class-name": true,
|
||||||
"comment-format": [
|
"comment-format": [
|
||||||
@ -12,7 +13,11 @@
|
|||||||
"curly": true,
|
"curly": true,
|
||||||
"eofline": true,
|
"eofline": true,
|
||||||
"forin": true,
|
"forin": true,
|
||||||
"import-blacklist": [true, "rxjs"],
|
"import-blacklist": [
|
||||||
|
true,
|
||||||
|
"rxjs",
|
||||||
|
"rxjs/Rx"
|
||||||
|
],
|
||||||
"import-spacing": true,
|
"import-spacing": true,
|
||||||
"indent": [
|
"indent": [
|
||||||
true,
|
true,
|
||||||
@ -27,8 +32,14 @@
|
|||||||
"member-access": false,
|
"member-access": false,
|
||||||
"member-ordering": [
|
"member-ordering": [
|
||||||
true,
|
true,
|
||||||
"static-before-instance",
|
{
|
||||||
"variables-before-functions"
|
"order": [
|
||||||
|
"static-field",
|
||||||
|
"instance-field",
|
||||||
|
"static-method",
|
||||||
|
"instance-method"
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"no-arg": true,
|
"no-arg": true,
|
||||||
"no-bitwise": true,
|
"no-bitwise": true,
|
||||||
@ -43,7 +54,7 @@
|
|||||||
],
|
],
|
||||||
"no-construct": true,
|
"no-construct": true,
|
||||||
"no-debugger": true,
|
"no-debugger": true,
|
||||||
"no-duplicate-variable": true,
|
"no-duplicate-super": true,
|
||||||
"no-empty": false,
|
"no-empty": false,
|
||||||
"no-empty-interface": true,
|
"no-empty-interface": true,
|
||||||
"no-eval": true,
|
"no-eval": true,
|
||||||
@ -71,6 +82,7 @@
|
|||||||
],
|
],
|
||||||
"radix": true,
|
"radix": true,
|
||||||
"semicolon": [
|
"semicolon": [
|
||||||
|
true,
|
||||||
"always"
|
"always"
|
||||||
],
|
],
|
||||||
"triple-equals": [
|
"triple-equals": [
|
||||||
@ -108,9 +120,6 @@
|
|||||||
"use-life-cycle-interface": true,
|
"use-life-cycle-interface": true,
|
||||||
"use-pipe-transform-interface": true,
|
"use-pipe-transform-interface": true,
|
||||||
"component-class-suffix": true,
|
"component-class-suffix": true,
|
||||||
"directive-class-suffix": true,
|
"directive-class-suffix": true
|
||||||
"no-access-missing-member": true,
|
|
||||||
"templates-use-public": true,
|
|
||||||
"invoke-injectable": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ export class ContentNodeSelectorPanelComponent implements OnInit {
|
|||||||
pagination: Pagination;
|
pagination: Pagination;
|
||||||
skipCount: number = 0;
|
skipCount: number = 0;
|
||||||
infiniteScroll: boolean = false;
|
infiniteScroll: boolean = false;
|
||||||
debounceSearch: number= 200;
|
debounceSearch: number = 200;
|
||||||
searchInput: FormControl = new FormControl();
|
searchInput: FormControl = new FormControl();
|
||||||
|
|
||||||
constructor(private contentNodeSelectorService: ContentNodeSelectorService,
|
constructor(private contentNodeSelectorService: ContentNodeSelectorService,
|
||||||
|
@ -141,7 +141,7 @@ export let errorJson = {
|
|||||||
search: SearchComponent;
|
search: SearchComponent;
|
||||||
|
|
||||||
message: string = '';
|
message: string = '';
|
||||||
searchedWord= '';
|
searchedWord = '';
|
||||||
maxResults: number = 5;
|
maxResults: number = 5;
|
||||||
searchNode: QueryBody;
|
searchNode: QueryBody;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ describe('AccordionGroupComponent', () => {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be closed by default', () => {
|
it('should be closed by default', async(() => {
|
||||||
component.heading = 'Fake Header';
|
component.heading = 'Fake Header';
|
||||||
component.headingIcon = 'fake-icon';
|
component.headingIcon = 'fake-icon';
|
||||||
component.contentWrapper.nativeElement.innerHTML = '<a>Test</a>';
|
component.contentWrapper.nativeElement.innerHTML = '<a>Test</a>';
|
||||||
@ -59,9 +59,9 @@ describe('AccordionGroupComponent', () => {
|
|||||||
let headerToggle = element.querySelector('#accordion-button .material-icons');
|
let headerToggle = element.querySelector('#accordion-button .material-icons');
|
||||||
expect(headerToggle.innerText).toEqual('expand_more');
|
expect(headerToggle.innerText).toEqual('expand_more');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should be open when click', () => {
|
it('should be open when click', async(() => {
|
||||||
component.isSelected = true;
|
component.isSelected = true;
|
||||||
component.heading = 'Fake Header';
|
component.heading = 'Fake Header';
|
||||||
component.headingIcon = 'fake-icon';
|
component.headingIcon = 'fake-icon';
|
||||||
@ -77,9 +77,9 @@ describe('AccordionGroupComponent', () => {
|
|||||||
let headerToggle = element.querySelector('#accordion-button .material-icons');
|
let headerToggle = element.querySelector('#accordion-button .material-icons');
|
||||||
expect(headerToggle.innerText).toEqual('expand_less');
|
expect(headerToggle.innerText).toEqual('expand_less');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should show expand icon by default', () => {
|
it('should show expand icon by default', async(() => {
|
||||||
component.heading = 'Fake Header';
|
component.heading = 'Fake Header';
|
||||||
component.headingIcon = 'fake-icon';
|
component.headingIcon = 'fake-icon';
|
||||||
component.contentWrapper.nativeElement.innerHTML = '<a>Test</a>';
|
component.contentWrapper.nativeElement.innerHTML = '<a>Test</a>';
|
||||||
@ -88,9 +88,9 @@ describe('AccordionGroupComponent', () => {
|
|||||||
let headerIcon = element.querySelector('#accordion-button');
|
let headerIcon = element.querySelector('#accordion-button');
|
||||||
expect(headerIcon).toBeDefined();
|
expect(headerIcon).toBeDefined();
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should hide expand icon', () => {
|
it('should hide expand icon', async(() => {
|
||||||
component.heading = 'Fake Header';
|
component.heading = 'Fake Header';
|
||||||
component.headingIcon = 'fake-icon';
|
component.headingIcon = 'fake-icon';
|
||||||
component.hasAccordionIcon = false;
|
component.hasAccordionIcon = false;
|
||||||
@ -100,19 +100,18 @@ describe('AccordionGroupComponent', () => {
|
|||||||
let headerIcon = element.querySelector('#accordion-button');
|
let headerIcon = element.querySelector('#accordion-button');
|
||||||
expect(headerIcon).toBeNull();
|
expect(headerIcon).toBeNull();
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should emit an event when a heading clicked', (done) => {
|
it('should emit an event when a heading clicked', async(() => {
|
||||||
component.heading = 'Fake Header';
|
component.heading = 'Fake Header';
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
let heading: string = component.heading;
|
let heading: string = component.heading;
|
||||||
component.headingClick.subscribe((headName: string) => {
|
component.headingClick.subscribe((headName: string) => {
|
||||||
expect(headName).toBeDefined();
|
expect(headName).toBeDefined();
|
||||||
expect(headName).toEqual(heading);
|
expect(headName).toEqual(heading);
|
||||||
done();
|
|
||||||
});
|
});
|
||||||
let header = element.querySelector('.adf-panel-heading');
|
let header = element.querySelector('.adf-panel-heading');
|
||||||
header.click();
|
header.click();
|
||||||
});
|
}));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -339,8 +339,8 @@ describe('ActivitiStartForm', () => {
|
|||||||
component.showOutcomeButtons = true;
|
component.showOutcomeButtons = true;
|
||||||
component.showRefreshButton = true;
|
component.showRefreshButton = true;
|
||||||
component.ngOnChanges({ processDefinitionId: new SimpleChange(exampleId1, exampleId2, true) });
|
component.ngOnChanges({ processDefinitionId: new SimpleChange(exampleId1, exampleId2, true) });
|
||||||
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
|
||||||
const formTabs = component.form.tabs;
|
const formTabs = component.form.tabs;
|
||||||
const tabField1 = formTabs.find(tab => tab.id === 'form1');
|
const tabField1 = formTabs.find(tab => tab.id === 'form1');
|
||||||
const tabField2 = formTabs.find(tab => tab.id === 'form2');
|
const tabField2 = formTabs.find(tab => tab.id === 'form2');
|
||||||
@ -357,8 +357,8 @@ describe('ActivitiStartForm', () => {
|
|||||||
component.showOutcomeButtons = true;
|
component.showOutcomeButtons = true;
|
||||||
component.showRefreshButton = true;
|
component.showRefreshButton = true;
|
||||||
component.ngOnChanges({ processDefinitionId: new SimpleChange(exampleId1, exampleId2, true) });
|
component.ngOnChanges({ processDefinitionId: new SimpleChange(exampleId1, exampleId2, true) });
|
||||||
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
|
||||||
const titleIcon = fixture.debugElement.nativeElement.querySelector('mat-card-title>mat-icon');
|
const titleIcon = fixture.debugElement.nativeElement.querySelector('mat-card-title>mat-icon');
|
||||||
const titleElement = fixture.debugElement.nativeElement.querySelector('mat-card-title>h2');
|
const titleElement = fixture.debugElement.nativeElement.querySelector('mat-card-title>h2');
|
||||||
const actionButtons = fixture.debugElement.nativeElement.querySelectorAll('.mat-button');
|
const actionButtons = fixture.debugElement.nativeElement.querySelectorAll('.mat-button');
|
||||||
|
@ -43,9 +43,9 @@ describe('DropdownWidgetComponent', () => {
|
|||||||
let element: HTMLElement;
|
let element: HTMLElement;
|
||||||
|
|
||||||
let fakeOptionList: FormFieldOption[] = [
|
let fakeOptionList: FormFieldOption[] = [
|
||||||
{id: 'opt_1', name: 'option_1'},
|
{ id: 'opt_1', name: 'option_1' },
|
||||||
{id: 'opt_2', name: 'option_2'},
|
{ id: 'opt_2', name: 'option_2' },
|
||||||
{id: 'opt_3', name: 'option_3'}];
|
{ id: 'opt_3', name: 'option_3' }];
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@ -71,7 +71,7 @@ describe('DropdownWidgetComponent', () => {
|
|||||||
widget.ngOnInit();
|
widget.ngOnInit();
|
||||||
expect(formService.getRestFieldValues).not.toHaveBeenCalled();
|
expect(formService.getRestFieldValues).not.toHaveBeenCalled();
|
||||||
|
|
||||||
widget.field = new FormFieldModel(null, {restUrl: null});
|
widget.field = new FormFieldModel(null, { restUrl: null });
|
||||||
widget.ngOnInit();
|
widget.ngOnInit();
|
||||||
expect(formService.getRestFieldValues).not.toHaveBeenCalled();
|
expect(formService.getRestFieldValues).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
@ -100,7 +100,7 @@ describe('DropdownWidgetComponent', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should preserve empty option when loading fields', () => {
|
it('should preserve empty option when loading fields', () => {
|
||||||
let restFieldValue: FormFieldOption = <FormFieldOption> {id: '1', name: 'Option1'};
|
let restFieldValue: FormFieldOption = <FormFieldOption> { id: '1', name: 'Option1' };
|
||||||
spyOn(formService, 'getRestFieldValues').and.callFake(() => {
|
spyOn(formService, 'getRestFieldValues').and.callFake(() => {
|
||||||
return Observable.create(observer => {
|
return Observable.create(observer => {
|
||||||
observer.next([restFieldValue]);
|
observer.next([restFieldValue]);
|
||||||
@ -108,8 +108,8 @@ describe('DropdownWidgetComponent', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
let form = new FormModel({taskId: '<id>'});
|
let form = new FormModel({ taskId: '<id>' });
|
||||||
let emptyOption: FormFieldOption = <FormFieldOption> {id: 'empty', name: 'Empty'};
|
let emptyOption: FormFieldOption = <FormFieldOption> { id: 'empty', name: 'Empty' };
|
||||||
widget.field = new FormFieldModel(form, {
|
widget.field = new FormFieldModel(form, {
|
||||||
id: '<id>',
|
id: '<id>',
|
||||||
restUrl: '/some/url/address',
|
restUrl: '/some/url/address',
|
||||||
@ -133,14 +133,14 @@ describe('DropdownWidgetComponent', () => {
|
|||||||
spyOn(formService, 'getRestFieldValues').and.callFake(() => {
|
spyOn(formService, 'getRestFieldValues').and.callFake(() => {
|
||||||
return Observable.of(fakeOptionList);
|
return Observable.of(fakeOptionList);
|
||||||
});
|
});
|
||||||
widget.field = new FormFieldModel(new FormModel({taskId: 'fake-task-id'}), {
|
widget.field = new FormFieldModel(new FormModel({ taskId: 'fake-task-id' }), {
|
||||||
id: 'dropdown-id',
|
id: 'dropdown-id',
|
||||||
name: 'date-name',
|
name: 'date-name',
|
||||||
type: 'dropdown',
|
type: 'dropdown',
|
||||||
readOnly: 'false',
|
readOnly: 'false',
|
||||||
restUrl: 'fake-rest-url'
|
restUrl: 'fake-rest-url'
|
||||||
});
|
});
|
||||||
widget.field.emptyOption = {id: 'empty', name: 'Choose one...'};
|
widget.field.emptyOption = { id: 'empty', name: 'Choose one...' };
|
||||||
widget.field.isVisible = true;
|
widget.field.isVisible = true;
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
}));
|
}));
|
||||||
@ -179,6 +179,8 @@ describe('DropdownWidgetComponent', () => {
|
|||||||
|
|
||||||
openSelect();
|
openSelect();
|
||||||
|
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
fixture.whenStable()
|
fixture.whenStable()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
let dropDownElement: any = element.querySelector('#dropdown-id');
|
let dropDownElement: any = element.querySelector('#dropdown-id');
|
||||||
@ -216,14 +218,14 @@ describe('DropdownWidgetComponent', () => {
|
|||||||
spyOn(formService, 'getRestFieldValuesByProcessId').and.callFake(() => {
|
spyOn(formService, 'getRestFieldValuesByProcessId').and.callFake(() => {
|
||||||
return Observable.of(fakeOptionList);
|
return Observable.of(fakeOptionList);
|
||||||
});
|
});
|
||||||
widget.field = new FormFieldModel(new FormModel({processDefinitionId: 'fake-process-id'}), {
|
widget.field = new FormFieldModel(new FormModel({ processDefinitionId: 'fake-process-id' }), {
|
||||||
id: 'dropdown-id',
|
id: 'dropdown-id',
|
||||||
name: 'date-name',
|
name: 'date-name',
|
||||||
type: 'dropdown',
|
type: 'dropdown',
|
||||||
readOnly: 'false',
|
readOnly: 'false',
|
||||||
restUrl: 'fake-rest-url'
|
restUrl: 'fake-rest-url'
|
||||||
});
|
});
|
||||||
widget.field.emptyOption = {id: 'empty', name: 'Choose one...'};
|
widget.field.emptyOption = { id: 'empty', name: 'Choose one...' };
|
||||||
widget.field.isVisible = true;
|
widget.field.isVisible = true;
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
}));
|
}));
|
||||||
@ -262,6 +264,8 @@ describe('DropdownWidgetComponent', () => {
|
|||||||
|
|
||||||
openSelect();
|
openSelect();
|
||||||
|
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
fixture.whenStable()
|
fixture.whenStable()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
let dropDownElement: any = element.querySelector('#dropdown-id');
|
let dropDownElement: any = element.querySelector('#dropdown-id');
|
||||||
@ -270,7 +274,7 @@ describe('DropdownWidgetComponent', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should be disabled when the field is readonly', async(() => {
|
it('should be disabled when the field is readonly', async(() => {
|
||||||
widget.field = new FormFieldModel(new FormModel({processDefinitionId: 'fake-process-id'}), {
|
widget.field = new FormFieldModel(new FormModel({ processDefinitionId: 'fake-process-id' }), {
|
||||||
id: 'dropdown-id',
|
id: 'dropdown-id',
|
||||||
name: 'date-name',
|
name: 'date-name',
|
||||||
type: 'dropdown',
|
type: 'dropdown',
|
||||||
|
@ -91,29 +91,22 @@ describe('TabsWidgetComponent', () => {
|
|||||||
fixture = TestBed.createComponent(TabsWidgetComponent);
|
fixture = TestBed.createComponent(TabsWidgetComponent);
|
||||||
tabWidgetComponent = fixture.componentInstance;
|
tabWidgetComponent = fixture.componentInstance;
|
||||||
element = fixture.nativeElement;
|
element = fixture.nativeElement;
|
||||||
|
|
||||||
|
fakeTabVisible = new TabModel(new FormModel(fakeFormJson), {
|
||||||
|
id: 'tab-id-visible',
|
||||||
|
title: 'tab-title-visible'
|
||||||
|
});
|
||||||
|
fakeTabVisible.isVisible = true;
|
||||||
|
fakeTabInvisible = new TabModel(new FormModel(fakeFormJson), {
|
||||||
|
id: 'tab-id-invisible',
|
||||||
|
title: 'tab-title-invisible'
|
||||||
|
});
|
||||||
|
fakeTabInvisible.isVisible = false;
|
||||||
|
tabWidgetComponent.tabs.push(fakeTabVisible);
|
||||||
|
tabWidgetComponent.tabs.push(fakeTabInvisible);
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fakeTabVisible = new TabModel(new FormModel(fakeFormJson), {
|
|
||||||
id: 'tab-id-visible',
|
|
||||||
title: 'tab-title-visible'
|
|
||||||
});
|
|
||||||
fakeTabVisible.isVisible = true;
|
|
||||||
fakeTabInvisible = new TabModel(new FormModel(fakeFormJson), {
|
|
||||||
id: 'tab-id-invisible',
|
|
||||||
title: 'tab-title-invisible'
|
|
||||||
});
|
|
||||||
fakeTabInvisible.isVisible = false;
|
|
||||||
tabWidgetComponent.tabs.push(fakeTabVisible);
|
|
||||||
tabWidgetComponent.tabs.push(fakeTabInvisible);
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
fixture.destroy();
|
|
||||||
TestBed.resetTestingModule();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should show only visible tabs', () => {
|
it('should show only visible tabs', () => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
fixture.whenStable()
|
fixture.whenStable()
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
<span class="adf-userinfo__detail-profile" id="ecm-email"> {{ecmUser.email}} </span>
|
<span class="adf-userinfo__detail-profile" id="ecm-email"> {{ecmUser.email}} </span>
|
||||||
</div>
|
</div>
|
||||||
<div class="adf-userinfo-detail">
|
<div class="adf-userinfo-detail">
|
||||||
<span class="adf-userinfo__secondary-info">
|
<span class="adf-userinfo__secondary-info" id="ecm-job-title-label">
|
||||||
{{ 'USER_PROFILE.LABELS.ECM.JOB_TITLE' | translate }}
|
{{ 'USER_PROFILE.LABELS.ECM.JOB_TITLE' | translate }}
|
||||||
<span id="ecm-job-title" class="adf-userinfo__detail-profile"> {{ ecmUser.jobTitle ? ecmUser.jobTitle : 'N/A' }} </span>
|
<span id="ecm-job-title" class="adf-userinfo__detail-profile"> {{ ecmUser.jobTitle ? ecmUser.jobTitle : 'N/A' }} </span>
|
||||||
</span>
|
</span>
|
||||||
|
@ -26,6 +26,7 @@ import { BpmUserService } from '../services/bpm-user.service';
|
|||||||
import { EcmUserService } from '../services/ecm-user.service';
|
import { EcmUserService } from '../services/ecm-user.service';
|
||||||
import { BpmUserModel } from './../models/bpm-user.model';
|
import { BpmUserModel } from './../models/bpm-user.model';
|
||||||
import { UserInfoComponent } from './user-info.component';
|
import { UserInfoComponent } from './user-info.component';
|
||||||
|
import { Observable } from 'rxjs/Observable';
|
||||||
|
|
||||||
class FakeSanitazer extends DomSanitizer {
|
class FakeSanitazer extends DomSanitizer {
|
||||||
|
|
||||||
@ -58,15 +59,22 @@ class FakeSanitazer extends DomSanitizer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
declare let jasmine: any;
|
|
||||||
|
|
||||||
describe('User info component', () => {
|
describe('User info component', () => {
|
||||||
|
|
||||||
let userInfoComp: UserInfoComponent;
|
let component: UserInfoComponent;
|
||||||
let fixture: ComponentFixture<UserInfoComponent>;
|
let fixture: ComponentFixture<UserInfoComponent>;
|
||||||
let element: HTMLElement;
|
let element: HTMLElement;
|
||||||
let stubAuthService: AuthenticationService;
|
let authService: AuthenticationService;
|
||||||
let stubContent: ContentService;
|
let contentService: ContentService;
|
||||||
|
let ecmUserService: EcmUserService;
|
||||||
|
let bpmUserService: BpmUserService;
|
||||||
|
|
||||||
|
function openUserInfo() {
|
||||||
|
fixture.detectChanges();
|
||||||
|
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
||||||
|
imageButton.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
}
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@ -78,18 +86,25 @@ describe('User info component', () => {
|
|||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
EcmUserService,
|
EcmUserService,
|
||||||
BpmUserService
|
BpmUserService,
|
||||||
|
ContentService
|
||||||
]
|
]
|
||||||
}).compileComponents().then(() => {
|
}).compileComponents().then(() => {
|
||||||
fixture = TestBed.createComponent(UserInfoComponent);
|
fixture = TestBed.createComponent(UserInfoComponent);
|
||||||
userInfoComp = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
element = fixture.nativeElement;
|
element = fixture.nativeElement;
|
||||||
|
|
||||||
stubAuthService = TestBed.get(AuthenticationService);
|
authService = TestBed.get(AuthenticationService);
|
||||||
stubContent = TestBed.get(ContentService);
|
ecmUserService = TestBed.get(EcmUserService);
|
||||||
|
bpmUserService = TestBed.get(BpmUserService);
|
||||||
|
contentService = TestBed.get(ContentService);
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
fixture.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
it('should not show any image if the user is not logged in', () => {
|
it('should not show any image if the user is not logged in', () => {
|
||||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||||
expect(element.querySelector('#logged-user-img')).toBeNull();
|
expect(element.querySelector('#logged-user-img')).toBeNull();
|
||||||
@ -104,107 +119,77 @@ describe('User info component', () => {
|
|||||||
|
|
||||||
describe('when user is logged on ecm', () => {
|
describe('when user is logged on ecm', () => {
|
||||||
|
|
||||||
beforeEach(() => {
|
describe('ui ', () => {
|
||||||
spyOn(stubAuthService, 'isEcmLoggedIn').and.returnValue(true);
|
|
||||||
spyOn(stubAuthService, 'isLoggedIn').and.returnValue(true);
|
beforeEach(() => {
|
||||||
jasmine.Ajax.install();
|
spyOn(authService, 'isEcmLoggedIn').and.returnValue(true);
|
||||||
|
spyOn(authService, 'isLoggedIn').and.returnValue(true);
|
||||||
|
spyOn(ecmUserService, 'getCurrentUserInfo').and.returnValue(Observable.of(fakeEcmEditedUser));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should show ecm only last name when user first name is null ', async(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
||||||
|
imageButton.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||||
|
let ecmUsername = fixture.debugElement.query(By.css('#ecm-username'));
|
||||||
|
expect(ecmUsername).toBeDefined();
|
||||||
|
expect(ecmUsername).not.toBeNull();
|
||||||
|
expect(ecmUsername.nativeElement.textContent).not.toContain('fake-ecm-first-name');
|
||||||
|
expect(ecmUsername.nativeElement.textContent).not.toContain('null');
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should show the username when showName attribute is true', async(() => {
|
||||||
|
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
expect(component.showName).toBeTruthy();
|
||||||
|
expect(element.querySelector('#adf-userinfo-ecm-name-display')).not.toBeNull();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should hide the username when showName attribute is false', async(() => {
|
||||||
|
component.showName = false;
|
||||||
|
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
expect(element.querySelector('#adf-userinfo-ecm-name-display')).toBeNull();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should have the defined class to show the name on the right side', async(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
expect(element.querySelector('#userinfo_container').classList).toContain('adf-userinfo-name-right');
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should not have the defined class to show the name on the left side', async(() => {
|
||||||
|
component.namePosition = 'left';
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
expect(element.querySelector('#userinfo_container').classList).not.toContain('adf-userinfo-name-right');
|
||||||
|
});
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
jasmine.Ajax.uninstall();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should show ecm only last name when user first name is null ', async(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify({ entry: fakeEcmEditedUser })
|
|
||||||
});
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
|
||||||
imageButton.click();
|
|
||||||
fixture.detectChanges();
|
|
||||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
|
||||||
let ecmUsername = fixture.debugElement.query(By.css('#ecm-username'));
|
|
||||||
expect(ecmUsername).toBeDefined();
|
|
||||||
expect(ecmUsername).not.toBeNull();
|
|
||||||
expect(ecmUsername.nativeElement.textContent).not.toContain('fake-ecm-first-name');
|
|
||||||
expect(ecmUsername.nativeElement.textContent).not.toContain('null');
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should show the username when showName attribute is true', async(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify({ entry: fakeEcmEditedUser })
|
|
||||||
});
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
expect(userInfoComp.showName).toBeTruthy();
|
|
||||||
expect(element.querySelector('#adf-userinfo-ecm-name-display')).not.toBeNull();
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should hide the username when showName attribute is false', async(() => {
|
|
||||||
userInfoComp.showName = false;
|
|
||||||
fixture.detectChanges();
|
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify({ entry: fakeEcmEditedUser })
|
|
||||||
});
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
expect(element.querySelector('#adf-userinfo-ecm-name-display')).toBeNull();
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should have the defined class to show the name on the right side', async(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify({ entry: fakeEcmEditedUser })
|
|
||||||
});
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
expect(element.querySelector('#userinfo_container').classList).toContain('adf-userinfo-name-right');
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should not have the defined class to show the name on the left side', async(() => {
|
|
||||||
userInfoComp.namePosition = 'left';
|
|
||||||
fixture.detectChanges();
|
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify({ entry: fakeEcmEditedUser })
|
|
||||||
});
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
expect(element.querySelector('#userinfo_container').classList).not.toContain('adf-userinfo-name-right');
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe('and has image', () => {
|
describe('and has image', () => {
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
spyOn(stubContent, 'getContentUrl').and.returnValue('assets/images/ecmImg.gif');
|
spyOn(authService, 'isEcmLoggedIn').and.returnValue(true);
|
||||||
|
spyOn(authService, 'isLoggedIn').and.returnValue(true);
|
||||||
|
spyOn(ecmUserService, 'getCurrentUserInfo').and.returnValue(Observable.of(fakeEcmUser));
|
||||||
|
spyOn(contentService, 'getContentUrl').and.returnValue('assets/images/ecmImg.gif');
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify({ entry: fakeEcmUser })
|
|
||||||
});
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should get the ecm current user image from the service', async(() => {
|
it('should get the ecm current user image from the service', async(() => {
|
||||||
@ -222,20 +207,22 @@ describe('User info component', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should display the current user image if user has avatarId', async(() => {
|
it('should display the current user image if user has avatarId', async(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
||||||
imageButton.click();
|
imageButton.click();
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
let loggedImage = fixture.debugElement.query(By.css('#logged-user-img'));
|
let loggedImage = fixture.debugElement.query(By.css('#logged-user-img'));
|
||||||
expect(userInfoComp.ecmUser.avatarId).toBe('fake-avatar-id');
|
expect(component.ecmUser.avatarId).toBe('fake-avatar-id');
|
||||||
expect(element.querySelector('#userinfo_container')).not.toBeNull();
|
expect(element.querySelector('#userinfo_container')).not.toBeNull();
|
||||||
expect(loggedImage).not.toBeNull();
|
expect(loggedImage).not.toBeNull();
|
||||||
expect(loggedImage.properties.src).toContain('assets/images/ecmImg.gif');
|
expect(loggedImage.properties.src).toContain('assets/images/ecmImg.gif');
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should get the ecm user informations from the service', () => {
|
it('should get the ecm user informations from the service', async(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
||||||
@ -252,18 +239,16 @@ describe('User info component', () => {
|
|||||||
expect(ecmFullName.nativeElement.textContent).toContain('fake-ecm-first-name fake-ecm-last-name');
|
expect(ecmFullName.nativeElement.textContent).toContain('fake-ecm-first-name fake-ecm-last-name');
|
||||||
expect(ecmJobTitle.nativeElement.textContent).toContain('USER_PROFILE.LABELS.ECM.JOB_TITLE');
|
expect(ecmJobTitle.nativeElement.textContent).toContain('USER_PROFILE.LABELS.ECM.JOB_TITLE');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('and has no image', () => {
|
describe('and has no image', () => {
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
|
spyOn(authService, 'isEcmLoggedIn').and.returnValue(true);
|
||||||
|
spyOn(authService, 'isLoggedIn').and.returnValue(true);
|
||||||
|
spyOn(ecmUserService, 'getCurrentUserInfo').and.returnValue(Observable.of(fakeEcmUserNoImage));
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify({ entry: fakeEcmUserNoImage })
|
|
||||||
});
|
|
||||||
fixture.whenStable().then(() => fixture.detectChanges());
|
fixture.whenStable().then(() => fixture.detectChanges());
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -290,7 +275,7 @@ describe('User info component', () => {
|
|||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
let pipe = new InitialUsernamePipe(new FakeSanitazer());
|
let pipe = new InitialUsernamePipe(new FakeSanitazer());
|
||||||
expect(userInfoComp.ecmUser.avatarId).toBeNull();
|
expect(component.ecmUser.avatarId).toBeNull();
|
||||||
expect(pipe.transform({
|
expect(pipe.transform({
|
||||||
id: 13,
|
id: 13,
|
||||||
firstName: 'Wilbur',
|
firstName: 'Wilbur',
|
||||||
@ -305,24 +290,16 @@ describe('User info component', () => {
|
|||||||
|
|
||||||
describe('when user is logged on bpm', () => {
|
describe('when user is logged on bpm', () => {
|
||||||
|
|
||||||
|
let getCurrentUserInfoStub;
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
spyOn(stubAuthService, 'isBpmLoggedIn').and.returnValue(true);
|
spyOn(authService, 'isBpmLoggedIn').and.returnValue(true);
|
||||||
spyOn(stubAuthService, 'isLoggedIn').and.returnValue(true);
|
spyOn(authService, 'isLoggedIn').and.returnValue(true);
|
||||||
jasmine.Ajax.install();
|
getCurrentUserInfoStub = spyOn(bpmUserService, 'getCurrentUserInfo').and.returnValue(Observable.of(fakeBpmUser));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
afterEach(() => {
|
it('should show full name next the user image', async(() => {
|
||||||
jasmine.Ajax.uninstall();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should show full name next the user image', () => {
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify(fakeBpmUser)
|
|
||||||
});
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
||||||
@ -334,16 +311,10 @@ describe('User info component', () => {
|
|||||||
expect(bpmUserName).not.toBeNull();
|
expect(bpmUserName).not.toBeNull();
|
||||||
expect(bpmUserName.nativeElement.innerHTML).toContain('fake-bpm-first-name fake-bpm-last-name');
|
expect(bpmUserName.nativeElement.innerHTML).toContain('fake-bpm-first-name fake-bpm-last-name');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should get the bpm current user image from the service', () => {
|
it('should get the bpm current user image from the service', async(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify(fakeBpmUser)
|
|
||||||
});
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
expect(element.querySelector('#userinfo_container')).not.toBeNull();
|
expect(element.querySelector('#userinfo_container')).not.toBeNull();
|
||||||
@ -351,118 +322,93 @@ describe('User info component', () => {
|
|||||||
expect(element.querySelector('#logged-user-img').getAttribute('src'))
|
expect(element.querySelector('#logged-user-img').getAttribute('src'))
|
||||||
.toContain('activiti-app/app/rest/admin/profile-picture');
|
.toContain('activiti-app/app/rest/admin/profile-picture');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should show last name if first name is null', () => {
|
it('should show last name if first name is null', async(() => {
|
||||||
fixture.detectChanges();
|
|
||||||
let wrongBpmUser: BpmUserModel = new BpmUserModel({
|
let wrongBpmUser: BpmUserModel = new BpmUserModel({
|
||||||
firstName: null,
|
firstName: null,
|
||||||
lastName: 'fake-last-name'
|
lastName: 'fake-last-name'
|
||||||
});
|
});
|
||||||
userInfoComp.bpmUser = wrongBpmUser;
|
getCurrentUserInfoStub.and.returnValue(Observable.of(wrongBpmUser));
|
||||||
|
|
||||||
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
|
||||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||||
expect(element.querySelector('#bpm-username')).not.toBeNull();
|
expect(element.querySelector('#adf-userinfo-bpm-name-display')).not.toBeNull();
|
||||||
expect(element.querySelector('#bpm-username').textContent).toContain('fake-last-name');
|
expect(element.querySelector('#adf-userinfo-bpm-name-display').textContent).toContain('fake-last-name');
|
||||||
expect(element.querySelector('#bpm-username').textContent).not.toContain('fake-bpm-first-name');
|
expect(element.querySelector('#adf-userinfo-bpm-name-display').textContent).not.toContain('fake-bpm-first-name');
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should not show first name if it is null string', () => {
|
it('should not show first name if it is null string', async(() => {
|
||||||
fixture.detectChanges();
|
|
||||||
let wrongFirstNameBpmUser: BpmUserModel = new BpmUserModel({
|
let wrongFirstNameBpmUser: BpmUserModel = new BpmUserModel({
|
||||||
firstName: 'null',
|
firstName: 'null',
|
||||||
lastName: 'fake-last-name'
|
lastName: 'fake-last-name'
|
||||||
});
|
});
|
||||||
userInfoComp.bpmUser = wrongFirstNameBpmUser;
|
getCurrentUserInfoStub.and.returnValue(Observable.of(wrongFirstNameBpmUser));
|
||||||
|
|
||||||
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||||
expect(element.querySelector('#bpm-full-name')).toBeDefined();
|
expect(element.querySelector('#adf-userinfo-bpm-name-display')).toBeDefined();
|
||||||
expect(element.querySelector('#bpm-full-name').textContent).toContain('fake-last-name');
|
expect(element.querySelector('#adf-userinfo-bpm-name-display').textContent).toContain('fake-last-name');
|
||||||
expect(element.querySelector('#bpm-full-name').textContent).not.toContain('null');
|
expect(element.querySelector('#adf-userinfo-bpm-name-display').textContent).not.toContain('null');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should not show last name if it is null string', () => {
|
it('should not show last name if it is null string', async(() => {
|
||||||
fixture.detectChanges();
|
|
||||||
let wrongLastNameBpmUser: BpmUserModel = new BpmUserModel({
|
let wrongLastNameBpmUser: BpmUserModel = new BpmUserModel({
|
||||||
firstName: 'fake-first-name',
|
firstName: 'fake-first-name',
|
||||||
lastName: 'null'
|
lastName: 'null'
|
||||||
});
|
});
|
||||||
userInfoComp.bpmUser = wrongLastNameBpmUser;
|
getCurrentUserInfoStub.and.returnValue(Observable.of(wrongLastNameBpmUser));
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||||
expect(element.querySelector('#bpm-full-name')).toBeDefined();
|
expect(element.querySelector('#adf-userinfo-bpm-name-display')).toBeDefined();
|
||||||
expect(element.querySelector('#bpm-full-name').textContent).toContain('fake-first-name');
|
expect(element.querySelector('#adf-userinfo-bpm-name-display').textContent).toContain('fake-first-name');
|
||||||
expect(element.querySelector('#bpm-full-name').textContent).not.toContain('null');
|
expect(element.querySelector('#adf-userinfo-bpm-name-display').textContent).not.toContain('null');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should not show the tabs', () => {
|
it('should not show the tabs', async(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
||||||
|
imageButton.click();
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
expect(element.querySelector('#tab-bar-env').getAttribute('hidden')).not.toBeNull();
|
expect(fixture.debugElement.query(By.css('#tab-group-env')).classes['adf-hide-tab']).toBeTruthy();
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when user is logged on bpm and ecm', () => {
|
describe('when user is logged on bpm and ecm', () => {
|
||||||
|
|
||||||
beforeEach(async(() => {
|
let ecmUserInfoSpy;
|
||||||
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
spyOn(stubAuthService, 'isEcmLoggedIn').and.returnValue(true);
|
spyOn(authService, 'isEcmLoggedIn').and.returnValue(true);
|
||||||
spyOn(stubAuthService, 'isBpmLoggedIn').and.returnValue(true);
|
spyOn(authService, 'isBpmLoggedIn').and.returnValue(true);
|
||||||
spyOn(stubAuthService, 'isLoggedIn').and.returnValue(true);
|
spyOn(authService, 'isLoggedIn').and.returnValue(true);
|
||||||
spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/images/ecmImg.gif');
|
spyOn(contentService, 'getContentUrl').and.returnValue('src/assets/images/ecmImg.gif');
|
||||||
jasmine.Ajax.install();
|
|
||||||
|
|
||||||
fixture.detectChanges();
|
ecmUserInfoSpy = spyOn(ecmUserService, 'getCurrentUserInfo').and.returnValue(Observable.of(fakeEcmUser));
|
||||||
|
spyOn(bpmUserService, 'getCurrentUserInfo').and.returnValue(Observable.of(fakeBpmUser));
|
||||||
jasmine.Ajax.requests.first().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'application/json',
|
|
||||||
responseText: JSON.stringify({ entry: fakeEcmUser })
|
|
||||||
});
|
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'json',
|
|
||||||
responseText: fakeBpmUser
|
|
||||||
});
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
beforeEach(() => {
|
it('should get the bpm user informations from the service', async(() => {
|
||||||
fixture.detectChanges();
|
openUserInfo();
|
||||||
|
|
||||||
let imageButton: HTMLButtonElement = <HTMLButtonElement> element.querySelector('#logged-user-img');
|
|
||||||
imageButton.click();
|
|
||||||
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
jasmine.Ajax.uninstall();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should get the bpm user informations from the service', () => {
|
|
||||||
let bpmTab = fixture.debugElement.queryAll(By.css('#tab-group-env .mat-tab-labels .mat-tab-label'))[1];
|
let bpmTab = fixture.debugElement.queryAll(By.css('#tab-group-env .mat-tab-labels .mat-tab-label'))[1];
|
||||||
bpmTab.triggerEventHandler('click', null);
|
bpmTab.triggerEventHandler('click', null);
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
let bpmUsername = fixture.debugElement.query(By.css('#bpm-username'));
|
|
||||||
let bpmImage = fixture.debugElement.query(By.css('#bpm-user-detail-image'));
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
|
let bpmUsername = fixture.debugElement.query(By.css('#bpm-username'));
|
||||||
|
let bpmImage = fixture.debugElement.query(By.css('#bpm-user-detail-image'));
|
||||||
expect(element.querySelector('#userinfo_container')).not.toBeNull();
|
expect(element.querySelector('#userinfo_container')).not.toBeNull();
|
||||||
expect(bpmUsername).not.toBeNull();
|
expect(bpmUsername).not.toBeNull();
|
||||||
expect(bpmImage).not.toBeNull();
|
expect(bpmImage).not.toBeNull();
|
||||||
@ -470,12 +416,14 @@ describe('User info component', () => {
|
|||||||
expect(bpmUsername.nativeElement.textContent).toContain('fake-bpm-first-name fake-bpm-last-name');
|
expect(bpmUsername.nativeElement.textContent).toContain('fake-bpm-first-name fake-bpm-last-name');
|
||||||
expect(fixture.debugElement.query(By.css('#bpm-tenant')).nativeElement.textContent).toContain('fake-tenant-name');
|
expect(fixture.debugElement.query(By.css('#bpm-tenant')).nativeElement.textContent).toContain('fake-tenant-name');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should get the ecm user informations from the service', () => {
|
it('should get the ecm user informations from the service', async(() => {
|
||||||
|
openUserInfo();
|
||||||
let ecmUsername = fixture.debugElement.query(By.css('#ecm-username'));
|
let ecmUsername = fixture.debugElement.query(By.css('#ecm-username'));
|
||||||
let ecmImage = fixture.debugElement.query(By.css('#ecm-user-detail-image'));
|
let ecmImage = fixture.debugElement.query(By.css('#ecm-user-detail-image'));
|
||||||
|
|
||||||
|
fixture.detectChanges();
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||||
expect(ecmUsername).not.toBeNull();
|
expect(ecmUsername).not.toBeNull();
|
||||||
@ -484,26 +432,29 @@ describe('User info component', () => {
|
|||||||
expect(fixture.debugElement.query(By.css('#ecm-full-name')).nativeElement.textContent).toContain('fake-ecm-first-name fake-ecm-last-name');
|
expect(fixture.debugElement.query(By.css('#ecm-full-name')).nativeElement.textContent).toContain('fake-ecm-first-name fake-ecm-last-name');
|
||||||
expect(fixture.debugElement.query(By.css('#ecm-job-title')).nativeElement.textContent).toContain('job-ecm-test');
|
expect(fixture.debugElement.query(By.css('#ecm-job-title')).nativeElement.textContent).toContain('job-ecm-test');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should show the ecm image if exists', () => {
|
it('should show the ecm image if exists', async(() => {
|
||||||
|
openUserInfo();
|
||||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||||
expect(element.querySelector('#logged-user-img')).toBeDefined();
|
expect(element.querySelector('#logged-user-img')).toBeDefined();
|
||||||
expect(element.querySelector('#logged-user-img').getAttribute('src')).toEqual('src/assets/images/ecmImg.gif');
|
expect(element.querySelector('#logged-user-img').getAttribute('src')).toEqual('src/assets/images/ecmImg.gif');
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should show the bpm image if ecm does not have it', () => {
|
it('should show the ecm initials if the ecm user has no image', async(() => {
|
||||||
userInfoComp.ecmUserImage = null;
|
ecmUserInfoSpy.and.returnValue(Observable.of(fakeEcmUserNoImage));
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||||
expect(element.querySelector('#logged-user-img')).toBeDefined();
|
expect(element.querySelector('#logged-user-img')).toBeNull();
|
||||||
expect(element.querySelector('#logged-user-img').getAttribute('src')).toContain('rest/admin/profile-picture');
|
expect(element.querySelector('#user-initials-image').textContent).toContain('ff');
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
it('should show the tabs for the env', () => {
|
it('should show the tabs for the env', () => {
|
||||||
|
openUserInfo();
|
||||||
let tabGroup = fixture.debugElement.query(By.css('#tab-group-env'));
|
let tabGroup = fixture.debugElement.query(By.css('#tab-group-env'));
|
||||||
let tabs = fixture.debugElement.queryAll(By.css('#tab-group-env .mat-tab-labels .mat-tab-label'));
|
let tabs = fixture.debugElement.queryAll(By.css('#tab-group-env .mat-tab-labels .mat-tab-label'));
|
||||||
|
|
||||||
@ -513,6 +464,7 @@ describe('User info component', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should not close the menu when a tab is clicked', () => {
|
it('should not close the menu when a tab is clicked', () => {
|
||||||
|
openUserInfo();
|
||||||
let tabGroup = fixture.debugElement.query(By.css('#tab-group-env'));
|
let tabGroup = fixture.debugElement.query(By.css('#tab-group-env'));
|
||||||
let tabs = fixture.debugElement.queryAll(By.css('#tab-group-env .mat-tab-labels .mat-tab-label'));
|
let tabs = fixture.debugElement.queryAll(By.css('#tab-group-env .mat-tab-labels .mat-tab-label'));
|
||||||
|
|
||||||
|
@ -77,8 +77,7 @@ export class UserInfoComponent implements OnInit {
|
|||||||
.subscribe((res) => {
|
.subscribe((res) => {
|
||||||
this.ecmUser = new EcmUserModel(res);
|
this.ecmUser = new EcmUserModel(res);
|
||||||
this.getEcmAvatar();
|
this.getEcmAvatar();
|
||||||
}
|
});
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
this.ecmUser = null;
|
this.ecmUser = null;
|
||||||
this.ecmUserImage = null;
|
this.ecmUserImage = null;
|
||||||
|
@ -65,7 +65,7 @@ export class ImgViewerComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.element = (<HTMLElement> this.el.nativeElement).querySelector('#viewer-image');
|
this.element = <HTMLElement> this.el.nativeElement.querySelector('#viewer-image');
|
||||||
|
|
||||||
if (this.element) {
|
if (this.element) {
|
||||||
this.element.addEventListener('mousedown', this.onMouseDown.bind(this));
|
this.element.addEventListener('mousedown', this.onMouseDown.bind(this));
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -186,106 +186,113 @@ export class ViewerComponent implements OnChanges {
|
|||||||
if (!this.isSourceDefined()) {
|
if (!this.isSourceDefined()) {
|
||||||
throw new Error('A content source attribute value is missing.');
|
throw new Error('A content source attribute value is missing.');
|
||||||
}
|
}
|
||||||
|
if (this.blobFile) {
|
||||||
return new Promise((resolve, reject) => {
|
this.setUpBlobData();
|
||||||
if (this.blobFile) {
|
} else if (this.urlFile) {
|
||||||
this.displayName = this.getDisplayName('Unknown');
|
this.setUpUrlFile();
|
||||||
this.isLoading = true;
|
} else if (this.fileNodeId) {
|
||||||
this.mimeType = this.blobFile.type;
|
this.isLoading = true;
|
||||||
this.viewerType = this.getViewerTypeByMimeType(this.mimeType);
|
this.apiService.getInstance().nodes.getNodeInfo(this.fileNodeId).then(
|
||||||
|
(data: MinimalNodeEntryEntity) => {
|
||||||
this.allowDownload = false;
|
this.setUpNodeFile(data);
|
||||||
// TODO: wrap blob into the data url and allow downloading
|
},
|
||||||
|
(error) => {
|
||||||
this.extensionChange.emit(this.mimeType);
|
|
||||||
this.isLoading = false;
|
|
||||||
this.scrollTop();
|
|
||||||
resolve();
|
|
||||||
} else if (this.urlFile) {
|
|
||||||
this.isLoading = true;
|
|
||||||
let filenameFromUrl = this.getFilenameFromUrl(this.urlFile);
|
|
||||||
this.displayName = this.getDisplayName(filenameFromUrl);
|
|
||||||
this.extension = this.getFileExtension(filenameFromUrl);
|
|
||||||
this.urlFileContent = this.urlFile;
|
|
||||||
|
|
||||||
this.downloadUrl = this.urlFile;
|
|
||||||
this.fileName = this.displayName;
|
|
||||||
|
|
||||||
this.viewerType = this.urlFileViewer || this.getViewerTypeByExtension(this.extension);
|
|
||||||
if (this.viewerType === 'unknown') {
|
|
||||||
this.viewerType = this.getViewerTypeByMimeType(this.mimeType);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.extensionChange.emit(this.extension);
|
|
||||||
this.isLoading = false;
|
|
||||||
this.scrollTop();
|
|
||||||
resolve();
|
|
||||||
} else if (this.fileNodeId) {
|
|
||||||
this.isLoading = true;
|
|
||||||
this.apiService.getInstance().nodes.getNodeInfo(this.fileNodeId).then(
|
|
||||||
(data: MinimalNodeEntryEntity) => {
|
|
||||||
this.mimeType = data.content.mimeType;
|
|
||||||
this.displayName = this.getDisplayName(data.name);
|
|
||||||
this.urlFileContent = this.apiService.getInstance().content.getContentUrl(data.id);
|
|
||||||
this.extension = this.getFileExtension(data.name);
|
|
||||||
|
|
||||||
this.fileName = data.name;
|
|
||||||
this.downloadUrl = this.apiService.getInstance().content.getContentUrl(data.id, true);
|
|
||||||
|
|
||||||
this.viewerType = this.getViewerTypeByExtension(this.extension);
|
|
||||||
if (this.viewerType === 'unknown') {
|
|
||||||
this.viewerType = this.getViewerTypeByMimeType(this.mimeType);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.viewerType === 'unknown') {
|
|
||||||
this.displayNodeRendition(data.id);
|
|
||||||
} else {
|
|
||||||
this.isLoading = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.extensionChange.emit(this.extension);
|
|
||||||
this.sidebarTemplateContext.node = data;
|
|
||||||
this.scrollTop();
|
|
||||||
resolve();
|
|
||||||
},
|
|
||||||
(error) => {
|
|
||||||
this.isLoading = false;
|
|
||||||
reject(error);
|
|
||||||
this.logService.error('This node does not exist');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else if (this.sharedLinkId) {
|
|
||||||
this.isLoading = true;
|
|
||||||
|
|
||||||
this.apiService.sharedLinksApi.getSharedLink(this.sharedLinkId).then(details => {
|
|
||||||
this.mimeType = details.entry.content.mimeType;
|
|
||||||
this.displayName = this.getDisplayName(details.entry.name);
|
|
||||||
this.extension = this.getFileExtension(details.entry.name);
|
|
||||||
this.fileName = details.entry.name;
|
|
||||||
|
|
||||||
this.urlFileContent = this.apiService.contentApi.getSharedLinkContentUrl(this.sharedLinkId, false);
|
|
||||||
this.downloadUrl = this.apiService.contentApi.getSharedLinkContentUrl(this.sharedLinkId, true);
|
|
||||||
|
|
||||||
this.viewerType = this.getViewerTypeByMimeType(this.mimeType);
|
|
||||||
if (this.viewerType === 'unknown') {
|
|
||||||
this.viewerType = this.getViewerTypeByExtension(this.extension);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.viewerType === 'unknown') {
|
|
||||||
this.displaySharedLinkRendition(this.sharedLinkId);
|
|
||||||
} else {
|
|
||||||
this.isLoading = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.extensionChange.emit(this.extension);
|
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
resolve();
|
this.logService.error('This node does not exist');
|
||||||
});
|
}
|
||||||
}
|
);
|
||||||
});
|
} else if (this.sharedLinkId) {
|
||||||
|
this.isLoading = true;
|
||||||
|
|
||||||
|
this.apiService.sharedLinksApi.getSharedLink(this.sharedLinkId).then(details => {
|
||||||
|
this.setUpSharedLinkFile(details);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private setUpBlobData() {
|
||||||
|
this.displayName = this.getDisplayName('Unknown');
|
||||||
|
this.isLoading = true;
|
||||||
|
this.mimeType = this.blobFile.type;
|
||||||
|
this.viewerType = this.getViewerTypeByMimeType(this.mimeType);
|
||||||
|
|
||||||
|
this.allowDownload = false;
|
||||||
|
// TODO: wrap blob into the data url and allow downloading
|
||||||
|
|
||||||
|
this.extensionChange.emit(this.mimeType);
|
||||||
|
this.isLoading = false;
|
||||||
|
this.scrollTop();
|
||||||
|
}
|
||||||
|
|
||||||
|
private setUpUrlFile() {
|
||||||
|
this.isLoading = true;
|
||||||
|
let filenameFromUrl = this.getFilenameFromUrl(this.urlFile);
|
||||||
|
this.displayName = this.getDisplayName(filenameFromUrl);
|
||||||
|
this.extension = this.getFileExtension(filenameFromUrl);
|
||||||
|
this.urlFileContent = this.urlFile;
|
||||||
|
|
||||||
|
this.downloadUrl = this.urlFile;
|
||||||
|
this.fileName = this.displayName;
|
||||||
|
|
||||||
|
this.viewerType = this.urlFileViewer || this.getViewerTypeByExtension(this.extension);
|
||||||
|
if (this.viewerType === 'unknown') {
|
||||||
|
this.viewerType = this.getViewerTypeByMimeType(this.mimeType);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.extensionChange.emit(this.extension);
|
||||||
|
this.isLoading = false;
|
||||||
|
this.scrollTop();
|
||||||
|
}
|
||||||
|
|
||||||
|
private setUpNodeFile(data: MinimalNodeEntryEntity) {
|
||||||
|
this.mimeType = data.content.mimeType;
|
||||||
|
this.displayName = this.getDisplayName(data.name);
|
||||||
|
this.urlFileContent = this.apiService.getInstance().content.getContentUrl(data.id);
|
||||||
|
this.extension = this.getFileExtension(data.name);
|
||||||
|
|
||||||
|
this.fileName = data.name;
|
||||||
|
this.downloadUrl = this.apiService.getInstance().content.getContentUrl(data.id, true);
|
||||||
|
|
||||||
|
this.viewerType = this.getViewerTypeByExtension(this.extension);
|
||||||
|
if (this.viewerType === 'unknown') {
|
||||||
|
this.viewerType = this.getViewerTypeByMimeType(this.mimeType);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.viewerType === 'unknown') {
|
||||||
|
this.displayNodeRendition(data.id);
|
||||||
|
} else {
|
||||||
|
this.isLoading = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.extensionChange.emit(this.extension);
|
||||||
|
this.sidebarTemplateContext.node = data;
|
||||||
|
this.scrollTop();
|
||||||
|
}
|
||||||
|
|
||||||
|
private setUpSharedLinkFile(details: any) {
|
||||||
|
this.mimeType = details.entry.content.mimeType;
|
||||||
|
this.displayName = this.getDisplayName(details.entry.name);
|
||||||
|
this.extension = this.getFileExtension(details.entry.name);
|
||||||
|
this.fileName = details.entry.name;
|
||||||
|
|
||||||
|
this.urlFileContent = this.apiService.contentApi.getSharedLinkContentUrl(this.sharedLinkId, false);
|
||||||
|
this.downloadUrl = this.apiService.contentApi.getSharedLinkContentUrl(this.sharedLinkId, true);
|
||||||
|
|
||||||
|
this.viewerType = this.getViewerTypeByMimeType(this.mimeType);
|
||||||
|
if (this.viewerType === 'unknown') {
|
||||||
|
this.viewerType = this.getViewerTypeByExtension(this.extension);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.viewerType === 'unknown') {
|
||||||
|
this.displaySharedLinkRendition(this.sharedLinkId);
|
||||||
|
} else {
|
||||||
|
this.isLoading = false;
|
||||||
|
}
|
||||||
|
this.extensionChange.emit(this.extension);
|
||||||
|
this.isLoading = false;
|
||||||
|
}
|
||||||
|
|
||||||
toggleSidebar() {
|
toggleSidebar() {
|
||||||
this.showSidebar = !this.showSidebar;
|
this.showSidebar = !this.showSidebar;
|
||||||
if (this.showSidebar && this.fileNodeId) {
|
if (this.showSidebar && this.fileNodeId) {
|
||||||
|
@ -103,7 +103,7 @@ export class DiagramTooltipComponent implements AfterViewInit, OnDestroy {
|
|||||||
|
|
||||||
if (this.strategy === STRATEGY.ELEMENT ) {
|
if (this.strategy === STRATEGY.ELEMENT ) {
|
||||||
props = event.target.getBoundingClientRect();
|
props = event.target.getBoundingClientRect();
|
||||||
}else {
|
} else {
|
||||||
props = {top: (event.pageY - 150), left: event.pageX , width: event.layerX, height: 50};
|
props = {top: (event.pageY - 150), left: event.pageX , width: event.layerX, height: 50};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@
|
|||||||
"moment-es6": "^1.0.0",
|
"moment-es6": "^1.0.0",
|
||||||
"ng-packagr": "2.0.0-rc.4",
|
"ng-packagr": "2.0.0-rc.4",
|
||||||
"ng2-charts": "1.6.0",
|
"ng2-charts": "1.6.0",
|
||||||
"pdfjs-dist": "1.5.404",
|
"pdfjs-dist": "2.0.265",
|
||||||
"raphael": "2.2.7",
|
"raphael": "2.2.7",
|
||||||
"reflect-metadata": "0.1.10",
|
"reflect-metadata": "0.1.10",
|
||||||
"rxjs": "5.5.2",
|
"rxjs": "5.5.2",
|
||||||
@ -85,7 +85,7 @@
|
|||||||
"zone.js": "0.8.14"
|
"zone.js": "0.8.14"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular/compiler-cli": "5.1.1",
|
"@angular/compiler-cli": "^5.2.0",
|
||||||
"@types/hammerjs": "2.0.35",
|
"@types/hammerjs": "2.0.35",
|
||||||
"@types/jasmine": "^2.5.35",
|
"@types/jasmine": "^2.5.35",
|
||||||
"@types/node": "6.0.90",
|
"@types/node": "6.0.90",
|
||||||
@ -139,7 +139,7 @@
|
|||||||
"traceur": "0.0.91",
|
"traceur": "0.0.91",
|
||||||
"ts-loader": "3.3.0",
|
"ts-loader": "3.3.0",
|
||||||
"ts-node": "2.0.0",
|
"ts-node": "2.0.0",
|
||||||
"tslint": "5.7.0",
|
"tslint": "5.9.1",
|
||||||
"tslint-loader": "3.5.3",
|
"tslint-loader": "3.5.3",
|
||||||
"typescript": "2.6.1",
|
"typescript": "2.6.1",
|
||||||
"uglifyjs-webpack-plugin": "1.1.6",
|
"uglifyjs-webpack-plugin": "1.1.6",
|
||||||
|
@ -21,6 +21,12 @@
|
|||||||
"curly": true,
|
"curly": true,
|
||||||
"eofline": true,
|
"eofline": true,
|
||||||
"forin": true,
|
"forin": true,
|
||||||
|
"import-blacklist": [
|
||||||
|
true,
|
||||||
|
"rxjs",
|
||||||
|
"rxjs/Rx"
|
||||||
|
],
|
||||||
|
"import-spacing": true,
|
||||||
"indent": [
|
"indent": [
|
||||||
true,
|
true,
|
||||||
"spaces"
|
"spaces"
|
||||||
@ -32,10 +38,17 @@
|
|||||||
true,
|
true,
|
||||||
180
|
180
|
||||||
],
|
],
|
||||||
|
"member-access": false,
|
||||||
"member-ordering": [
|
"member-ordering": [
|
||||||
true,
|
true,
|
||||||
"static-before-instance",
|
{
|
||||||
"variables-before-functions"
|
"order": [
|
||||||
|
"static-field",
|
||||||
|
"instance-field",
|
||||||
|
"static-method",
|
||||||
|
"instance-method"
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"no-any": false,
|
"no-any": false,
|
||||||
"no-arg": true,
|
"no-arg": true,
|
||||||
@ -54,6 +67,7 @@
|
|||||||
"no-construct": true,
|
"no-construct": true,
|
||||||
"no-constructor-vars": false,
|
"no-constructor-vars": false,
|
||||||
"no-debugger": true,
|
"no-debugger": true,
|
||||||
|
"no-duplicate-super": true,
|
||||||
"no-duplicate-variable": true,
|
"no-duplicate-variable": true,
|
||||||
"no-empty": false,
|
"no-empty": false,
|
||||||
"no-eval": true,
|
"no-eval": true,
|
||||||
@ -82,7 +96,10 @@
|
|||||||
"avoid-escape"
|
"avoid-escape"
|
||||||
],
|
],
|
||||||
"radix": true,
|
"radix": true,
|
||||||
"semicolon": true,
|
"semicolon": [
|
||||||
|
true,
|
||||||
|
"always"
|
||||||
|
],
|
||||||
"switch-default": true,
|
"switch-default": true,
|
||||||
"trailing-comma": [
|
"trailing-comma": [
|
||||||
true,
|
true,
|
||||||
@ -152,7 +169,6 @@
|
|||||||
"use-pipe-transform-interface": true,
|
"use-pipe-transform-interface": true,
|
||||||
"component-class-suffix": true,
|
"component-class-suffix": true,
|
||||||
"directive-class-suffix": true,
|
"directive-class-suffix": true,
|
||||||
"no-access-missing-member": false,
|
|
||||||
"adf-file-name": true,
|
"adf-file-name": true,
|
||||||
"adf-class-name": true,
|
"adf-class-name": true,
|
||||||
"adf-prefix-name": true,
|
"adf-prefix-name": true,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user