Improve comparison import validation

This commit is contained in:
Colin McLeod
2015-07-21 12:34:07 -07:00
parent f0bdcd5557
commit 348339520d
2 changed files with 16 additions and 1 deletions

View File

@@ -52,7 +52,15 @@ angular.module('app').controller('ImportController', ['lodash', '$rootScope', '$
throw 'builds must be an object!'; throw 'builds must be an object!';
} }
if (importData.comparisons) { if (importData.comparisons) {
// TODO: check ship/builds exist for comparison for (var compName in importData.comparisons) {
var comparison = importData.comparisons[compName];
for (var i = 0, l = comparison.builds.length; i < l; i++) {
var build = comparison.builds[i];
if (!importData.builds[build.shipId] || !importData.builds[build.shipId][build.buildName]) {
throw build.shipId + ' build "' + build.buildName + '" data is missing!';
}
}
}
$scope.comparisons = importData.comparisons; $scope.comparisons = importData.comparisons;
} }
if (importData.discounts instanceof Array && importData.discounts.length == 2) { if (importData.discounts instanceof Array && importData.discounts.length == 2) {

View File

@@ -85,6 +85,13 @@ describe('Import Controller', function() {
expect(scope.jsonValid).toBeFalsy(); expect(scope.jsonValid).toBeFalsy();
expect(scope.errorMsg).toEqual('Imperial Clipper build "" must be a string at least 3 characters long!'); expect(scope.errorMsg).toEqual('Imperial Clipper build "" must be a string at least 3 characters long!');
invalidImportData = angular.copy(importData);
invalidImportData.builds.asp = null; // Remove Asp Miner build used in comparison
scope.importJSON = angular.toJson(invalidImportData);
scope.validateJson();
expect(scope.jsonValid).toBeFalsy();
expect(scope.errorMsg).toEqual('asp build "Miner" data is missing!');
}); });
}); });