mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-19 17:14:57 +00:00
Unit tests
This commit is contained in:
parent
32c00b7e99
commit
c637d1d053
@ -33,7 +33,7 @@ export class PageNode extends NodePaging {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class FileNode extends MinimalNodeEntity {
|
export class FileNode extends MinimalNodeEntity {
|
||||||
constructor(name?: string) {
|
constructor(name?: string, mimeType?: string) {
|
||||||
super();
|
super();
|
||||||
this.entry = new MinimalNodeEntryEntity();
|
this.entry = new MinimalNodeEntryEntity();
|
||||||
this.entry.id = 'file-id';
|
this.entry.id = 'file-id';
|
||||||
@ -42,6 +42,7 @@ export class FileNode extends MinimalNodeEntity {
|
|||||||
this.entry.name = name;
|
this.entry.name = name;
|
||||||
this.entry.path = new PathInfoEntity();
|
this.entry.path = new PathInfoEntity();
|
||||||
this.entry.content = new ContentInfo();
|
this.entry.content = new ContentInfo();
|
||||||
|
this.entry.content.mimeType = mimeType || 'text/plain';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,87 +416,6 @@ describe('DocumentList', () => {
|
|||||||
expect(documentList.displayFolderContent).toHaveBeenCalled();
|
expect(documentList.displayFolderContent).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: move to data adapter
|
|
||||||
/*
|
|
||||||
it('should generate file icon path based on mime type', () => {
|
|
||||||
let fileName = 'custom-icon.svg';
|
|
||||||
spyOn(alfrescoServiceMock, 'getMimeTypeIcon').and.returnValue(fileName);
|
|
||||||
documentList.baseComponentPath = '/root';
|
|
||||||
|
|
||||||
let file = new FileNode();
|
|
||||||
file.entry.content.mimeType = 'text/plain';
|
|
||||||
|
|
||||||
expect(documentList.getThumbnailUrl(file)).toBe(`/root/img/${fileName}`);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO: move to data adapter
|
|
||||||
/*
|
|
||||||
it('should fallback to default icon for missing mime type', () => {
|
|
||||||
spyOn(documentListService, 'getMimeTypeIcon').and.returnValue(null);
|
|
||||||
documentList.baseComponentPath = '/root';
|
|
||||||
|
|
||||||
let file = new FileNode();
|
|
||||||
file.entry.content.mimeType = null;
|
|
||||||
|
|
||||||
expect(documentList.getThumbnailUrl(file)).toBe('/root/img/ft_ic_miscellaneous.svg');
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO: move to data adapter
|
|
||||||
/*
|
|
||||||
it('should fallback to default icon for unknown mime type', () => {
|
|
||||||
spyOn(documentListService, 'getMimeTypeIcon').and.returnValue(null);
|
|
||||||
documentList.baseComponentPath = '/root';
|
|
||||||
|
|
||||||
let file = new FileNode();
|
|
||||||
file.entry.content.mimeType = 'text/plain';
|
|
||||||
|
|
||||||
expect(documentList.getThumbnailUrl(file)).toBe('/root/img/ft_ic_miscellaneous.svg');
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO: move to data adapter
|
|
||||||
/*
|
|
||||||
it('should resolve thumbnail url for a file', () => {
|
|
||||||
let url = 'http://<some url>';
|
|
||||||
spyOn(documentListService, 'getDocumentThumbnailUrl').and.returnValue(url);
|
|
||||||
|
|
||||||
documentList.thumbnails = true;
|
|
||||||
|
|
||||||
let file = new FileNode();
|
|
||||||
expect(documentList.getThumbnailUrl(file)).toBe(url);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO: move to data adapter
|
|
||||||
/*
|
|
||||||
it('should return no thumbnail url with missing service', () => {
|
|
||||||
let list = new DocumentList(null, null);
|
|
||||||
list.thumbnails = true;
|
|
||||||
|
|
||||||
let file = new FileNode();
|
|
||||||
expect(list.getThumbnailUrl(file)).toBeNull();
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO: move to data adapter
|
|
||||||
/*
|
|
||||||
it('should convert cell value to thumbnail', () => {
|
|
||||||
let url = 'http://<address>';
|
|
||||||
spyOn(documentList, 'getThumbnailUrl').and.returnValue(url);
|
|
||||||
|
|
||||||
let file = new FileNode();
|
|
||||||
|
|
||||||
let col = new ContentColumnModel();
|
|
||||||
col.source = '$thumbnail';
|
|
||||||
col.type = 'image';
|
|
||||||
|
|
||||||
let value = documentList.getCellValue(file, col);
|
|
||||||
expect(value).toBe(url);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
it('should require path to display folder content', () => {
|
it('should require path to display folder content', () => {
|
||||||
spyOn(documentListService, 'getFolder').and.callThrough();
|
spyOn(documentListService, 'getFolder').and.callThrough();
|
||||||
|
|
||||||
@ -579,47 +498,6 @@ describe('DocumentList', () => {
|
|||||||
expect(documentList.displayFolderContent).not.toHaveBeenCalled();
|
expect(documentList.displayFolderContent).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: move to data adapter
|
|
||||||
/*
|
|
||||||
it('should not sort empty page', () => {
|
|
||||||
let page = new PageNode();
|
|
||||||
spyOn(page.list.entries, 'sort').and.stub();
|
|
||||||
|
|
||||||
documentList.sort(page, null);
|
|
||||||
expect(page.list.entries.sort).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO: move to data adapter
|
|
||||||
/*
|
|
||||||
it('should put folders to top on sort', () => {
|
|
||||||
let folder = new FolderNode();
|
|
||||||
let file1 = new FileNode('file1');
|
|
||||||
let file2 = new FileNode('file2');
|
|
||||||
let page = new PageNode([file1, file2, folder]);
|
|
||||||
|
|
||||||
// asc
|
|
||||||
documentList.sort(page, new ColumnSortingModel({
|
|
||||||
key: 'name',
|
|
||||||
direction: 'asc'
|
|
||||||
}));
|
|
||||||
|
|
||||||
expect(page.list.entries[0]).toBe(folder);
|
|
||||||
expect(page.list.entries[1]).toBe(file1);
|
|
||||||
expect(page.list.entries[2]).toBe(file2);
|
|
||||||
|
|
||||||
// desc
|
|
||||||
documentList.sort(page, new ColumnSortingModel({
|
|
||||||
key: 'name',
|
|
||||||
direction: 'desc'
|
|
||||||
}));
|
|
||||||
|
|
||||||
expect(page.list.entries[0]).toBe(folder);
|
|
||||||
expect(page.list.entries[1]).toBe(file2);
|
|
||||||
expect(page.list.entries[2]).toBe(file1);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO: move to data adapter
|
// TODO: move to data adapter
|
||||||
/*
|
/*
|
||||||
it('should sort by dates up to ms', () => {
|
it('should sort by dates up to ms', () => {
|
||||||
|
@ -16,8 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { it, describe, expect, beforeEach } from '@angular/core/testing';
|
import { it, describe, expect, beforeEach } from '@angular/core/testing';
|
||||||
import { DataColumn, DataRow } from 'ng2-alfresco-datatable';
|
import { DataColumn, DataRow, DataSorting } from 'ng2-alfresco-datatable';
|
||||||
|
|
||||||
import { DocumentListServiceMock } from './../assets/document-list.service.mock';
|
import { DocumentListServiceMock } from './../assets/document-list.service.mock';
|
||||||
import { ShareDataTableAdapter, ShareDataRow } from './share-datatable-adapter';
|
import { ShareDataTableAdapter, ShareDataRow } from './share-datatable-adapter';
|
||||||
import { FileNode, FolderNode, PageNode } from './../assets/document-library.model.mock';
|
import { FileNode, FolderNode, PageNode } from './../assets/document-library.model.mock';
|
||||||
@ -209,10 +208,49 @@ describe('ShareDataTableAdapter', () => {
|
|||||||
expect(console.error).toHaveBeenCalledWith(`Error parsing date ${value} to format ${col.format}`);
|
expect(console.error).toHaveBeenCalledWith(`Error parsing date ${value} to format ${col.format}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should generate fallback icon for a file thumbnail', () => {
|
it('should generate fallback icon for a file thumbnail with unknown mime type', () => {
|
||||||
let adapter = new ShareDataTableAdapter(null, basePath, null);
|
let adapter = new ShareDataTableAdapter(documentListService, basePath, null);
|
||||||
|
|
||||||
let row = new ShareDataRow(new FileNode());
|
let file = new FileNode('file', 'wrong-mime');
|
||||||
|
let row = new ShareDataRow(file);
|
||||||
|
let col = <DataColumn> { type: 'image', key: '$thumbnail' };
|
||||||
|
|
||||||
|
let value = adapter.getValue(row, col);
|
||||||
|
expect(value).toBe(`${basePath}/img/ft_ic_miscellaneous.svg`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should generate fallback icon for a file thumbnail with missing mime type', () => {
|
||||||
|
let adapter = new ShareDataTableAdapter(documentListService, basePath, null);
|
||||||
|
|
||||||
|
let file = new FileNode();
|
||||||
|
file.entry.content.mimeType = null;
|
||||||
|
|
||||||
|
let row = new ShareDataRow(file);
|
||||||
|
let col = <DataColumn> { type: 'image', key: '$thumbnail' };
|
||||||
|
|
||||||
|
let value = adapter.getValue(row, col);
|
||||||
|
expect(value).toBe(`${basePath}/img/ft_ic_miscellaneous.svg`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should generate fallback icon for a file with no content entry', () => {
|
||||||
|
let adapter = new ShareDataTableAdapter(documentListService, basePath, null);
|
||||||
|
|
||||||
|
let file = new FileNode();
|
||||||
|
file.entry.content = null;
|
||||||
|
|
||||||
|
let row = new ShareDataRow(file);
|
||||||
|
let col = <DataColumn> { type: 'image', key: '$thumbnail' };
|
||||||
|
|
||||||
|
let value = adapter.getValue(row, col);
|
||||||
|
expect(value).toBe(`${basePath}/img/ft_ic_miscellaneous.svg`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should generate fallback icon when document service fails to find one', () => {
|
||||||
|
spyOn(documentListService, 'getMimeTypeIcon').and.returnValue(null);
|
||||||
|
let adapter = new ShareDataTableAdapter(documentListService, basePath, null);
|
||||||
|
|
||||||
|
let file = new FileNode();
|
||||||
|
let row = new ShareDataRow(file);
|
||||||
let col = <DataColumn> { type: 'image', key: '$thumbnail' };
|
let col = <DataColumn> { type: 'image', key: '$thumbnail' };
|
||||||
|
|
||||||
let value = adapter.getValue(row, col);
|
let value = adapter.getValue(row, col);
|
||||||
@ -301,10 +339,73 @@ describe('ShareDataTableAdapter', () => {
|
|||||||
expect(console.error).toHaveBeenCalledWith(error);
|
expect(console.error).toHaveBeenCalledWith(error);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should generate file icon path based on mime type', () => {
|
||||||
|
let fileName = 'custom-icon.svg';
|
||||||
|
spyOn(documentListService, 'getMimeTypeIcon').and.returnValue(fileName);
|
||||||
|
|
||||||
|
let file = new FileNode('file1', 'text/plain');
|
||||||
|
let row = new ShareDataRow(file);
|
||||||
|
let col = <DataColumn> {type: 'image', key: '$thumbnail'};
|
||||||
|
|
||||||
|
let adapter = new ShareDataTableAdapter(documentListService, '/root', null);
|
||||||
|
let value = adapter.getValue(row, col);
|
||||||
|
|
||||||
|
expect(value).toBe(`/root/img/${fileName}`);
|
||||||
|
expect(documentListService.getMimeTypeIcon).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should put folders on top upon sort', () => {
|
||||||
|
let file1 = new FileNode('file1');
|
||||||
|
let file2 = new FileNode('file2');
|
||||||
|
let folder = new FolderNode();
|
||||||
|
|
||||||
|
let col = <DataColumn> { key: 'name' };
|
||||||
|
let adapter = new ShareDataTableAdapter(null, null, [col]);
|
||||||
|
adapter.setSorting(new DataSorting('name', 'asc'));
|
||||||
|
|
||||||
|
adapter.setRows([
|
||||||
|
new ShareDataRow(file2),
|
||||||
|
new ShareDataRow(file1),
|
||||||
|
new ShareDataRow(folder)
|
||||||
|
]);
|
||||||
|
|
||||||
|
let sorted = adapter.getRows();
|
||||||
|
expect((<ShareDataRow> sorted[0]).node).toBe(folder);
|
||||||
|
expect((<ShareDataRow> sorted[1]).node).toBe(file1);
|
||||||
|
expect((<ShareDataRow> sorted[2]).node).toBe(file2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should sort by dates up to ms', () => {
|
||||||
|
let file1 = new FileNode('file1');
|
||||||
|
file1.entry['dateProp'] = new Date(2016, 6, 30, 13, 14, 1);
|
||||||
|
|
||||||
|
let file2 = new FileNode('file2');
|
||||||
|
file2.entry['dateProp'] = new Date(2016, 6, 30, 13, 14, 2);
|
||||||
|
|
||||||
|
let col = <DataColumn> { key: 'dateProp' };
|
||||||
|
let adapter = new ShareDataTableAdapter(null, null, [col]);
|
||||||
|
|
||||||
|
adapter.setRows([
|
||||||
|
new ShareDataRow(file2),
|
||||||
|
new ShareDataRow(file1)
|
||||||
|
]);
|
||||||
|
|
||||||
|
adapter.sort('dateProp', 'asc');
|
||||||
|
|
||||||
|
let rows = adapter.getRows();
|
||||||
|
expect((<ShareDataRow> rows[0]).node).toBe(file1);
|
||||||
|
expect((<ShareDataRow> rows[1]).node).toBe(file2);
|
||||||
|
|
||||||
|
adapter.sort('dateProp', 'desc');
|
||||||
|
expect((<ShareDataRow> rows[0]).node).toBe(file2);
|
||||||
|
expect((<ShareDataRow> rows[1]).node).toBe(file1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should sort folders', () => {
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
describe('ShareDataRow', () => {
|
describe('ShareDataRow', () => {
|
||||||
|
|
||||||
it('should wrap node', () => {
|
it('should wrap node', () => {
|
||||||
|
@ -99,7 +99,7 @@ export class ShareDataTableAdapter implements DataTableAdapter {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node.entry.content && node.entry.content.mimeType) {
|
if (node.entry.content) {
|
||||||
let mimeType = node.entry.content.mimeType;
|
let mimeType = node.entry.content.mimeType;
|
||||||
if (mimeType) {
|
if (mimeType) {
|
||||||
let icon = this.documentListService.getMimeTypeIcon(mimeType);
|
let icon = this.documentListService.getMimeTypeIcon(mimeType);
|
||||||
@ -125,7 +125,7 @@ export class ShareDataTableAdapter implements DataTableAdapter {
|
|||||||
setSorting(sorting: DataSorting): void {
|
setSorting(sorting: DataSorting): void {
|
||||||
this.sorting = sorting;
|
this.sorting = sorting;
|
||||||
|
|
||||||
if (sorting && sorting.key) {
|
if (sorting && sorting.key && this.rows && this.rows.length > 0) {
|
||||||
this.rows.sort((a: ShareDataRow, b: ShareDataRow) => {
|
this.rows.sort((a: ShareDataRow, b: ShareDataRow) => {
|
||||||
if (a.node.entry.isFolder !== b.node.entry.isFolder) {
|
if (a.node.entry.isFolder !== b.node.entry.isFolder) {
|
||||||
return a.node.entry.isFolder ? -1 : 1;
|
return a.node.entry.isFolder ? -1 : 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user