mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
[ADF-3723] Tree view component (#3939)
* [ADF-3723] added first step to adf tree view component * [ADF-3723] start adding tests for the new component * [ADF-3723] fixed style and start adding tests * [ADF-3723] working on unit test * [ADF-3723] added test for the new tree view component * [ADF-3723] added event when clicked on a tree node * [ADF-3723] refactored code * [ADF-3723 added peer review changes * [ADF-3723] fixed extra space * [ADF-3723] fixed unit test * [ADF-3723] fixed failing unit test
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { setupTestBed, NodesApiService } from '@alfresco/adf-core';
|
||||
import { TreeViewService } from './tree-view.service';
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
import { ContentTestingModule } from '../../testing/content.testing.module';
|
||||
import { of } from 'rxjs';
|
||||
import { TreeBaseNode } from 'tree-view/models/tree-view.model';
|
||||
|
||||
describe('TreeViewService', () => {
|
||||
|
||||
let service: TreeViewService;
|
||||
let nodeService: NodesApiService;
|
||||
|
||||
let fakeNodeList = { list: { entries: [
|
||||
{ entry: { id: 'fake-node-id', name: 'fake-node-name', isFolder: true } }
|
||||
] } };
|
||||
|
||||
let fakeMixedNodeList = { list: { entries: [
|
||||
{ entry: { id: 'fake-node-id', name: 'fake-node-name', isFolder: true } },
|
||||
{ entry: { id: 'fake-file-id', name: 'fake-file-name', isFolder: false } }
|
||||
] } };
|
||||
|
||||
setupTestBed({
|
||||
imports: [ContentTestingModule]
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
service = TestBed.get(TreeViewService);
|
||||
nodeService = TestBed.get(NodesApiService);
|
||||
});
|
||||
|
||||
it('should returns TreeBaseNode elements', (done) => {
|
||||
spyOn(nodeService, 'getNodeChildren').and.returnValue(of(fakeNodeList));
|
||||
service.getTreeNodes('fake-node-id').subscribe((nodes: TreeBaseNode[]) => {
|
||||
expect(nodes.length).toBe(1);
|
||||
expect(nodes[0].nodeId).toBe('fake-node-id');
|
||||
expect(nodes[0].name).toBe('fake-node-name');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should returns only folders elements', (done) => {
|
||||
spyOn(nodeService, 'getNodeChildren').and.returnValue(of(fakeMixedNodeList));
|
||||
service.getTreeNodes('fake-node-id').subscribe((nodes: TreeBaseNode[]) => {
|
||||
expect(nodes.length).toBe(1);
|
||||
expect(nodes[0].nodeId).toBe('fake-node-id');
|
||||
expect(nodes[0].name).toBe('fake-node-name');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
43
lib/content-services/tree-view/services/tree-view.service.ts
Normal file
43
lib/content-services/tree-view/services/tree-view.service.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { NodesApiService } from '@alfresco/adf-core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Observable } from 'rxjs';
|
||||
import { TreeBaseNode } from '../models/tree-view.model';
|
||||
import { NodePaging, NodeEntry } from 'alfresco-js-api';
|
||||
import { map } from 'rxjs/operators';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class TreeViewService {
|
||||
|
||||
constructor(private nodeApi: NodesApiService) {
|
||||
}
|
||||
|
||||
getTreeNodes(nodeId): Observable<TreeBaseNode[]> {
|
||||
return this.nodeApi.getNodeChildren(nodeId)
|
||||
.pipe(
|
||||
map((nodePage: NodePaging) => {
|
||||
return nodePage.list.entries.filter((node) => node.entry.isFolder ? node : null);
|
||||
}),
|
||||
map((nodes: NodeEntry[]) => nodes.map(node => new TreeBaseNode(node)))
|
||||
);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user