/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Features/JsonPatch.SystemTextJson/test/IntegrationTests/SimpleObjectIntegrationTest.cs
174 строки
4 KB
Artak
Added System.Text.Json serialization-based JsonPatch implementation (#61313)
22 апр 2025, 01:53
Не верифицирован
22 апр 2025, 01:53
b9e9970
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Dynamic; using Microsoft.AspNetCore.JsonPatch.SystemTextJson.Exceptions; using Xunit; namespace Microsoft.AspNetCore.JsonPatch.SystemTextJson.IntegrationTests; public class SimpleObjectIntegrationTest { [Fact] public void TestDoubleValueProperty() { // Arrange var targetObject = new SimpleObject() { DoubleValue = 9.8 }; var patchDocument = new JsonPatchDocument(); patchDocument.Test("DoubleValue", 9.8); // Act & Assert patchDocument.ApplyTo(targetObject); } [Fact] public void CopyStringProperty_ToAnotherStringProperty() { // Arrange var targetObject = new SimpleObject() { StringProperty = "A", AnotherStringProperty = "B" }; var patchDocument = new JsonPatchDocument(); patchDocument.Copy("StringProperty", "AnotherStringProperty"); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal("A", targetObject.AnotherStringProperty); } [Fact] public void CopyNullStringProperty_ToAnotherStringProperty() { // Arrange var targetObject = new SimpleObject() { StringProperty = null, AnotherStringProperty = "B" }; var patchDocument = new JsonPatchDocument(); patchDocument.Copy("StringProperty", "AnotherStringProperty"); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Null(targetObject.AnotherStringProperty); } [Fact] public void MoveIntegerProperty_ToAnotherIntegerProperty() { // Arrange var targetObject = new SimpleObject() { IntegerValue = 2, AnotherIntegerValue = 3 }; var patchDocument = new JsonPatchDocument(); patchDocument.Move("IntegerValue", "AnotherIntegerValue"); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(2, targetObject.AnotherIntegerValue); Assert.Equal(0, targetObject.IntegerValue); } [Fact] public void RemoveDecimalPropertyValue() { // Arrange var targetObject = new SimpleObject() { DecimalValue = 9.8M }; var patchDocument = new JsonPatchDocument(); patchDocument.Remove("DecimalValue"); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(0, targetObject.DecimalValue); } [Fact] public void ReplaceGuid() { // Arrange var targetObject = new SimpleObject() { GuidValue = Guid.NewGuid() }; var newGuid = Guid.NewGuid(); var patchDocument = new JsonPatchDocument(); patchDocument.Replace("GuidValue", newGuid); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(newGuid, targetObject.GuidValue); } [Fact] public void AddReplacesGuid() { // Arrange var targetObject = new SimpleObject() { GuidValue = Guid.NewGuid() }; var newGuid = Guid.NewGuid(); var patchDocument = new JsonPatchDocument(); patchDocument.Add("GuidValue", newGuid); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(newGuid, targetObject.GuidValue); } // https://github.com/dotnet/aspnetcore/issues/3634 [Fact] public void Regression_AspNetCore3634() { // Assert var document = new JsonPatchDocument(); document.Move("/Object", "/Object/goodbye"); dynamic @object = new ExpandoObject(); @object.hello = "world"; var target = new Regression_AspNetCore3634_Object(); target.Object = @object; // Act var ex = Assert.Throws<JsonPatchException>(() => document.ApplyTo(target)); // Assert Assert.Equal("For operation 'move', the target location specified by path '/Object/goodbye' was not found.", ex.Message); } private class Regression_AspNetCore3634_Object { public dynamic Object { get; set; } } }