Merge remote-tracking branch 'origin/v8/dev' into v8/feature/block-editor-list
# Conflicts: # src/Umbraco.Web.UI.Client/package-lock.json
This commit is contained in:
@@ -121,13 +121,15 @@ describe('contentEditingHelper tests', function () {
|
||||
|
||||
//act
|
||||
//note the null, that's because culture is null
|
||||
formHelper.handleServerValidation({ "_Properties.bodyText.null.value": ["Required"] });
|
||||
formHelper.handleServerValidation({ "_Properties.bodyText.null.null.value": ["Required"] });
|
||||
|
||||
//assert
|
||||
expect(serverValidationManager.items.length).toBe(1);
|
||||
expect(serverValidationManager.items[0].fieldName).toBe("value");
|
||||
expect(serverValidationManager.items[0].errorMsg).toBe("Required");
|
||||
expect(serverValidationManager.items[0].propertyAlias).toBe("bodyText");
|
||||
expect(serverValidationManager.items[0].culture).toBe("invariant");
|
||||
expect(serverValidationManager.items[0].segment).toBeNull();
|
||||
});
|
||||
|
||||
it('adds a multiple property and field level server validation errors when they are invalid', function () {
|
||||
@@ -142,7 +144,7 @@ describe('contentEditingHelper tests', function () {
|
||||
"Name": ["Required"],
|
||||
"UpdateDate": ["Invalid date"],
|
||||
//note the null, that's because culture is null
|
||||
"_Properties.bodyText.null.value": ["Required field"],
|
||||
"_Properties.bodyText.en-US.mySegment.value": ["Required field"],
|
||||
"_Properties.textarea": ["Invalid format"]
|
||||
});
|
||||
|
||||
@@ -157,6 +159,8 @@ describe('contentEditingHelper tests', function () {
|
||||
expect(serverValidationManager.items[2].fieldName).toBe("value");
|
||||
expect(serverValidationManager.items[2].errorMsg).toBe("Required field");
|
||||
expect(serverValidationManager.items[2].propertyAlias).toBe("bodyText");
|
||||
expect(serverValidationManager.items[2].culture).toBe("en-US");
|
||||
expect(serverValidationManager.items[2].segment).toBe("mySegment");
|
||||
expect(serverValidationManager.items[3].fieldName).toBe("");
|
||||
expect(serverValidationManager.items[3].errorMsg).toBe("Invalid format");
|
||||
expect(serverValidationManager.items[3].propertyAlias).toBe("textarea");
|
||||
|
||||
@@ -61,12 +61,12 @@
|
||||
it('can retrieve property validation errors for a sub field', function () {
|
||||
|
||||
//arrange
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2");
|
||||
|
||||
//act
|
||||
var err1 = serverValidationManager.getPropertyError("myProperty", null, "value1");
|
||||
var err2 = serverValidationManager.getPropertyError("myProperty", null, "value2");
|
||||
var err1 = serverValidationManager.getPropertyError("myProperty", null, "value1", null);
|
||||
var err2 = serverValidationManager.getPropertyError("myProperty", null, "value2", null);
|
||||
|
||||
//assert
|
||||
expect(err1).not.toBeUndefined();
|
||||
@@ -85,14 +85,14 @@
|
||||
it('can retrieve property validation errors for a sub field for culture', function () {
|
||||
|
||||
//arrange
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", "fr-FR", "value2", "Another value 2");
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", "fr-FR", "value2", "Another value 2", null);
|
||||
|
||||
//act
|
||||
var err1 = serverValidationManager.getPropertyError("myProperty", "en-US", "value1");
|
||||
var err1NotFound = serverValidationManager.getPropertyError("myProperty", null, "value2");
|
||||
var err2 = serverValidationManager.getPropertyError("myProperty", "fr-FR", "value2");
|
||||
var err2NotFound = serverValidationManager.getPropertyError("myProperty", null, "value2");
|
||||
var err1 = serverValidationManager.getPropertyError("myProperty", "en-US", "value1", null);
|
||||
var err1NotFound = serverValidationManager.getPropertyError("myProperty", null, "value1", null);
|
||||
var err2 = serverValidationManager.getPropertyError("myProperty", "fr-FR", "value2", null);
|
||||
var err2NotFound = serverValidationManager.getPropertyError("myProperty", null, "value2", null);
|
||||
|
||||
|
||||
//assert
|
||||
@@ -111,12 +111,77 @@
|
||||
expect(err2.errorMsg).toEqual("Another value 2");
|
||||
expect(err2.culture).toEqual("fr-FR");
|
||||
});
|
||||
|
||||
it('can retrieve property validation errors for a sub field for segments', function () {
|
||||
|
||||
//arrange
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", "segment1");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2", "segment2");
|
||||
|
||||
//act
|
||||
var err1 = serverValidationManager.getPropertyError("myProperty", null, "value1", "segment1");
|
||||
var err1NotFound = serverValidationManager.getPropertyError("myProperty", null, "value1", null);
|
||||
var err2 = serverValidationManager.getPropertyError("myProperty", null, "value2", "segment2");
|
||||
var err2NotFound = serverValidationManager.getPropertyError("myProperty", null, "value2", null);
|
||||
|
||||
|
||||
//assert
|
||||
expect(err1NotFound).toBeUndefined();
|
||||
expect(err2NotFound).toBeUndefined();
|
||||
|
||||
expect(err1).not.toBeUndefined();
|
||||
expect(err1.propertyAlias).toEqual("myProperty");
|
||||
expect(err1.fieldName).toEqual("value1");
|
||||
expect(err1.errorMsg).toEqual("Some value 1");
|
||||
expect(err1.segment).toEqual("segment1");
|
||||
|
||||
expect(err2).not.toBeUndefined();
|
||||
expect(err2.propertyAlias).toEqual("myProperty");
|
||||
expect(err2.fieldName).toEqual("value2");
|
||||
expect(err2.errorMsg).toEqual("Another value 2");
|
||||
expect(err2.segment).toEqual("segment2");
|
||||
});
|
||||
|
||||
|
||||
it('can retrieve property validation errors for a sub field for culture with segments', function () {
|
||||
|
||||
//arrange
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value1", "Some value 1", "segment1");
|
||||
serverValidationManager.addPropertyError("myProperty", "fr-FR", "value2", "Another value 2", "segment2");
|
||||
|
||||
//act
|
||||
var err1 = serverValidationManager.getPropertyError("myProperty", "en-US", "value1", "segment1");
|
||||
expect(serverValidationManager.getPropertyError("myProperty", null, "value1", null)).toBeUndefined();
|
||||
expect(serverValidationManager.getPropertyError("myProperty", "en-US", "value1", null)).toBeUndefined();
|
||||
expect(serverValidationManager.getPropertyError("myProperty", null, "value1", "segment1")).toBeUndefined();
|
||||
var err2 = serverValidationManager.getPropertyError("myProperty", "fr-FR", "value2", "segment2");
|
||||
expect(serverValidationManager.getPropertyError("myProperty", null, "value2", null)).toBeUndefined();
|
||||
expect(serverValidationManager.getPropertyError("myProperty", "fr-FR", "value2", null)).toBeUndefined();
|
||||
expect(serverValidationManager.getPropertyError("myProperty", null, "value2", "segment2")).toBeUndefined();
|
||||
|
||||
|
||||
//assert
|
||||
|
||||
expect(err1).not.toBeUndefined();
|
||||
expect(err1.propertyAlias).toEqual("myProperty");
|
||||
expect(err1.fieldName).toEqual("value1");
|
||||
expect(err1.errorMsg).toEqual("Some value 1");
|
||||
expect(err1.culture).toEqual("en-US");
|
||||
expect(err1.segment).toEqual("segment1");
|
||||
|
||||
expect(err2).not.toBeUndefined();
|
||||
expect(err2.propertyAlias).toEqual("myProperty");
|
||||
expect(err2.fieldName).toEqual("value2");
|
||||
expect(err2.errorMsg).toEqual("Another value 2");
|
||||
expect(err2.culture).toEqual("fr-FR");
|
||||
expect(err2.segment).toEqual("segment2");
|
||||
});
|
||||
|
||||
it('can add a property errors with multiple sub fields and it the first will be retreived with only the property alias', function () {
|
||||
|
||||
//arrange
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2", null);
|
||||
|
||||
//act
|
||||
var err = serverValidationManager.getPropertyError("myProperty");
|
||||
@@ -132,10 +197,10 @@
|
||||
it('will return null for a non-existing property error', function () {
|
||||
|
||||
//arrage
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value", "Required");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value", "Required", null);
|
||||
|
||||
//act
|
||||
var err = serverValidationManager.getPropertyError("DoesntExist", null, "value");
|
||||
var err = serverValidationManager.getPropertyError("DoesntExist", null, "value", null);
|
||||
|
||||
//assert
|
||||
expect(err).toBeUndefined();
|
||||
@@ -145,15 +210,15 @@
|
||||
it('detects if a property error exists', function () {
|
||||
|
||||
//arrange
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2", null);
|
||||
|
||||
//act
|
||||
var err1 = serverValidationManager.hasPropertyError("myProperty");
|
||||
var err2 = serverValidationManager.hasPropertyError("myProperty", null, "value1");
|
||||
var err3 = serverValidationManager.hasPropertyError("myProperty", null, "value2");
|
||||
var err2 = serverValidationManager.hasPropertyError("myProperty", null, "value1", null);
|
||||
var err3 = serverValidationManager.hasPropertyError("myProperty", null, "value2", null);
|
||||
var err4 = serverValidationManager.hasPropertyError("notFound");
|
||||
var err5 = serverValidationManager.hasPropertyError("myProperty", null, "notFound");
|
||||
var err5 = serverValidationManager.hasPropertyError("myProperty", null, "notFound", null);
|
||||
|
||||
//assert
|
||||
expect(err1).toBe(true);
|
||||
@@ -167,15 +232,15 @@
|
||||
it('can remove a property error with a sub field specified', function () {
|
||||
|
||||
//arrage
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2", null);
|
||||
|
||||
//act
|
||||
serverValidationManager.removePropertyError("myProperty", null, "value1");
|
||||
serverValidationManager.removePropertyError("myProperty", null, "value1", null);
|
||||
|
||||
//assert
|
||||
expect(serverValidationManager.hasPropertyError("myProperty", null, "value1")).toBe(false);
|
||||
expect(serverValidationManager.hasPropertyError("myProperty", null, "value2")).toBe(true);
|
||||
expect(serverValidationManager.hasPropertyError("myProperty", null, "value1", null)).toBe(false);
|
||||
expect(serverValidationManager.hasPropertyError("myProperty", null, "value2", null)).toBe(true);
|
||||
|
||||
});
|
||||
|
||||
@@ -189,8 +254,8 @@
|
||||
serverValidationManager.removePropertyError("myProperty");
|
||||
|
||||
//assert
|
||||
expect(serverValidationManager.hasPropertyError("myProperty", null, "value1")).toBe(false);
|
||||
expect(serverValidationManager.hasPropertyError("myProperty", null, "value2")).toBe(false);
|
||||
expect(serverValidationManager.hasPropertyError("myProperty", null, "value1", null)).toBe(false);
|
||||
expect(serverValidationManager.hasPropertyError("myProperty", null, "value2", null)).toBe(false);
|
||||
|
||||
});
|
||||
|
||||
@@ -201,10 +266,10 @@
|
||||
it('can retrieve culture validation errors', function () {
|
||||
|
||||
//arrange
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value1", "Some value 2");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2");
|
||||
serverValidationManager.addPropertyError("myProperty", "fr-FR", "value2", "Another value 3");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value1", "Some value 2", null);
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2", null);
|
||||
serverValidationManager.addPropertyError("myProperty", "fr-FR", "value2", "Another value 3", null);
|
||||
|
||||
//assert
|
||||
expect(serverValidationManager.hasCultureError(null)).toBe(true);
|
||||
@@ -216,6 +281,39 @@
|
||||
|
||||
});
|
||||
|
||||
describe('managing variant validation errors', function () {
|
||||
|
||||
it('can retrieve variant validation errors', function () {
|
||||
|
||||
//arrange
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value1", "Some value 2", null);
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2", null);
|
||||
serverValidationManager.addPropertyError("myProperty", "fr-FR", "value2", "Another value 3", null);
|
||||
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", "MySegment");
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value1", "Some value 2", "MySegment");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Another value 2", "MySegment");
|
||||
serverValidationManager.addPropertyError("myProperty", "fr-FR", "value2", "Another value 3", "MySegment");
|
||||
|
||||
//assert
|
||||
expect(serverValidationManager.hasVariantError(null, null)).toBe(true);
|
||||
expect(serverValidationManager.hasVariantError("en-US", null)).toBe(true);
|
||||
expect(serverValidationManager.hasVariantError("fr-FR", null)).toBe(true);
|
||||
|
||||
expect(serverValidationManager.hasVariantError(null, "MySegment")).toBe(true);
|
||||
expect(serverValidationManager.hasVariantError("en-US", "MySegment")).toBe(true);
|
||||
expect(serverValidationManager.hasVariantError("fr-FR", "MySegment")).toBe(true);
|
||||
|
||||
expect(serverValidationManager.hasVariantError("es-ES", null)).toBe(false);
|
||||
expect(serverValidationManager.hasVariantError("es-ES", "MySegment")).toBe(false);
|
||||
expect(serverValidationManager.hasVariantError("fr-FR", "MySegmentNotRight")).toBe(false);
|
||||
expect(serverValidationManager.hasVariantError(null, "MySegmentNotRight")).toBe(false);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('validation error subscriptions', function() {
|
||||
|
||||
it('can subscribe to a field error', function() {
|
||||
@@ -228,11 +326,11 @@
|
||||
propertyErrors: propertyErrors,
|
||||
allErrors: allErrors
|
||||
};
|
||||
});
|
||||
}, null);
|
||||
|
||||
//act
|
||||
serverValidationManager.addFieldError("Name", "Required");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
|
||||
|
||||
//assert
|
||||
expect(args).not.toBeUndefined();
|
||||
@@ -249,8 +347,8 @@
|
||||
};
|
||||
var cb2 = function () {
|
||||
};
|
||||
serverValidationManager.subscribe(null, null, "Name", cb1);
|
||||
serverValidationManager.subscribe(null, null, "Title", cb2);
|
||||
serverValidationManager.subscribe(null, null, "Name", cb1, null);
|
||||
serverValidationManager.subscribe(null, null, "Title", cb2, null);
|
||||
|
||||
//act
|
||||
serverValidationManager.addFieldError("Name", "Required");
|
||||
@@ -284,7 +382,7 @@
|
||||
propertyErrors: propertyErrors,
|
||||
allErrors: allErrors
|
||||
};
|
||||
});
|
||||
}, null);
|
||||
|
||||
serverValidationManager.subscribe("myProperty", null, "", function (isValid, propertyErrors, allErrors) {
|
||||
numCalled++;
|
||||
@@ -293,12 +391,12 @@
|
||||
propertyErrors: propertyErrors,
|
||||
allErrors: allErrors
|
||||
};
|
||||
});
|
||||
}, null);
|
||||
|
||||
//act
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Some value 2");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "", "Some value 3");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value2", "Some value 2", null);
|
||||
serverValidationManager.addPropertyError("myProperty", null, "", "Some value 3", null);
|
||||
|
||||
//assert
|
||||
expect(args1).not.toBeUndefined();
|
||||
@@ -335,7 +433,7 @@
|
||||
propertyErrors: propertyErrors,
|
||||
allErrors: allErrors
|
||||
};
|
||||
});
|
||||
}, null);
|
||||
|
||||
serverValidationManager.subscribe(null, "es-ES", null, function (isValid, propertyErrors, allErrors) {
|
||||
numCalled++;
|
||||
@@ -344,13 +442,13 @@
|
||||
propertyErrors: propertyErrors,
|
||||
allErrors: allErrors
|
||||
};
|
||||
});
|
||||
}, null);
|
||||
|
||||
//act
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value1", "Some value 1");
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value2", "Some value 2");
|
||||
serverValidationManager.addPropertyError("myProperty", "fr-FR", "", "Some value 3");
|
||||
serverValidationManager.addPropertyError("myProperty", null, "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value1", "Some value 1", null);
|
||||
serverValidationManager.addPropertyError("myProperty", "en-US", "value2", "Some value 2", null);
|
||||
serverValidationManager.addPropertyError("myProperty", "fr-FR", "", "Some value 3", null);
|
||||
|
||||
//assert
|
||||
expect(args1).not.toBeUndefined();
|
||||
|
||||
63
src/Umbraco.Web.UI.Client/test/unit/utilities.spec.js
Normal file
63
src/Umbraco.Web.UI.Client/test/unit/utilities.spec.js
Normal file
@@ -0,0 +1,63 @@
|
||||
(function () {
|
||||
describe("Utilities", function () {
|
||||
describe("fromJson", function () {
|
||||
it("should deserialize json as object", function () {
|
||||
expect(Utilities.fromJson('{"a":1,"b":2}')).toEqual({ a: 1, b: 2 });
|
||||
});
|
||||
it("should return object as object", function () {
|
||||
expect(Utilities.fromJson({ a: 1, b: 2 })).toEqual({ a: 1, b: 2 });
|
||||
});
|
||||
}),
|
||||
describe("toJson", function () {
|
||||
it("should delegate to JSON.stringify", function () {
|
||||
var spy = spyOn(JSON, "stringify").and.callThrough();
|
||||
|
||||
expect(Utilities.toJson({})).toEqual("{}");
|
||||
expect(spy).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should format objects pretty", function () {
|
||||
expect(Utilities.toJson({ a: 1, b: 2 }, true)).toBe(
|
||||
'{\n "a": 1,\n "b": 2\n}'
|
||||
);
|
||||
expect(Utilities.toJson({ a: { b: 2 } }, true)).toBe(
|
||||
'{\n "a": {\n "b": 2\n }\n}'
|
||||
);
|
||||
expect(Utilities.toJson({ a: 1, b: 2 }, false)).toBe('{"a":1,"b":2}');
|
||||
expect(Utilities.toJson({ a: 1, b: 2 }, 0)).toBe('{"a":1,"b":2}');
|
||||
expect(Utilities.toJson({ a: 1, b: 2 }, 1)).toBe(
|
||||
'{\n "a": 1,\n "b": 2\n}'
|
||||
);
|
||||
expect(Utilities.toJson({ a: 1, b: 2 }, {})).toBe(
|
||||
'{\n "a": 1,\n "b": 2\n}'
|
||||
);
|
||||
});
|
||||
|
||||
it("should not serialize properties starting with $$", function () {
|
||||
expect(Utilities.toJson({ $$some: "value" }, false)).toEqual("{}");
|
||||
});
|
||||
|
||||
it("should serialize properties starting with $", function () {
|
||||
expect(Utilities.toJson({ $few: "v" }, false)).toEqual('{"$few":"v"}');
|
||||
});
|
||||
|
||||
it("should not serialize $window object", function () {
|
||||
expect(Utilities.toJson(window)).toEqual('"$WINDOW"');
|
||||
});
|
||||
|
||||
it("should not serialize $document object", function () {
|
||||
expect(Utilities.toJson(document)).toEqual('"$DOCUMENT"');
|
||||
});
|
||||
|
||||
it("should not serialize scope instances", inject(function (
|
||||
$rootScope
|
||||
) {
|
||||
expect(Utilities.toJson({ key: $rootScope })).toEqual('{"key":"$SCOPE"}');
|
||||
}));
|
||||
|
||||
it("should serialize undefined as undefined", function () {
|
||||
expect(Utilities.toJson(undefined)).toEqual(undefined);
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user