Skip to content

Commit

Permalink
Merge 4d3d3e3 into 7413b20
Browse files Browse the repository at this point in the history
  • Loading branch information
dms1lva committed Mar 31, 2017
2 parents 7413b20 + 4d3d3e3 commit 0d51152
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 17 deletions.
4 changes: 3 additions & 1 deletion src/ui/Thumbnail/Thumbnail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { $$ } from '../../utils/Dom';
import { FieldTable } from '../FieldTable/FieldTable';
import { get } from '../Base/RegisteredNamedMethods';
import { IResultLinkOptions } from '../ResultLink/ResultLinkOptions';
import { Icon } from '../Icon/Icon';
import _ = require('underscore');

export interface IThumbnailOptions extends IResultLinkOptions {
Expand Down Expand Up @@ -103,7 +104,8 @@ export class Thumbnail extends Component {
if (QueryUtils.hasThumbnail(result)) {
this.buildThumbnailImage();
} else {
this.setEmptyThumbnailClass();
this.logger.info('Result has no thumbnail. Cannot build thumbnail image, instanciating an Icon component instead.');
new Icon(element, { small: true }, bindings, result);
}
}

Expand Down
44 changes: 28 additions & 16 deletions test/ui/ThumbnailTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,20 @@ import { IQueryResult } from '../../src/rest/QueryResult';
import { IThumbnailOptions } from '../../src/ui/Thumbnail/Thumbnail';
import { $$ } from '../../src/utils/Dom';
import { FieldTable } from '../../src/ui/FieldTable/FieldTable';
import { get } from '../../src/ui/Base/RegisteredNamedMethods';
import { get, result } from '../../src/ui/Base/RegisteredNamedMethods';
import { ResultLink } from '../../src/ui/ResultLink/ResultLink';
import { Component } from '../../src/ui/Base/Component';
import { MockEnvironmentBuilder } from '../MockEnvironment';
import { Defer } from '../../src/misc/Defer';
import { Icon } from '../../src/ui/Icon/Icon';
import { FakeResults } from '../Fake';

export function ThumbnailTest() {
describe('Thumbnail', function () {

var test: Mock.IBasicComponentSetup<Thumbnail>;
var endpoint: SearchEndpoint;
var getRawDataStreamPromise: Promise<ArrayBuffer>;
let test: Mock.IBasicComponentSetup<Thumbnail>;
let endpoint: SearchEndpoint;
let getRawDataStreamPromise: Promise<ArrayBuffer>;

beforeEach(() => {
endpoint = Mock.mockSearchEndpoint();
Expand Down Expand Up @@ -67,22 +71,30 @@ export function ThumbnailTest() {
});
});

it('should set a CSS class when no thumbnail is available', () => {
var result = <IQueryResult>{
flags: ''
};
test = Mock.optionsResultComponentSetup<Thumbnail, IThumbnailOptions>(Thumbnail, undefined, result);
expect($$(test.cmp.img).hasClass('coveo-no-thumbnail')).toBe(true);
it('should instanciate an icon when no thumnail is available', () => {
let result = FakeResults.createFakeResult('foobar');
result.raw.filetype = 'unknown';
result.flags = '';

let envBuilder = new MockEnvironmentBuilder().withResult(result);
new Thumbnail(test.env.element, {}, test.cmp.bindings, envBuilder.result);
expect(get($$(test.cmp.root).find('.CoveoIcon'), Icon) instanceof Icon).toBe(true);
});

describe('exposes options', () => {
it('noThumbnailClass should set the appropriate CSS class when no thumbnail is available', () => {
test = Mock.optionsResultComponentSetup<Thumbnail, IThumbnailOptions>(Thumbnail, <IThumbnailOptions>{
noThumbnailClass: 'coveo-heyo-there-is-no-class'
}, <IQueryResult>{ flags: '' });
it('noThumbnailClass should set the appropriate CSS class when no thumbnail is available', (done) => {
endpoint.getRawDataStream = () => new Promise<ArrayBuffer>((resolve, reject) => { reject(); });

test = Mock.advancedResultComponentSetup<Thumbnail>(Thumbnail, undefined, <Mock.AdvancedComponentSetupOptions>{
cmpOptions: <IThumbnailOptions>{ noThumbnailClass: 'coveo-heyo-there-is-no-class' },
modifyBuilder: (builder: Mock.MockEnvironmentBuilder) => builder.withEndpoint(endpoint)
});

expect($$(test.cmp.img).hasClass('coveo-heyo-there-is-no-class')).toBe(true);
expect($$(test.cmp.img).hasClass('coveo-no-thumbnail')).toBe(false);
Defer.defer(() => {
expect($$(test.cmp.img).hasClass('coveo-heyo-there-is-no-class')).toBe(true);
expect($$(test.cmp.img).hasClass('coveo-no-thumbnail')).toBe(false);
done();
});
});

it('should create a result link if the element is not an image', () => {
Expand Down

0 comments on commit 0d51152

Please sign in to comment.