Getting close, adds tests, fixese the key being set on the block, gets errors clearing, now need to make the UI behave.

This commit is contained in:
Shannon
2020-07-10 18:06:11 +10:00
parent 00c83182e7
commit bbbb7a052b
9 changed files with 222 additions and 246 deletions

View File

@@ -1,9 +1,11 @@
describe('serverValidationManager tests', function () {
var serverValidationManager;
var $rootScope, serverValidationManager, $timeout;
beforeEach(module('umbraco.services'));
beforeEach(inject(function ($injector) {
$rootScope = $injector.get('$rootScope');
$timeout = $injector.get('$timeout');
serverValidationManager = $injector.get('serverValidationManager');
serverValidationManager.clear();
}));
@@ -480,7 +482,9 @@
allErrors: allErrors
};
}, null);
//act
serverValidationManager.addFieldError("Name", "Required");
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
@@ -501,7 +505,9 @@
var cb2 = function () {
};
serverValidationManager.subscribe(null, null, "Name", cb1, null);
serverValidationManager.subscribe(null, null, "Title", cb2, null);
//act
serverValidationManager.addFieldError("Name", "Required");
@@ -537,6 +543,7 @@
};
}, null);
serverValidationManager.subscribe("myProperty", null, "", function (isValid, propertyErrors, allErrors) {
numCalled++;
args2 = {
@@ -545,6 +552,9 @@
allErrors: allErrors
};
}, null);
console.log("NOW ADDING ERRORS " + numCalled);
//act
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
@@ -587,6 +597,7 @@
allErrors: allErrors
};
}, null);
serverValidationManager.subscribe(null, "es-ES", null, function (isValid, propertyErrors, allErrors) {
numCalled++;
@@ -596,6 +607,7 @@
allErrors: allErrors
};
}, null);
//act
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
@@ -604,28 +616,30 @@
serverValidationManager.addPropertyError("myProperty", "fr-FR", "", "Some value 3", null);
//assert
expect(args1).not.toBeUndefined();
expect(args1.isValid).toBe(false);
expect(args2.isValid).toBe(true); // no errors registered for this callback
expect(args2).toBeUndefined();
expect(numCalled).toEqual(2);
expect(numCalled).toEqual(8); // both subscriptions will be called once per addPropertyError
});
it('can subscribe to a property validation path prefix', function () {
var numCalled = 0;
var callbackA = [];
var callbackB = [];
//arrange
serverValidationManager.subscribe("myProperty", null, null, function (isValid, propertyErrors, allErrors) {
numCalled++;
// since this is matching on prefix, there should be as many property errors as numCalled
expect(propertyErrors.length).toEqual(numCalled);
callbackA.push(propertyErrors);
}, null, true);
serverValidationManager.subscribe("myProperty/34E3A26C-103D-4A05-AB9D-7E14032309C3/addresses", null, null, function (isValid, propertyErrors, allErrors) {
callbackB.push(propertyErrors);
}, null, true);
//act
// will match:
// will match A:
serverValidationManager.addPropertyError("myProperty", null, null, "property error", null);
serverValidationManager.addPropertyError("myProperty", null, "value1", "value error", null);
// will match A + B
serverValidationManager.addPropertyError("myProperty/34E3A26C-103D-4A05-AB9D-7E14032309C3/addresses/FBEAEE8F-4BC9-43EE-8B81-FCA8978850F1/city", null, null, "property error", null);
serverValidationManager.addPropertyError("myProperty/34E3A26C-103D-4A05-AB9D-7E14032309C3/addresses/FBEAEE8F-4BC9-43EE-8B81-FCA8978850F1/city", null, "value1", "value error", null);
// won't match:
@@ -635,7 +649,25 @@
serverValidationManager.addPropertyError("otherProperty", null, "value1", "value error", null);
//assert
expect(numCalled).toEqual(4);
// both will be called each time addPropertyError is called
expect(callbackA.length).toEqual(8);
expect(callbackB.length).toEqual(8);
expect(callbackA[callbackA.length - 1].length).toEqual(4); // 4 errors for A
expect(callbackB[callbackB.length - 1].length).toEqual(2); // 2 errors for B
// clear the data and notify
callbackA = [];
callbackB = [];
serverValidationManager.notify();
$timeout.flush();
expect(callbackA.length).toEqual(1);
expect(callbackB.length).toEqual(1);
expect(callbackA[0].length).toEqual(4); // 4 errors for A
expect(callbackB[0].length).toEqual(2); // 2 errors for B
});
// TODO: Finish testing the rest!