[ACA-3830] Fix favorites navigation (#1599)

* fix favorites navigation

* improve report and unit test

* fix ACA test
mock version directive

* lint fix

* try different startegy

* remove first split

* fix root case
This commit is contained in:
Eugenio Romano 2020-08-14 09:13:23 +01:00 committed by GitHub
parent 3edf48f050
commit b0b22170c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 131 additions and 33 deletions

View File

@ -11,6 +11,7 @@ module.exports = function(config) {
require('karma-chrome-launcher'), require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'), require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'), require('karma-coverage-istanbul-reporter'),
require('karma-mocha-reporter'),
require('@angular-devkit/build-angular/plugins/karma') require('@angular-devkit/build-angular/plugins/karma')
], ],
files: [ files: [
@ -53,7 +54,7 @@ module.exports = function(config) {
fixWebpackSourcePaths: true fixWebpackSourcePaths: true
}, },
reporters: ['progress', 'kjhtml'], reporters: ['mocha', 'kjhtml'],
port: 9876, port: 9876,
colors: true, colors: true,
logLevel: config.LOG_INFO, logLevel: config.LOG_INFO,

96
package-lock.json generated
View File

@ -5,9 +5,9 @@
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"@alfresco/adf-cli": { "@alfresco/adf-cli": {
"version": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "version": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db.tgz", "resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1.tgz",
"integrity": "sha512-lMfNp6LgFx1hTEubpWXemeZ4e6OOXuJjckzBQ6oebVaIBLjfg61wTurFCr3RxOzjkxHf9CZAZJmmjSHGVOKfJQ==", "integrity": "sha512-LeUEYSjNuypZjPWl0TKblpVQwEO8fJlZlc/OFrH/uSRq6URN+BAa6lng/C2LbSTns6kyQ6DZ8twrGdE6ZZDEdA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@alfresco/js-api": "3.10.0-52aeb4052b028b0ad95a388fa8c30e5394f20df0", "@alfresco/js-api": "3.10.0-52aeb4052b028b0ad95a388fa8c30e5394f20df0",
@ -29,33 +29,33 @@
} }
}, },
"@alfresco/adf-content-services": { "@alfresco/adf-content-services": {
"version": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "version": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db.tgz", "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1.tgz",
"integrity": "sha512-CVPusW3o9nN7fxsokHGHbRJgGAHanhvGCXQ906lDFFGK4aSKGTG7MS2x6MsjBpUa0i5zqZ9lG8Lv2T63amrvmA==", "integrity": "sha512-4fOWBlmxQSF5VAWzzh+8/AIkmm+T0qqMFl0+xsiWi2QiuTAqUq+McF4Se5Acedk9hMiVzYOxQVz36CmAAZORAw==",
"requires": { "requires": {
"tslib": "^2.0.0" "tslib": "^2.0.0"
} }
}, },
"@alfresco/adf-core": { "@alfresco/adf-core": {
"version": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "version": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db.tgz", "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1.tgz",
"integrity": "sha512-wIBqI38v8y3hCGej0Cud/NivJfbmDuowsbAoftPPMjJ9YFGZAEdIeC2bLkrR6V97IOyhbASLnfPsrJcV66pmbQ==", "integrity": "sha512-xFX4Rzw8+SoKDeagKHrzqvZxc3tOUpppLsbzLaQbR7vORiF5A+hWZNqveapNlLAYMhG7MOBtoXkIRVoSaXfZhQ==",
"requires": { "requires": {
"tslib": "^2.0.0" "tslib": "^2.0.0"
} }
}, },
"@alfresco/adf-extensions": { "@alfresco/adf-extensions": {
"version": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "version": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db.tgz", "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1.tgz",
"integrity": "sha512-mVKD0Z1OpAWZYNMEdUBz25NEqZiMprGC3HlYu2uQh6PfPoRCBupQx5HfE/e0Y6Ff83J35FhmuYCiiNOHyv/QyQ==", "integrity": "sha512-FDGmfPGb7WwaZLnf+GzzZbeVKJPe75iXb402ivo2yCppzWSUBXrHsizNecKcOgzLdiJKMEvscB6UQgfWqSF2mw==",
"requires": { "requires": {
"tslib": "^2.0.0" "tslib": "^2.0.0"
} }
}, },
"@alfresco/adf-testing": { "@alfresco/adf-testing": {
"version": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "version": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db.tgz", "resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1.tgz",
"integrity": "sha512-ORz9XUaKXmaaSz0Vu/iLibqMpDzeGnxOuVKdoWIvrZzwYKwVLEikBNI37U9BcPzj5ll/A0JeI8rbEyIYe03t/Q==", "integrity": "sha512-KHv345SkGe4ES+gVnI2jOTqifDvtIiB8sk/UbjDgrp4HGJqsgiTefqgBFjlL44Y1xDw3VRD8uia8POvmB3Pfmw==",
"dev": true, "dev": true,
"requires": { "requires": {
"tslib": "^2.0.0" "tslib": "^2.0.0"
@ -10082,6 +10082,72 @@
"integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==",
"dev": true "dev": true
}, },
"karma-mocha-reporter": {
"version": "2.2.5",
"resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz",
"integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=",
"dev": true,
"requires": {
"chalk": "^2.1.0",
"log-symbols": "^2.1.0",
"strip-ansi": "^4.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
}
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"log-symbols": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
"integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
"dev": true,
"requires": {
"chalk": "^2.0.1"
}
},
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
"ansi-regex": "^3.0.0"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
}
}
},
"karma-source-map-support": { "karma-source-map-support": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz",

View File

@ -34,9 +34,9 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@alfresco/adf-content-services": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "@alfresco/adf-content-services": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"@alfresco/adf-core": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "@alfresco/adf-core": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"@alfresco/adf-extensions": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "@alfresco/adf-extensions": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"@alfresco/js-api": "3.10.0-52aeb4052b028b0ad95a388fa8c30e5394f20df0", "@alfresco/js-api": "3.10.0-52aeb4052b028b0ad95a388fa8c30e5394f20df0",
"@angular-custom-builders/lite-serve": "^0.2.2", "@angular-custom-builders/lite-serve": "^0.2.2",
"@angular/animations": "10.0.4", "@angular/animations": "10.0.4",
@ -72,8 +72,8 @@
"zone.js": "~0.10.2" "zone.js": "~0.10.2"
}, },
"devDependencies": { "devDependencies": {
"@alfresco/adf-cli": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "@alfresco/adf-cli": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"@alfresco/adf-testing": "3.10.0-a0aaf0ea5844d89ba9038039e9bd9d3c919272db", "@alfresco/adf-testing": "3.10.0-5f5867370c6d2ffea74d00323504e004f076dff1",
"@angular-devkit/build-angular": "~0.1000.4", "@angular-devkit/build-angular": "~0.1000.4",
"@angular-devkit/build-ng-packagr": "~0.1000.5", "@angular-devkit/build-ng-packagr": "~0.1000.5",
"@angular/cli": "^10.0.5", "@angular/cli": "^10.0.5",
@ -101,6 +101,7 @@
"karma-coverage-istanbul-reporter": "^3.0.3", "karma-coverage-istanbul-reporter": "^3.0.3",
"karma-jasmine": "^3.3.1", "karma-jasmine": "^3.3.1",
"karma-jasmine-html-reporter": "^1.5.4", "karma-jasmine-html-reporter": "^1.5.4",
"karma-mocha-reporter": "^2.2.5",
"lint-staged": "^10.2.11", "lint-staged": "^10.2.11",
"ng-packagr": "^10.0.3", "ng-packagr": "^10.0.3",
"node-stream-zip": "^1.9.1", "node-stream-zip": "^1.9.1",

View File

@ -10,6 +10,7 @@ module.exports = function(config) {
require('karma-chrome-launcher'), require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'), require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'), require('karma-coverage-istanbul-reporter'),
require('karma-mocha-reporter'),
require('@angular-devkit/build-angular/plugins/karma') require('@angular-devkit/build-angular/plugins/karma')
], ],
client: { client: {
@ -20,7 +21,7 @@ module.exports = function(config) {
reports: ['html', 'lcovonly'], reports: ['html', 'lcovonly'],
fixWebpackSourcePaths: true fixWebpackSourcePaths: true
}, },
reporters: ['progress', 'kjhtml'], reporters: ['mocha', 'kjhtml'],
port: 9876, port: 9876,
colors: true, colors: true,
logLevel: config.LOG_INFO, logLevel: config.LOG_INFO,

View File

@ -10,6 +10,7 @@ module.exports = function(config) {
require('karma-chrome-launcher'), require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'), require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'), require('karma-coverage-istanbul-reporter'),
require('karma-mocha-reporter'),
require('@angular-devkit/build-angular/plugins/karma') require('@angular-devkit/build-angular/plugins/karma')
], ],
client: { client: {
@ -23,7 +24,7 @@ module.exports = function(config) {
reports: ['html', 'lcovonly'], reports: ['html', 'lcovonly'],
fixWebpackSourcePaths: true fixWebpackSourcePaths: true
}, },
reporters: ['progress', 'kjhtml'], reporters: ['mocha', 'kjhtml'],
port: 9876, port: 9876,
colors: true, colors: true,
logLevel: config.LOG_INFO, logLevel: config.LOG_INFO,

View File

@ -231,18 +231,25 @@ describe('FilesComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
}); });
it('should navigates to node when is more that one sub node', () => {
router.url = '/personal-files/favourites';
component.navigate(node.id);
expect(router.navigate).toHaveBeenCalledWith(['personal-files', 'favourites', node.id]);
});
it('should navigates to node when id provided', () => { it('should navigates to node when id provided', () => {
router.url = '/personal-files'; router.url = '/personal-files';
component.navigate(node.id); component.navigate(node.id);
expect(router.navigate).toHaveBeenCalledWith(['/personal-files', node.id]); expect(router.navigate).toHaveBeenCalledWith(['personal-files', node.id]);
}); });
it('should navigates to home when id not provided', () => { it('should navigates to home when id not provided', () => {
router.url = '/personal-files'; router.url = '/personal-files';
component.navigate(); component.navigate();
expect(router.navigate).toHaveBeenCalledWith(['/personal-files']); expect(router.navigate).toHaveBeenCalledWith(['personal-files']);
}); });
it('should navigate home if node is root', () => { it('should navigate home if node is root', () => {
@ -255,7 +262,7 @@ describe('FilesComponent', () => {
router.url = '/personal-files'; router.url = '/personal-files';
component.navigate(node.id); component.navigate(node.id);
expect(router.navigate).toHaveBeenCalledWith(['/personal-files']); expect(router.navigate).toHaveBeenCalledWith(['personal-files']);
}); });
}); });

