/// /// describe('RenuoUploadHtmlGenerator', function () { class RenuoUploadEventMock implements RenuoUploadEvent { constructor(public publicUrl:string, public extension:string, public cleanName:string) { } } // tslint:disable:no-inferrable-types function element(publicUrl:string, extension:string, cleanName:string = 'Some description') { // tslint:enable:no-inferrable-types const event = new RenuoUploadEventMock(publicUrl, extension, cleanName); return new RenuoUploadHtmlGenerator(event).generateElement(); } describe('generate image', function () { it('converts an image upload event to an image', function () { expect(element('//something.com/some.jpg', 'jpg')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.png', 'png')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.gif', 'gif')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.jpeg', 'jpeg')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.bmp', 'bmp')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.tiff', 'tiff')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.jp2', 'jp2')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.ico', 'ico')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.zip', 'zip')).not.toEqual(jasmine.any(HTMLImageElement)); }); it('sets the source attribute for an image', function () { expect((element('//some.com/some.jpg', 'jpg') as HTMLImageElement).src).toEqual('http://some.com/some.jpg'); }); it('ignores upper and lower cases in file extensions', function () { expect(element('//something.com/some.JPG', 'JPG')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.Jpg', 'Jpg')).toEqual(jasmine.any(HTMLImageElement)); expect(element('//something.com/some.JpG', 'JpG')).toEqual(jasmine.any(HTMLImageElement)); }); describe('thumborPath', () => { it('redirects renuo-upload links to thumbor', () => { const testElement:HTMLImageElement = element('//example.com/o/some.JPG', 'JPG') as HTMLImageElement; expect(testElement.src).toEqual('https://example.com/t/x/u/o/some.JPG'); }); it('does not redirect if is not renuo upload', () => { const testElement:HTMLImageElement = element('//example.com/some.JPG', 'JPG') as HTMLImageElement; expect(testElement.src).toEqual('http://example.com/some.JPG'); }); }); }); describe('generate other file', function () { it('converts everything but a file upload event to a link', function () { expect(element('//something.com/some.pdf', 'pdf')).toEqual(jasmine.any(HTMLAnchorElement)); expect(element('//something.com/some.png', 'xlsx')).toEqual(jasmine.any(HTMLAnchorElement)); expect(element('//something.com/some.gif', 'docx')).toEqual(jasmine.any(HTMLAnchorElement)); expect(element('//something.com/some.gif', 'zip')).toEqual(jasmine.any(HTMLAnchorElement)); }); it('sets the source attribute for a file', function () { expect((element('//some.com/some.pdf', 'pdf') as HTMLAnchorElement).href).toEqual('http://some.com/some.pdf'); }); it('sets an inner text for a file', function () { expect((element('//some.com/some.pdf', 'pdf') as HTMLAnchorElement).innerText).toEqual('Some description'); }); it('ignores upper and lower cases in file extensions', function () { expect(element('//something.com/some.PdF', 'PdF')).toEqual(jasmine.any(HTMLAnchorElement)); }); it('does not redirect to renuo-upload-proxy if is not an image', () => { const testElement:HTMLAnchorElement = element('//example.com/o/some.pdf', 'pdf') as HTMLAnchorElement; expect(testElement.href).toEqual('http://example.com/o/some.pdf'); }); }); });