Fixes allowedFileType JS problem with unit test

This commit is contained in:
Shannon
2018-08-10 10:31:04 +10:00
parent 2f0f43e605
commit 3395e4c150
2 changed files with 105 additions and 62 deletions

View File

@@ -4,7 +4,7 @@
* @description A helper object used for dealing with media items
**/
function mediaHelper(umbRequestHelper) {
//container of fileresolvers
var _mediaFileResolvers = {};
@@ -45,7 +45,7 @@ function mediaHelper(umbRequestHelper) {
//this performs a simple check to see if we have a media file as value
//it doesnt catch everything, but better then nothing
if (angular.isString(item.value) && item.value.indexOf(mediaRoot) === 0) {
if (angular.isString(item.value) && item.value.indexOf(mediaRoot) === 0) {
return true;
}
@@ -75,7 +75,7 @@ function mediaHelper(umbRequestHelper) {
return "";
},
/**
* @ngdoc function
* @name umbraco.services.mediaHelper#getImagePropertyValue
@@ -125,7 +125,7 @@ function mediaHelper(umbRequestHelper) {
return "";
},
registerFileResolver: function(propertyEditorAlias, func){
registerFileResolver: function (propertyEditorAlias, func) {
_mediaFileResolvers[propertyEditorAlias] = func;
},
@@ -141,8 +141,8 @@ function mediaHelper(umbRequestHelper) {
* @param {object} mediaEntity A media Entity returned from the entityResource
* @param {boolean} thumbnail Whether to return the thumbnail url or normal url
*/
resolveFileFromEntity : function(mediaEntity, thumbnail) {
resolveFileFromEntity: function (mediaEntity, thumbnail) {
if (!angular.isObject(mediaEntity.metaData)) {
throw "Cannot resolve the file url from the mediaEntity, it does not contain the required metaData";
}
@@ -179,67 +179,67 @@ function mediaHelper(umbRequestHelper) {
* @param {boolean} thumbnail Whether to return the thumbnail url or normal url
*/
/*jshint loopfunc: true */
resolveFile : function(mediaItem, thumbnail){
function iterateProps(props){
resolveFile: function (mediaItem, thumbnail) {
function iterateProps(props) {
var res = null;
for(var resolver in _mediaFileResolvers) {
var property = _.find(props, function(prop){ return prop.editor === resolver; });
if(property){
for (var resolver in _mediaFileResolvers) {
var property = _.find(props, function (prop) { return prop.editor === resolver; });
if (property) {
res = _mediaFileResolvers[resolver](property, mediaItem, thumbnail);
break;
}
}
return res;
return res;
}
//we either have properties raw on the object, or spread out on tabs
var result = "";
if(mediaItem.properties){
if (mediaItem.properties) {
result = iterateProps(mediaItem.properties);
}else if(mediaItem.tabs){
for(var tab in mediaItem.tabs) {
if(mediaItem.tabs[tab].properties){
} else if (mediaItem.tabs) {
for (var tab in mediaItem.tabs) {
if (mediaItem.tabs[tab].properties) {
result = iterateProps(mediaItem.tabs[tab].properties);
if(result){
if (result) {
break;
}
}
}
}
return result;
return result;
},
/*jshint loopfunc: true */
hasFilePropertyType : function(mediaItem){
function iterateProps(props){
var res = false;
for(var resolver in _mediaFileResolvers) {
var property = _.find(props, function(prop){ return prop.editor === resolver; });
if(property){
res = true;
break;
}
}
return res;
}
hasFilePropertyType: function (mediaItem) {
function iterateProps(props) {
var res = false;
for (var resolver in _mediaFileResolvers) {
var property = _.find(props, function (prop) { return prop.editor === resolver; });
if (property) {
res = true;
break;
}
}
return res;
}
//we either have properties raw on the object, or spread out on tabs
var result = false;
if(mediaItem.properties){
result = iterateProps(mediaItem.properties);
}else if(mediaItem.tabs){
for(var tab in mediaItem.tabs) {
if(mediaItem.tabs[tab].properties){
result = iterateProps(mediaItem.tabs[tab].properties);
if(result){
break;
}
}
}
}
return result;
//we either have properties raw on the object, or spread out on tabs
var result = false;
if (mediaItem.properties) {
result = iterateProps(mediaItem.properties);
} else if (mediaItem.tabs) {
for (var tab in mediaItem.tabs) {
if (mediaItem.tabs[tab].properties) {
result = iterateProps(mediaItem.tabs[tab].properties);
if (result) {
break;
}
}
}
}
return result;
},
/**
@@ -308,7 +308,7 @@ function mediaHelper(umbRequestHelper) {
"imagesApiBaseUrl",
"GetBigThumbnail",
[{ originalImagePath: imagePath }]) + '&rnd=' + Math.random();
return thumbnailUrl;
},
@@ -328,7 +328,7 @@ function mediaHelper(umbRequestHelper) {
if (!imagePath) {
return false;
}
var lowered = imagePath.toLowerCase();
var ext = lowered.substr(lowered.lastIndexOf(".") + 1);
return ("," + Umbraco.Sys.ServerVariables.umbracoSettings.imageFileTypes + ",").indexOf("," + ext + ",") !== -1;
@@ -345,22 +345,26 @@ function mediaHelper(umbRequestHelper) {
*
* @param {string} file types, ex: jpg,png,tiff
*/
formatFileTypes: function(fileTypes) {
formatFileTypes: function (fileTypes) {
var fileTypesArray = fileTypes.split(',');
var newFileTypesArray = [];
var fileTypesArray = fileTypes.split(',');
var newFileTypesArray = [];
for (var i = 0; i < fileTypesArray.length; i++) {
var fileType = fileTypesArray[i];
for (var i = 0; i < fileTypesArray.length; i++) {
var fileType = fileTypesArray[i].trim();
if (fileType.indexOf(".") !== 0) {
fileType = ".".concat(fileType);
}
if (!fileType) {
continue;
}
newFileTypesArray.push(fileType);
}
if (fileType.indexOf(".") !== 0) {
fileType = ".".concat(fileType);
}
return newFileTypesArray.join(",");
newFileTypesArray.push(fileType);
}
return newFileTypesArray.join(",");
},
@@ -375,7 +379,7 @@ function mediaHelper(umbRequestHelper) {
*
* @param {string} filePath File path, ex /media/1234/my-image.jpg
*/
getFileExtension: function(filePath) {
getFileExtension: function (filePath) {
if (!filePath) {
return false;
@@ -385,6 +389,6 @@ function mediaHelper(umbRequestHelper) {
var ext = lowered.substr(lowered.lastIndexOf(".") + 1);
return ext;
}
};
}angular.module('umbraco.services').factory('mediaHelper', mediaHelper);
} angular.module('umbraco.services').factory('mediaHelper', mediaHelper);

View File

@@ -0,0 +1,39 @@
describe('mediaHelper service tests', function () {
var mediaHelper;
beforeEach(module('umbraco.services'));
beforeEach(inject(function ($injector) {
mediaHelper = $injector.get('mediaHelper');
}));
describe('formatFileTypes', function () {
it('will ignore any empty strings passed as arguments', function () {
var result = mediaHelper.formatFileTypes("");
expect(result.length).toBe(0);
result = mediaHelper.formatFileTypes(" ");
expect(result.length).toBe(0);
result = mediaHelper.formatFileTypes(" ");
expect(result.length).toBe(0);
result = mediaHelper.formatFileTypes(" , ");
expect(result.length).toBe(0);
result = mediaHelper.formatFileTypes(" , ,,");
expect(result.length).toBe(0);
});
it('includes prefixed dot when formatting', function () {
var result = mediaHelper.formatFileTypes(".jpg, .png, gif");
expect(result).toBe(".jpg,.png,.gif");
});
});
});