mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
Unit tests
This commit is contained in:
@@ -16,8 +16,7 @@
|
||||
*/
|
||||
|
||||
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 { ShareDataTableAdapter, ShareDataRow } from './share-datatable-adapter';
|
||||
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}`);
|
||||
});
|
||||
|
||||
it('should generate fallback icon for a file thumbnail', () => {
|
||||
let adapter = new ShareDataTableAdapter(null, basePath, null);
|
||||
it('should generate fallback icon for a file thumbnail with unknown mime type', () => {
|
||||
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 value = adapter.getValue(row, col);
|
||||
@@ -301,10 +339,73 @@ describe('ShareDataTableAdapter', () => {
|
||||
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', () => {
|
||||
|
||||
it('should wrap node', () => {
|
||||
|
@@ -99,7 +99,7 @@ export class ShareDataTableAdapter implements DataTableAdapter {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (node.entry.content && node.entry.content.mimeType) {
|
||||
if (node.entry.content) {
|
||||
let mimeType = node.entry.content.mimeType;
|
||||
if (mimeType) {
|
||||
let icon = this.documentListService.getMimeTypeIcon(mimeType);
|
||||
@@ -125,7 +125,7 @@ export class ShareDataTableAdapter implements DataTableAdapter {
|
||||
setSorting(sorting: DataSorting): void {
|
||||
this.sorting = sorting;
|
||||
|
||||
if (sorting && sorting.key) {
|
||||
if (sorting && sorting.key && this.rows && this.rows.length > 0) {
|
||||
this.rows.sort((a: ShareDataRow, b: ShareDataRow) => {
|
||||
if (a.node.entry.isFolder !== b.node.entry.isFolder) {
|
||||
return a.node.entry.isFolder ? -1 : 1;
|
||||
|
Reference in New Issue
Block a user