View File

@ -123,15 +123,21 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
} }
navigate(nodeId: string = null) { navigate(nodeId: string = null) {
const location = this.router.url.match(/.*?(?=\/|$)/g)[1]; const uuidRegEx = /[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-4[0-9A-Za-z]{3}-[89ABab][0-9A-Za-z]{3}-[0-9A-Za-z]{12}/gi;
let urlToNavigate;
const commands = [`/${location}`]; if (this.router.url.match(uuidRegEx)) {
urlToNavigate = this.router.url.replace(uuidRegEx, nodeId).split('/');
if (nodeId && !this.isRootNode(nodeId)) { urlToNavigate.shift();
commands.push(nodeId); } else {
urlToNavigate = this.router.url.split('/');
if (nodeId && !this.isRootNode(nodeId)) {
urlToNavigate.push(nodeId);
}
urlToNavigate.shift();
} }
this.router.navigate(commands); this.router.navigate(urlToNavigate);
} }
onUploadNewVersion(ev: CustomEvent) { onUploadNewVersion(ev: CustomEvent) {

View File

@ -33,11 +33,12 @@ import {
AppConfigPipe, AppConfigPipe,
UploadService UploadService
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { DocumentListComponent } from '@alfresco/adf-content-services'; import { CustomResourcesService, DocumentListComponent } from '@alfresco/adf-content-services';
import { SharedFilesComponent } from './shared-files.component'; import { SharedFilesComponent } from './shared-files.component';
import { AppTestingModule } from '../../testing/app-testing.module'; import { AppTestingModule } from '../../testing/app-testing.module';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { ContentManagementService } from '../../services/content-management.service'; import { ContentManagementService } from '../../services/content-management.service';
import { of } from 'rxjs';
describe('SharedFilesComponent', () => { describe('SharedFilesComponent', () => {
let fixture: ComponentFixture<SharedFilesComponent>; let fixture: ComponentFixture<SharedFilesComponent>;
@ -45,6 +46,7 @@ describe('SharedFilesComponent', () => {
let alfrescoApi: AlfrescoApiService; let alfrescoApi: AlfrescoApiService;
let page; let page;
let uploadService: UploadService; let uploadService: UploadService;
let customResourcesService: CustomResourcesService;
let contentManagementService: ContentManagementService; let contentManagementService: ContentManagementService;
const mockRouter = { const mockRouter = {
url: 'shared-files' url: 'shared-files'
@ -76,12 +78,14 @@ describe('SharedFilesComponent', () => {
fixture = TestBed.createComponent(SharedFilesComponent); fixture = TestBed.createComponent(SharedFilesComponent);
uploadService = TestBed.inject(UploadService); uploadService = TestBed.inject(UploadService);
contentManagementService = TestBed.inject(ContentManagementService); contentManagementService = TestBed.inject(ContentManagementService);
customResourcesService = TestBed.inject(CustomResourcesService);
component = fixture.componentInstance; component = fixture.componentInstance;
alfrescoApi = TestBed.inject(AlfrescoApiService); alfrescoApi = TestBed.inject(AlfrescoApiService);
alfrescoApi.reset(); alfrescoApi.reset();
spyOn(alfrescoApi.sharedLinksApi, 'findSharedLinks').and.returnValue(Promise.resolve(page)); spyOn(alfrescoApi.sharedLinksApi, 'findSharedLinks').and.returnValue(Promise.resolve(page));
spyOn(customResourcesService, 'loadSharedLinks').and.returnValue(of(page));
}); });
it('should call document list reload on linksUnshared event', fakeAsync(() => { it('should call document list reload on linksUnshared event', fakeAsync(() => {

View File

@ -31,6 +31,8 @@ import {
TranslationMock, TranslationMock,
AuthenticationService, AuthenticationService,
UserPreferencesService, UserPreferencesService,
DiscoveryApiService,
EcmProductVersionModel,
AppConfigService, AppConfigService,
StorageService, StorageService,
AlfrescoApiService, AlfrescoApiService,
@ -53,6 +55,7 @@ import { MaterialModule } from '../material.module';
import { INITIAL_STATE } from '../store/initial-state'; import { INITIAL_STATE } from '../store/initial-state';
import { TranslatePipeMock } from './translate-pipe.directive'; import { TranslatePipeMock } from './translate-pipe.directive';
import { TranslateServiceMock } from './translation.service'; import { TranslateServiceMock } from './translation.service';
import { Observable, of } from 'rxjs';
@NgModule({ @NgModule({
imports: [ imports: [
@ -80,6 +83,14 @@ import { TranslateServiceMock } from './translation.service';
{ provide: TranslationService, useClass: TranslationMock }, { provide: TranslationService, useClass: TranslationMock },
{ provide: TranslateService, useClass: TranslateServiceMock }, { provide: TranslateService, useClass: TranslateServiceMock },
{ provide: TranslatePipe, useClass: TranslatePipeMock }, { provide: TranslatePipe, useClass: TranslatePipeMock },
{
provide: DiscoveryApiService,
useValue: {
getEcmProductInfo(): Observable<EcmProductVersionModel> {
return of(new EcmProductVersionModel({ version: '10.0.0' }));
}
}
},
{ {
provide: AuthenticationService, provide: AuthenticationService,
useValue: { useValue: {